Corso di Sistemi Operativi per Informatica

AA. 2016-17


Testo consigliato: Silbershatz Sistemi Operativi (concetti ed esempi). Ottava Edizione. Pearson.


Regole:

Il voto della prova intermedia (se maggiore o uguale a 18) potra' essere usato per sostituire la prima meta' dello scritto negli appelli di Giugno, Luglio e Settembre 2017.
In quel caso, il voto complessivo con cui si verra' ammessi all'orale sara' la media aritmetica dei voti della prova intermedia e della seconda meta' dello scritto (solo se entrambi maggiori o uguali a 18).
Chi invece preferisce svolgere l'intero scritto di un appello, potrà accedere all'orale con voto maggiore o uguale a 15.

La frequenza alle lezioni e' libera, ma in particolare la frequenza alle lezioni di laboratorio e' fortemente consigliata.

Il ricevimento e' generalmente dopo la lezione, oppure in altri momenti previo appuntamento per email.

Altri links:

Dispense online di Eugenio Omodeo (Sincronizzazione)

Esempio di prova intermedia


TEORIA

Lezione 1, 170301:


Introduzione ai sistemi operativi. Richiami di architetture e compiti del sistema operativo. Modo utente e supervisore. Interruzioni. Evoluzione sistemi operativi: sistemi batch.

Lezione 2, 170303:


Evoluzione sistemi operativi: sistemi multiprogrammati, time-sharing.

Lezione 3, 170308:


Sistemi paralleli, reti di calcolatori, real-time, embedded. Gestione processi, memoria centrale, files. Gestione i/o, protezione.

Lezione 4, 170309:


Interprete comandi. Gestione processi, memoria centrale, files e i/o: problematiche e servizi del s.o (sys calls). Storia Unix.

Lezione 5, 170310:


Sistemi monolitici, a livelli, modulari. Macchine virtuali. Esempio JVM. Gestione processi, process control block.

Lezione 6, 160315:


Stato dei processi. Transizione degli stati dei processi. Scheduling a breve, medio e lungo termine. Creazione processi, fork e struttura ad albero in linux.

Lezione 7, 170317:


Terminazione. Thread: confronto con processi e vantaggi. Modelli multithread (molti a uno, uno a uno). Burst di cpu e di i/o. Analisi distribuzioni dei burst.

Lezione 8, 170322:


Criteri di scheduling. Indici: utilizzo cpu, throughput, turnaround, waiting time, response time. Algoritmi di scheduling: FIFO/FCFS (esempi, effetto convoglio), SJF.

Lezione 9, 170324:


SJF: media esponenziale, prova sketch ottimalita'. Algoritmi di scheduling: priorita', starvation e aging. Round robin: coda circolare, context switch. Coda a piu' livelli accenni.

Lezione 10, 170329:


Code multiple, con retroazione e scheduling real time. Esempio scheduling Linux O(1) kernel 2.6. Comunicazione tra processi, memoria condivisa.

Lezione 11, 170331:


Esempio produttore consumatore (con n-1 celle). Meccanismi IPC (introduzione). Comunicazione: messaggi e mailbox. Modello diretto, indiretto. Send e receive bloccanti e non bloccanti. Buffer mailbox illimitato, limitato e 0 capacita'. Sincronizzazione: produttore e consumatore con race condition. Definizione di race condition.

Lezione 12, 170405:


Definizione di sezione critica: mutua esclusione, progresso, attesa limitata. Realizzazione sezione critica: disabilitazione interruzioni. Alternanza stretta. Variabili di lock. Algoritmo di Peterson per 2 processi.

Lezione 13, 170407:


Algoritmo del panettiere (Baker). Analisi del codice con proprieta' mutua esclusione, attesa limitata e progresso. Test and set lock (esempio assembly). Mutua esclusione con TSL.

Lezione 14, 170412:


Esempio di sleep e wakeup. Problema della sveglia. Semafori, definizione ed utilizzo per implementare mutex e produttore-consumatore. Monitor, produttore e consumatore con monitor.

Lezione 15, 170427:


Prova intermedia

Lezione 16, 170428:


Esempio deadlock con 2 risorse. Problema dei 5 filosofi. Soluzione con semafori e deadlock. Soluzione senza deadlock ma con starvation (filosofo timido), senza stallo ne' starvation (filosofo mancino). Filosofo con stato. Barbiere sonnolento.

Lezione 17, 170503:


Problema lettori e scrittori con precedenza a lettori. Il Deadlock: 4 condizioni necessarie (mutua esclusione, hold+wait, no preemption, attesa circolare). Grafo allocazione risorse Holt. Esempio di evoluzione concorrente con due processi e deadlock.

Lezione 18, 170510:


Gestione deadlock: prevenzione, rilevazione, eliminazione. Stato sicuro. Analisi dei cicli nel grafo di Holt. Algoritmo del banchiere. Gestione Memoria: indirizzi, Collegamento indirizzi e compilatori (gestione indirizzi nelle varie fasi di compilazione).

Lezione 19, 170512:


Spazio di indirizzamento, caricamento e rilocazione degli indirizzi. Swap. Schemi di gestione della memoria: Partizione singola (base e limite). Partizione multipla (fissa e variabile). Gestione memoria: gestione buchi, ricerca first best and worst fit. Frammentazione interna e esterna. Compattazione. Esempio con partizionamento variabile e round robin. Paginazione.

LABORATORIO

Lezione 1, 170503


Introduzione: presentazione.txt

Come generare (in parte) la documentazione: latex.txt

Esempio di file latex: doc.tex

Per compilare con make: makefile

Lucidi: Shell lezione 1

Lezione 2, 170504

Lucidi: Shell lezione 2

Lezione 3, 170511

Lucidi: Shell lezione 3

Lezione 4, 170517

Lucidi: Shell lezione 4

Lezione 5, 170518

Lucidi: System programming lezione 5

Esempio di fork e wait: esempiofork.c

File di configurazione per doxygen: Doxyfile

Esempio shell di R.Alfieri: mysh-0.1

Requisiti per poter sostenere l'esame di Laboratorio.