Corso di Sistemi Operativi per Informatica

AA. 2015-16


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 2016.
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 16/9/16, ammessi all'orale.
Per l'orale (con voto non INS) vi potete presentare giovedi' 22 dalle 10.00 alle 13.00 (aula E).
Per esigenze particolari, contattatemi per mail.

AMBRI JONATHAN 26
ARIOLI DANIELE 29
BECCHI ANNA 30
BENASSI FEDERICO 26
FERRARI DARIO 24
FERRARI FABIO 26
MEZIATI MARIA 21
SUDOSO GLORIA INS

Altri links:

Dispense online di Eugenio Omodeo (Sincronizzazione)


TEORIA

Lezione 1, 160301:


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

Lezione 2, 160302:


Evoluzione sistemi operativi: sistemi multiprogrammati, time-sharing.

Lezione 3, 160308:


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

Lezione 4, 160309:


interprete comandi. Gestione processi, memoria centrale, files e i/o: problematiche e servizi del s.o. Storia Unix.

Lezione 5, 160315:


Sistemi monolitici, a livelli, modulari. Macchine virtuali. Esempio JVM. Gestione processi, process control block. Stato dei processi. Transizione degli stati dei processi

Lezione 6, 160316:


Creazione processi, fork e struttura ad albero in linux. Terminazione. Thread: confronto con processi e vantaggi.

Lezione 7, 160322:


Modelli multithread (molti a uno, uno a uno). 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, 160323:


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

Lezione 9, 160330:


Coda a piu' livelli, con retroazione e scheduling real time. Esempio scheduling Linux O(1) kernel 2.6.

Lezione 10, 160405:


Comunicazione tra processi, memoria condivisa. 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 sezione critica: mutua esclusione, progresso, attesa limitata.

Lezione 11, 160406:


Realizzazione sezione critica: disabilitazione interruzioni. Alternanza stretta. Variabili di lock. Algoritmo di Peterson per 2 processi.

Lezione 12, 160412:


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. Semafori, definizione ed utilizzo per implementare mutex e produttore-consumatore.

Lezione 13, 160413:


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

Lezione 14, 160419:


Problema lettori e scrittori con precedenza a lettori. Barbiere sonnolento. Esercizi con i semafori. Monitor, produttore e consumatore con monitor.

Lezione 15, 160420:


Esercitazione assistita

Lezione 160429:


Prova intermedia

Lezione 17, 160503:


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. Stato sicuro. Analisi dei cicli nel grafo di Holt. Algoritmo del banchiere. Gestione deadlock: prevenzione, rilevazione, eliminazione.

Lezione 18, 160504:


Gestione Memoria: indirizzi, Collegamento indirizzi e compilatori (gestione indirizzi nelle varie fasi di compilazione). 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.

Lezione 19, 160510:


Frammentazione interna e esterna. Compattazione. Esempio con partizionamento variabile e round robin. Paginazione. Conversione indirizzo logico in fisico. Esempio di paginazione. Frammentazione con paginazione.

Lezione 20, 160517:


Implementazione tabella pagine: registri dedicati, puntatori in memoria centrale, memorie associative. Costo medio accesso a memoria. Protezione e condivisione. Segmentazione. Implementazione con registri base+limite. Protezione e condivisione. Segmentazione paginata.

Lezione 21, 160518:


Memoria virtuale, paginazione su richiesta. Page fault, swap in e swap out. Problema del riavvio dell'istruzione. Copia durante la scrittura.

Lezione 22, 160524:


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, 160525:


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, 160531:


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

Lezione 25, 160601:


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

Lezione 26, 160607:


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, collegata (linked): cluster e FAT. Allocazione indicizzata, multilivello e schema combinato (unix file system). Gestione spazio libero: bitmap, lista collegata, raggruppamento RLE.

Lezione 27, 160608:


Esercizi di ripasso. Approfondimento di tematiche a richiesta degli studenti.

LABORATORIO

Lezione 1, 160317


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

Lucidi: Shell lezione 2

Lezione 3, 160407

Lucidi: Shell lezione 3

Lezione 4, 160414

Lucidi: Shell lezione 4

Lezione 5, 160421

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

Lucidi: Pipe e IPC lezione 6

Esempio di pipe: pipe.c

Esempio di memoria condivisa: shmem.c

Esempio di semaforo: sem.c

Lezione 7, 160512

Lucidi: Threads Lezione 7

Esempio di creazione pthreads: exCreazioneThread.c

Esempio di mutex e threads: mutex.c

Esempio di semaforo e threads: semthread.c

Lezione 8, 160519

Esercitazione assistita

Lezione 9, 160609

Esercizi di ripasso

Requisiti per poter sostenere l'esame di Laboratorio.