Prova teorica 2017.01.18

From Sistemi Operativi
Jump to navigation Jump to search

link al compito

Esercizio g.2

  1. 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.
  2. Perché si può usare un meccanismo di crittografia simmetrica nella gestione delle capability di accesso alle risorse?
    Possiamo usare la crittografia simmetrica per la gestione delle capability se queste sono salvate nella parte di memoria utente del processo. Non dovendo trasmettere la chiave attraverso la rete possiamo utilizzare crittografia simmetrica.
  3. 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.
  4. 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.
  5. 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.