Corso di Sistemi Operativi per Informatica

AA. 2014-15


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

Risultati appello 22/2/16

NB: gli orali (dal 15 in su) si terranno in aula E giovedi' 25 oppure venerdi' 26 ore 10:00-13:00. Per esigenze particolari, contattatemi via mail.

249031 21
248472 22
248191 16
242257 26

Altri links:

Dispense online di Eugenio Omodeo (Sincronizzazione)


TEORIA

Lezione 1, 150304:


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

Lezione 2, 150306:


Evoluzione sistemi operativi: sistemi multiprogrammati, time-sharing, paralleli, reti di calcolatori, real-time, embedded.

Lezione 3, 150311:


Gestione processi, memoria centrale, files. Gestione i/o, protezione, interprete comandi.

Lezione 4, 150313:


Storia Unix. Sistemi monolitici, a livelli, modulari. Macchine virtuali. Esempio JVM. Avvio SO.

Lezione 5, 150318:


Gestione processi, process control block. Stato dei processi. Transizione degli stati dei processi

Lezione 6, 150320:


Creazione processi, fork e struttura ad albero. Terminazione. Thread. Modelli multithread (molti a uno, uno a uno).

Lezione 7, 150327:


Burst di cpu e di i/o. Analisi distribuzioni dei burst. Criteri di scheduling. Indici: utilizzo cpu, throughput, turnaround, waiting time, response time. Algoritmi di scheduling: FIFO/FCFS (esempi, effetto convoglio), SJF.

Lezione 8, 150401:


SJF: media esponenziale, prova sketch ottimalita'. Algoritmi di scheduling: priorita', starvation e aging, Round robin

Lezione 9, 150408:


Coda a piu' livelli, con retroazione e scheduling real time. Es scheduling Linux O(1) kernel 2.6. Comunicazione tra processi, memoria condivisa. Esempio produttore consumatore (con n-1 celle).

Lezione 10, 150410:


Meccanismi IPC (introduzione). Comunicazione: messaggi e mailbox. Modello diretto, indiretto. Send e receive bloccanti e non bloccanti. Buffer mailbox illimitato, limitato e 0 capacita'.

Lezione 11, 150415:


Sincronizzazione: produttore e consumatore con race condition. 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 12, 150417:


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. Esempio di sleep e wakeup. Problema della sveglia.

Lezione 13, 150422:


Esercitazione assistita

Lezione 14, 150430:


Prova intermedia

Lezione 15, 150506:


Semafori, definizione ed utilizzo per implementare mutex e produttore-consumatore. Esempio deadlock con 2 risorse. Monitor, produttore e consumatore con monitor. 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

Lezione 16, 150508:


Problema lettori e scrittori con precedenza a lettori. Barbiere sonnolento. Il Deadlock: 4 condizioni necessarie (mutua esclusione, hold+wait, no preemption, attesa circolare). Grafo allocazione risorse Holt.

Lezione 17, 150513:


Gestione deadlock: prevenzione, rilevazione. Esempio di visualizzazione deadlock con grafici temporali. Stato sicuro. Analisi dei cicli nel grafo di Holt. Algoritmo del banchiere ed eliminazione deadlock.

Lezione 18, 150515:


Gestione Memoria: indirizzi, Collegamento indirizzi e compilatori. 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.

Lezione 19, 150520:


Paginazione. 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 20, 150522:


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. Copia durante la scrittura.

Lezione 21, 150527:


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). Sostituzione LFU e MFU. Allocazione frames: omogenea, proporzionale.

Lezione 22, 150529:


Thrashing. Principio localita'. Evitare thrashing con working set o frequenza page fault. Esempio di gestore memoria virtuale in WIN XP. Gestione periferiche di I/O. Controller, porte, I/O mappato in memoria. Handshaking. Interrupt vs polling. DMA.

Lezione 23, 150603:


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. Configurazione disco, blocco di avvio, partizioni.

Lezione 24, 150604 (3 ore):


Raid: mirroring e striping. Accenni a parita' e crc. Livelli 0, 1, 0+1, 1+0. 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.

Lezione 25, 150605:


Virtual file system. Realizzazione directory. Metodi di allocazione. Contigua, 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.

Lezione 26, 150610:


Approfondimento di tematiche a richiesta degli studenti.

LABORATORIO

Lezione 1, 150326


Introduzione: presentazione.txt

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

Lucidi: Shell lezione 1

Lezione 2, 150416

Lucidi: Shell lezione 2

Lezione 3, 150423

Lucidi: Shell lezione 3

Lezione 4, 150507

Lucidi: Shell lezione 4

Lezione 4, 150507

Lucidi: Shell lezione 4

Lezione 5, 150514

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, 150521

Lucidi: Pipe e IPC lezione 6

Esempio di pipe: pipe.c

Esempio di memoria condivisa: shmem.c

Esempio di semaforo: sem.c

Lezione 7, 150528

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.