Difference between revisions of "Prova teorica 2017.01.18"
Jump to navigation
Jump to search
(Creata pagina e aggiunte risposte a domande 3,4,5 esercizio g.2) |
(→Esercizio g.2: aggiunta risposta domanda 1) |
||
Line 3: | Line 3: | ||
==Esercizio g.2== | ==Esercizio g.2== | ||
− | # '''Perché un algoritmo di rimpiazzamento a stack non soffre dell’anomalia di Belady?''' | + | # '''Perché un algoritmo di rimpiazzamento a stack non soffre dell’anomalia di Belady?''' <br> L'anomalia di Belady consiste nel aumento del page fault al aumentare dei frame in memoria. Se un algoritmo è a stack vuol dire che fissato una stringa di riferimento, in qualsiasi instante t l'insieme delle pagine con n frame è un sottoinsieme del insieme della pagine con n+1 frame. Quindi i page fault non possono aumentare perchè comunque è presente il set di pagine che era presente anche con n frame più un addizionale pagina. |
# '''Perché si può usare un meccanismo di crittografia simmetrica nella gestione delle capability di accesso alle risorse?''' | # '''Perché si può usare un meccanismo di crittografia simmetrica nella gestione delle capability di accesso alle risorse?''' | ||
# '''Quali operazioni svolge il processore per la gestione di un interrupt e quali invece sono a carico del kernel del sistema operativo?''' <br> Il processore si occupa, all'attivazione della linea elettronica dell interrupt di recuperare dalla memoria in locazioni fisse l'indirizzo delle istruzioni di gestione degli interrupt. In seguito carica questo indirizzo nel program counter e quindi "salta" a queste istruzioni attivando la modalità di esecuzione kernel mode. <br> Le routine di gestione degli interrupt fanno parte del codice kernel e si occupano di gestire opportunamente le operazioni necessarie in base al tipo di interrupt. Per esempio operazioni come eseguire lo scheduler o recuperare l'output di un device. | # '''Quali operazioni svolge il processore per la gestione di un interrupt e quali invece sono a carico del kernel del sistema operativo?''' <br> Il processore si occupa, all'attivazione della linea elettronica dell interrupt di recuperare dalla memoria in locazioni fisse l'indirizzo delle istruzioni di gestione degli interrupt. In seguito carica questo indirizzo nel program counter e quindi "salta" a queste istruzioni attivando la modalità di esecuzione kernel mode. <br> Le routine di gestione degli interrupt fanno parte del codice kernel e si occupano di gestire opportunamente le operazioni necessarie in base al tipo di interrupt. Per esempio operazioni come eseguire lo scheduler o recuperare l'output di un device. | ||
# '''Perche’ il mascheramento degli interrupt non si può utilizzare per creare sezioni critiche in sistemi multicore o multiprocessore?''' <br> Il mascheramento degli interrupt previene l'interruzione del esecuzione del processo corrente e il context switch a un altro processo e di conseguenza la non atomicità delle istruzioni che stava eseguendo il processo. <br> Anche disabilitando gli interrupt (è uguale se su un solo processore o su tutti) c'è comunque la possibilità che altro codice eseguito in ''parallelismo reale'' vada in concorrenza con quello dove si sta cercando di ottenere una sezione critica. | # '''Perche’ il mascheramento degli interrupt non si può utilizzare per creare sezioni critiche in sistemi multicore o multiprocessore?''' <br> Il mascheramento degli interrupt previene l'interruzione del esecuzione del processo corrente e il context switch a un altro processo e di conseguenza la non atomicità delle istruzioni che stava eseguendo il processo. <br> Anche disabilitando gli interrupt (è uguale se su un solo processore o su tutti) c'è comunque la possibilità che altro codice eseguito in ''parallelismo reale'' vada in concorrenza con quello dove si sta cercando di ottenere una sezione critica. | ||
# '''Per quali tipi di processo l’algoritmo di schedulazione round-robin è efficiente e per quali no?''' <br> L'algoritmo di schedulazione round-robin è efficente per i processi I/O bound in quanto è ''fair'', cioè permette a tutti i processi il diritto di esecuzione entro un certo lasso di tempo. Può non essere efficiente per i processi CPU bound che hanno tempi di esecuzione lunghi e il round robin li costringe a ritardare il loro completamento. Inoltre un processo CPU bound potrebbe essere interrotto quando manca davvero poco al suo termine ma il time slice è terminato oppure necessita di I/O.Il processo viene messo in coda e bisognerà aspettare l'esecuzione di tutti gli altri processi prima di poter finire l'esecuzione.Uno scheduler shortest remaining time first avrebbe invece rimesso subito in esecuzione il processo CPU bound se il tempo di esecuzione previsto rimanente era davvero ridotto. | # '''Per quali tipi di processo l’algoritmo di schedulazione round-robin è efficiente e per quali no?''' <br> L'algoritmo di schedulazione round-robin è efficente per i processi I/O bound in quanto è ''fair'', cioè permette a tutti i processi il diritto di esecuzione entro un certo lasso di tempo. Può non essere efficiente per i processi CPU bound che hanno tempi di esecuzione lunghi e il round robin li costringe a ritardare il loro completamento. Inoltre un processo CPU bound potrebbe essere interrotto quando manca davvero poco al suo termine ma il time slice è terminato oppure necessita di I/O.Il processo viene messo in coda e bisognerà aspettare l'esecuzione di tutti gli altri processi prima di poter finire l'esecuzione.Uno scheduler shortest remaining time first avrebbe invece rimesso subito in esecuzione il processo CPU bound se il tempo di esecuzione previsto rimanente era davvero ridotto. |
Revision as of 21:22, 15 June 2017
Esercizio g.2
- Perché un algoritmo di rimpiazzamento a stack non soffre dell’anomalia di Belady?
L'anomalia di Belady consiste nel aumento del page fault al aumentare dei frame in memoria. Se un algoritmo è a stack vuol dire che fissato una stringa di riferimento, in qualsiasi instante t l'insieme delle pagine con n frame è un sottoinsieme del insieme della pagine con n+1 frame. Quindi i page fault non possono aumentare perchè comunque è presente il set di pagine che era presente anche con n frame più un addizionale pagina. - Perché si può usare un meccanismo di crittografia simmetrica nella gestione delle capability di accesso alle risorse?
- Quali operazioni svolge il processore per la gestione di un interrupt e quali invece sono a carico del kernel del sistema operativo?
Il processore si occupa, all'attivazione della linea elettronica dell interrupt di recuperare dalla memoria in locazioni fisse l'indirizzo delle istruzioni di gestione degli interrupt. In seguito carica questo indirizzo nel program counter e quindi "salta" a queste istruzioni attivando la modalità di esecuzione kernel mode.
Le routine di gestione degli interrupt fanno parte del codice kernel e si occupano di gestire opportunamente le operazioni necessarie in base al tipo di interrupt. Per esempio operazioni come eseguire lo scheduler o recuperare l'output di un device. - Perche’ il mascheramento degli interrupt non si può utilizzare per creare sezioni critiche in sistemi multicore o multiprocessore?
Il mascheramento degli interrupt previene l'interruzione del esecuzione del processo corrente e il context switch a un altro processo e di conseguenza la non atomicità delle istruzioni che stava eseguendo il processo.
Anche disabilitando gli interrupt (è uguale se su un solo processore o su tutti) c'è comunque la possibilità che altro codice eseguito in parallelismo reale vada in concorrenza con quello dove si sta cercando di ottenere una sezione critica. - Per quali tipi di processo l’algoritmo di schedulazione round-robin è efficiente e per quali no?
L'algoritmo di schedulazione round-robin è efficente per i processi I/O bound in quanto è fair, cioè permette a tutti i processi il diritto di esecuzione entro un certo lasso di tempo. Può non essere efficiente per i processi CPU bound che hanno tempi di esecuzione lunghi e il round robin li costringe a ritardare il loro completamento. Inoltre un processo CPU bound potrebbe essere interrotto quando manca davvero poco al suo termine ma il time slice è terminato oppure necessita di I/O.Il processo viene messo in coda e bisognerà aspettare l'esecuzione di tutti gli altri processi prima di poter finire l'esecuzione.Uno scheduler shortest remaining time first avrebbe invece rimesso subito in esecuzione il processo CPU bound se il tempo di esecuzione previsto rimanente era davvero ridotto.