fbpx
Skip to main content

Linux Avanzato 2008-2009

Di più
16 Anni 5 Mesi fa #97507 da Stefano Annunziato
PS: Qualcuno ha le registrazioni delle lezioni?

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
16 Anni 5 Mesi fa #97657 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Linux Avanzato 2008-2009
Sapete se si può sostenere lo scritto il 30 e la prova al calcolatore e/o l'orale a settembre?
Grazie :wink:

Si prega Accedi o Crea un account a partecipare alla conversazione.

Di più
16 Anni 5 Mesi fa #98044 da Alessandro Pellegrino
Ciao a tutti,
qualcuno mi sa dire il motivo per il quale il programmino sul tempo di caricamento di una pagina (dopo una PAGE FAULT) non funzionava? Il prof a lezione non ha saputo spiegarlo e l'aveva chiesto all'aula; avete per caso svelato l'arcano?

Inoltre vi chiedo un parere, io ho una macchina a 32 bit e ho dovuto apportare sul file read_tsc.h alcune correzioni:

- prima di tutto ho dovuto sostituire unsigned int t1_high, t1_low, t2_high, t2_low; con long long t1_high, t1_low, t2_high, t2_low; in quanto tsc
è un contatore a 64 bit.
- inoltre ho dovuto modificare il codice assembly:

inline void rdtsc1(void)
{
asm("pushq %rax\n\t"
"pushq %rdx\n\t"
"rdtsc\n\t"
"movl %eax,t1_low\n\t"
"movl %edx,t1_high\n\t"
"popq %rdx\n\t"
"popq %rax");
return;
}

in

inline void rdtsc1(void)
{
asm("pushl %eax\n\t"
"pushl %edx\n\t"
"rdtsc\n\t"
"movl %eax,t1_low\n\t"
"movl %edx,t1_high\n\t"
"popl %edx\n\t"
"popl %eax");
return;
}

- infine ho dovuto commentare le voci #include <linux/compiler.h> in ogni programmino in quanto il mio compilatore non le vedeva.

Vi risulta anche a voi una cosa del genere?

Grazie

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
16 Anni 5 Mesi fa #98054 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Linux Avanzato 2008-2009

Sapete se si può sostenere lo scritto il 30 e la prova al calcolatore e/o l'orale a settembre?

l'anno scorso non c'erano impedimenti di sorta, anche quest'anno si potrà senza problemi

Inoltre vi chiedo un parere, io ho una macchina a 32 bit e ho dovuto apportare sul file read_tsc.h alcune correzioni:

- prima di tutto ho dovuto sostituire unsigned int t1_high, t1_low, t2_high, t2_low; con long long t1_high, t1_low, t2_high, t2_low; in quanto tsc
è un contatore a 64 bit.
- inoltre ho dovuto modificare il codice assembly:

anche se tsc è un contatore a 64 bit, esso viene frammentato in due registri a 32 bit, non a caso poi hai scritto
"movl %eax,t1_low\n\t"
"movl %edx,t1_high\n\t" 
movl fa riferimento ad argomenti a 32 bit, come è il registro eax e come dovrebbe essere la variabile t1_low
quindi no, era giustissimo lasciare unsigned int
inoltre è tecnicamente non corretto usare long long, sarebbe stato comunque preferibile usare unsigned long long per identificare un variabile a 64 bit che andrà a contenere un valore senza segno ;)

hai comunque fatto bene a fare la modifica sulle push e sulle pop perchè l'architettura a 32 bit non ha i registri a 64 bit (e anche l'insieme di istruzioni popq e pushq)

riguardo

qualcuno mi sa dire il motivo per il quale il programmino sul tempo di caricamento di una pagina (dopo una PAGE FAULT) non funzionava? Il prof a lezione non ha saputo spiegarlo e l'aveva chiesto all'aula; avete per caso svelato l'arcano?

non so che dirti

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
16 Anni 5 Mesi fa #98056 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Linux Avanzato 2008-2009

Sapete se si può sostenere lo scritto il 30 e la prova al calcolatore e/o l'orale a settembre?

l'anno scorso non c'erano impedimenti di sorta, anche quest'anno si potrà senza problemi

Thanks

Si prega Accedi o Crea un account a partecipare alla conversazione.

Di più
16 Anni 5 Mesi fa #98065 da Alessandro Pellegrino

anche se tsc è un contatore a 64 bit, esso viene frammentato in due registri a 32 bit, non a caso poi hai scritto

"movl %eax,t1_low\n\t"
"movl %edx,t1_high\n\t" 
movl fa riferimento ad argomenti a 32 bit, come è il registro eax e come dovrebbe essere la variabile t1_low
quindi no, era giustissimo lasciare unsigned int
inoltre è tecnicamente non corretto usare long long, sarebbe stato comunque preferibile usare unsigned long long per identificare un variabile a 64 bit che andrà a contenere un valore senza segno ;)

Inoltre vi chiedo un parere, io ho una macchina a 32 bit e ho dovuto apportare sul file read_tsc.h alcune correzioni:

- prima di tutto ho dovuto sostituire unsigned int t1_high, t1_low, t2_high, t2_low; con long long t1_high, t1_low, t2_high, t2_low; in quanto tsc
è un contatore a 64 bit.


Ok allora ti faccio un altra domanda; lui subito dopo nella funzione timediff fa questa cosa:

/* move 32 least significant bits in 32 most significant ones */
t2_high = t2_high << 31;
t1_high = t1_high << 31;
tick_diff = (t2_high + t2_low) - (t1_high + t1_low);

Ovvero sposta i 32 bit meno significativi di t2_high e t1_high nei 32 bit più significativi, per poi eseguire la somma con la seconda parte di TSC, (aggiunge t2_low e t1_low). Se tutto questo venisse fatto su una variabile a 32 bit avremmo dei valori sballati, no? Non è quindi giusto dichiararle long long per avere una dimensione di 8 byte?

Oi grazie per l'interessamento ;)

Si prega Accedi o Crea un account a partecipare alla conversazione.