Cognome: Nome: Matricola: Sistemi Operativi Docente: Paolo D’Arco Appello del 16/09/2008 Non è ammesso alcun materiale per consultazione. Buon lavoro! ☺ 1 2 3 4 5 1) (20 punti) Sincronizzazione tra processi Si definisca il problema della sezione critica, la struttura generale di un protocollo per la sezione critica e le proprietà che un tale protocollo deve soddisfare. Si analizzi il seguente protocollo per la sezione critica per due processi (variante del protocollo di Peterson). Presenta problemi? Pi e Pj condividono due variabili booleane flag[i] e flag[j] inizializzate a FALSE e una variabile intera turn. Codice per Pi do{ flag[i]=TRUE; turn = i; while (flag[j] == TRUE && turn == j) no-op; sezione critica flag[i] = FALSE; sezione non critica } while(TRUE); 2) (20 punti) Scheduling della CPU I parametri solitamente utilizzati per valutare le performance degli algoritmi di schedulazione sono utilizzo della cpu, throughput, turnaround time, waiting time e response time. 1. Cosa rappresentano? 2. Quali parametri si cerca di massimizzare e quali di minimizzare? 3. Perché alcuni ricercatori sostengono che invece di minimizzare il valore medio del tempo di risposta occorrerebbe minimizzare la varianza del tempo di risposta? 4. L’algoritmo SJF è ottimo nel senso che dà il minimo tempo medio d’attesa. Perché? 5. Come si stimano le durate dei prossimi CPU-burst per implementare l’algoritmo SJF e qual è il significato del parametro α nella formula di approssimazione? 3) (20 punti) Memoria Paginata. Utilizzando l’immagine che segue si descrivano il funzionamento di una memoria paginata e le caratteristiche delle componenti architetturali coinvolte. Inoltre, si spieghi cosa si intende per tempo di accesso effettivo alla memoria (EAT – effective memory-access time) 4) (20 punti) Deadlock Si spieghi cosa si intende per stato sicuro e sequenza sicura e che relazione esiste tra questi concetti ed il problema del deadlock. Si consideri lo stato di allocazione delle risorse del sistema che segue. Il sistema dispone di 12 unità. 1. E’ il sistema in uno stato sicuro? 2. Nell’ipotesi in cui P2 richiedesse un’ulteriore risorsa e gli venisse assegnata, il sistema risulterebbe in uno stato sicuro? P0 P1 P2 Richieste massime Unità possedute 10 4 9 5 2 2 5) (20 punti) Thread 1. Cos’è un thread e perché può essere conveniente avere applicazioni multithread? Si fornisca qualche esempio. 2. Una struttura di dati che rappresenta un blocco di controllo del thread cosa dovrebbe contenere? 3. Una libreria che offre thread al programmatore può essere implementata attraverso i modelli Ma-1, M-a-M, 1-a-1, e a due livelli (ibrido). Si pongano brevemente in evidenza i vantaggi e gli svantaggi dei differenti approcci. Programmazione di sistema 1. Cos’è un’ API e perché solitamente i programmatori preferiscono usare funzioni offerte dalle API piuttosto che direttamente chiamate di sistema offerte dal sistema operativo? Si illustri schematicamente (e possibilmente con un esempio) la relazione che esiste tra funzioni dell’API e system call.