Corso di Sistemi Operativi per Informatica

AA. 2011-12


Gli orali si svolgeranno giovedi' 23 (11-13) e venerdi' 24 (10-13 e 15-18)
Presentatevi nel mio studio all'inizio di ciascuna giornata per definire il calendario
Se volete venire la settimana prossima, mandatemi una mail.

Risultati:

158329 19
202580 27
211454 21
211618 24
221053 25
221065 ins
221341 24
221370 ins
221995 27
222388 16
222494 16
222681 18
223671 ins
226415 23
226823 19


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

Altri links:

Dispense online di Eugenio Omodeo (Sincronizzazione)


TEORIA

Lezione 1, 111004:


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

Lezione 2, 111005:


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

Lezione 3, 111011:


Sistemi real-time, embedded. Gestione processi, memoria centrale, files. Gestione i/o, protezione, interprete comandi.

Lezione 4, 111012:


Storia Unix. Sistemi monolitici, a livelli, modulari. Macchine virtuali. Avvio del sistema

Lezione 5, 111018:


Gestione processi, process control block. Stato dei processi. Creazione processi, fork e struttura ad albero. Terminazione.

Lezione 6, 111019:


Thread. Modelli multithread (molti a uno, uno a uno, molti a molti). Burst di cpu e curva di frequenza. Dispatcher. Criteri di scheduling (indici: utilizzo cpu, throughput, turnaround, waiting, response time).

Lezione 7, 111026:


Algoritmi di scheduling: FIFO/FCFS (esempi), SJF (esempi, media esponenziale, prova sketch ottimalita').

Lezione 8, 111102:


Algoritmi di scheduling: a priorita', starvation e aging, Round robin, Coda a piu' livelli, con retroazione e scheduling real time. Es scheduling Linux O(1).

Lezione 9, 111108:


Comunicazione tra processi, memoria condivisa. Esempio produttore consumatore. Meccanismi IPC (introduzione). Comunicazione: messaggi e mailbox. Modello diretto, indiretto.

Lezione 10, 111109:


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 11, 111115:


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 12, 111116:


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

Lezione 13, 111122:


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 e stato filosofo). Problema lettori e scrittori con precedenza a lettori.

Lezione 14, 111123:


Barbiere sonnolento. Il Deadlock: 4 condizioni necessarie (mutua esclusione, hold+wait, no preemption, attesa circolare). Il Deadlock: grafo allocazione risorse Holt. Gestione deadlock: prevenzione, rilevazione. Stato sicuro. Analisi dei cicli nel grafo di Holt con archi di prenotazione.

Lezione 15, 111129:


Algoritmo del banchiere ed eliminazione deadlock. Gestione Memoria: indirizzi, Collegamento indirizzi e compilatori. Spazio di indirizzamento, caricamento e rilocazione degli indirizzi.

Lezione 16, 111130:


Swap. Schemi di gestione della memoria: Partizione singola (base e limite), partizione multipla (fissa e dinamica). Gestione memoria: gestione buchi, ricerca first best and worst fit. Frammentazione interna e esterna. Compattazione. Esempio con partizionamento variabile. Introduzione alla paginazione.

Lezione 17, 111206:


Paginazione. Conversione indirizzo logico in fisico. Conversione indirizzo logico in fisico. Implementazione tabella pagine: registri dedicati, puntatori in memoria centrale, memorie associative. Costo medio accesso a memoria con tlb. Protezione e condivisione. Paginazione a 2 livelli.

Lezione 18, 111207:


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

Lezione 19, 111220:


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).

Lezione 20, 111221:


Sostituzione con algoritmo seconda possibilita' (o chance, orologio). Sostituzione LFU e MFU. 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 21, 120110:


Gestione periferiche di I/O. Controller, porte, I/O mappato in memoria. Handshaking. Interrupt vs polling. DMA. Interfacce I/O e syscall. Servizi kernel: scheduling, buffering, caching, spooling, errori. Struttura delle memorie di massa. Tempo di accesso e banda.

Lezione 22, 120111:


Schedulazione disco (testina): fcfs, sstf, scan, c-scan, look, c-look. Configurazione disco, blocco di avvio, blocchi difettosi, swap. File System: caratterizzazione.

Lezione 23, 120117:


Struttura directory: singolo livello, 2 livelli, ad albero, a grafo aciclico, grafo generale. Montaggio file system. File system remoti. Semantica coerenza per file condivisi. Protezione: acl e stile unix. Implementazione file system: livelli. Organizzazione su disco e in memoria. La creazione e apertura di un file.

Lezione 24, 120118:


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 25, 120119:


Esercitazione

Per vedere lo schermo docente lanciare vncviewer e immettere hpc100.sci.unipr.it come server.

LABORATORIO

Lezione 1, 111027


Introduzione: presentazione.txt

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

Lucidi: Shell lezione 1

Lezione 2, 111103

Lucidi: Shell lezione 2

Lezione 3, 111110

Lucidi: Shell lezione 3

Lezione 4, 111117

Lucidi: Shell lezione 4

Lezione 5, 111124

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

Lucidi: Pipe e IPC lezione 6

Esempio di pipe: pipe.c

Esempio di memoria condivisa: shmem.c

Esempio di semaforo: sem.c

Lezione 7, 120112

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.