Sistemi
Operativi (II modulo)
Sistemi Operativi B
Laboratorio
di Sistemi Operativi
(a.a. 2011/2012)
Teacher:
Prof. Riccardo Focardi
Teaching Assistant: dott. Gian-Luca
Dei Rossi
Avvisi
NEW: il materiale didattico per il corso di laboratorio è disponibile sul sito del gruppo di sicurezza
Orario
Lunedì 14-15.45, laboratorio 5, lezione pratica in laboratorio. Chi non può frequentare ha la possibilità di svolgere le esercitazioni seguendo le dispense on-line.
Giovedì 10.30-12.15, aula 2 (teoria)
Esami e progetti di laboratorio
prova scritta (con orale facoltativo) – corrispondente a Sistemi Operativi B per il vecchio ordinamento;
3 verifiche durante il semestre (le date saranno disponibili a breve) – corrispondente a Laboratorio di Sistemi Operativi per il vecchio ordinamento; Basta che almeno due delle tre verifiche siano 'OK' per superare la parte di laboratorio (con eventuali incrementi sul voto in base ai risultati specifici conseguiti nelle prove). In caso contrario, la modalità d'esame sarà la seguente:
nessuna verifica 'OK': prova pratica in laboratorio
una sola verifica 'OK': prova orale integrativa
lo scritto e i progetti produrranno il voto complessivo per il modulo. Per chi non ha fatto il compitino sul primo modulo (o sistemi operativi A) lo scritto verterà su tutto il programma del corso.
Testi
Sistemi B – uno dei seguenti testi:
H. M. Deitel, P. J. Deitel, D. R. Choffnes, Sistemi Operativi, 3ª ed., Prentice Hall, Pearson Edication Italia, 2005
A Silberschatz, P.Galvin, G. Gagne, Sistemi Operativi (settima ed.), Addison Weseley, 2006
W. Stallings. Operating Systems: Internals and Design Principles, 5th ed., Prentice Hall, 2005 (in inglese)
Laboratorio:
Richard Stevens, Stephen A. Rago, Advanced Programming in the UNIX Environment (second edition), Addison Weseley, 2005.
Programma (parte teorica)
Comunicazione tra processi: Processi cooperanti e processi in competizione. Modello a memoria condivisa. Esempio: il problema Produttore-Consumatore. Modello a scambio di messaggi: nominazione diretta e indiretta; comunicazione sincrona e asincrona. Produttore-Consumatore con scambio di messaggi.
Sezione critica: Concorrenza e incoerenza dei dati. La sezione critica: mutua esclusione. Soluzioni software: esempi di soluzioni non funzionanti, proprieta' di progresso e attesa limitata. Soluzione per 2 processi: algoritmo di Peterson. Soluzione per n processi: algoritmo del fornaio (cenni). Soluzioni hardware: disabilitazione interruzioni, istruzioni atomiche: test-and-set, swap.
Semafori: definizione e realizzazione nel Sistema Operativo; sezione critica a sincronizzazione tramite semafori; semafori binari, realizzazione di semafori contatori tramite semafori binari; Casi di studio: produttore e consumatore, soluzione per n produttori e m consumatori; Lettori e scrittori: soluzione con priorita' ai lettori; Filosofi a cena: soluzione con deadlock e possibili rimedi;
Monitor: Motivazioni e definizione; Esempio: Produttore/Consumatore tramite monitor; funzionamento del monitor; monitor con notify, vantaggi e svantaggi, notifyall; Esempio: Filosofi a cena con notify e notifyall; relazioni tra semafori e monitor; monitor in Java.
Stallo: Definizione; condizioni necessarie per lo stallo; grafo di assegnazione delle risorse: significato dei cicli; prevenzione dello stallo: negazione di una delle condizioni necessarie; evitare le situazioni di stallo: concetto di stato sicuro, algoritmo con grafo di assegnazione delle risorse, algoritmo del banchiere, esempi; rilevamento dello stallo: istanza singola e piu' istanze di una risoirsa; ripristino da situazioni di stallo.
Programma (Laboratorio)
disponibile sul sito del gruppo di sicurezza
Link utili
Windows Services for UNIX (estensione POSIX nei sistemi Windows, come descritto qui)
Semafori
Generali tramite Semafori Binari
NOTA:
questo articolo può essere scaricato solo dalla rete di
dipartimento
Tutorial sui Pthread del Lawrence Livermore National Laboratory
Tutorial sui Thread in Java di Sun Microsystems
Descrizione completa della classe Thread di Sun Microsystems