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.

Risultati Appello di Ottobre

I voti sono gia' eventualmente mediati con la prova intermedia
Gli orali si svolgeranno venerdi' 13 (alle 11.30, mio studio)
In caso di problemi contattatemi via mail.

ISPAS 24
MARCELLINO 20
RANIERI 15
RIVERA 19
SOLLAZZO 30

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.

Lezione 20, 170519:


Conversione indirizzo logico in fisico. Esempio di paginazione. Frammentazione con paginazione. Implementazione tabella pagine: registri dedicati, puntatori in memoria centrale, memorie associative. Costo medio accesso a memoria. Protezione e condivisione

Lezione 21, 170524:


. Segmentazione. Implementazione con registri base+limite. Protezione e condivisione. Segmentazione paginata. Memoria virtuale, paginazione su richiesta. Page fault, swap in e swap out. Problema del riavvio dell'istruzione.

Lezione 22, 170526:


Copia durante la scrittura. Multiprogrammazione e sovraallocazione: algoritmi di sostituzione pagine e allocazione frames. Dirty bit. Stringa di riferimento. Algoritmo di sostituzione fifo. Anomalia di Belady. Esempio con algoritmo fifo. Sostituzione ottimale e lru (contatori e stack). Approssimazione LRU con 1 o piu' bit di riferimento. Sostituzione con algoritmo seconda possibilita' (o chance, orologio).

Lezione 23, 170531:


Allocazione frames: omogenea, proporzionale. Thrashing. Principio localita'. Evitare thrashing con working set o frequenza page fault. Esempio di gestore memoria virtuale in WIN XP.

Lezione 24, 160607 (3 ore):


Gestione periferiche di I/O. Interfacce I/O e syscall. Servizi kernel: scheduling, buffering, caching, spooling, errori. Struttura delle memorie di massa. Tempo di accesso e banda. Spare sectors e tracks. Schedulazione disco (testina): fcfs, sstf, scan, c-scan, look, c-look. Raid: mirroring e striping. Accenni a parita' e crc. Livelli 0, 1. Configurazione disco, blocco di avvio, partizioni.

Lezione 25, 160608:


File System: caratterizzazione. Struttura directory: singolo livello. Struttura directory: 2 livelli, ad albero, a grafo aciclico, grafo generale. Montaggio file system. File system remoti. Protezione: acl e stile unix. Implementazione file system a livelli. Organizzazione su disco e in memoria. Syscall e operazioni di apertura di un file. Virtual file system. Realizzazione directory. Metodi di allocazione contigua.

Lezione 26, 160609:


Allocazione collegata (linked): cluster e FAT. Allocazione indicizzata, multilivello e schema combinato (unix file system). Gestione spazio libero: bitmap, lista collegata, raggruppamento RLE. Esercizi di ripasso.

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

Lezione 6, 170525

Lucidi: Pipe e IPC lezione 6

Esempio di pipe: pipe.c

Esempio di memoria condivisa: shmem.c

Esempio di semaforo: sem.c

Lezione 7, 170601

Lucidi: Threads Lezione 7

Esempio di creazione pthreads: exCreazioneThread.c

Esempio di mutex e threads: mutex.c

Esempio di semaforo e threads: semthread.c

Requisiti per poter sostenere l'esame di Laboratorio.