Corso di Sistemi Operativi per Informatica

AA. 2006-07

Appello 26 09 07

Libro di testo: Silberschatz, Galvin, Gagne: Sistemi operativi. Settima edizione Pearson

In biblioteca e' disponibile la sesta edizione della Apogeo

Altri links:

Dispense online di Eugenio Omodeo (Sincronizzazione)


TEORIA

Lezione 1, 070305:


Introduzione ai sistemi operativi. Modo utente e supervisore. evoluzione sistemi operativi: sistemi batch, multiprogrammati, time-sharing

Lezione 2, 070306:


Sistemi paralleli, reti di calcolatori, sistemi real-time, embedded. Gestione processi, memoria centrale, files e i/o: problematiche e servizi del s.o.

Lezione 3, 070312:


Storia Unix. Sistemi monolitici, a livelli, modulari. Macchine virtuali. Gestione processi, process control block. Stato dei processi. Scheduling (breve, medio e lungo termine).

Lezione 4, 070313:


Creazione processi, fork e struttura ad albero. Terminazione. 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 5, 070319:


Algoritmi di scheduling: FCFS, SJF (esempi, media esponenziale, prova sketch ottimalita'), scheduling a priorita', starvation, aging, round robin.

Lezione 6, 070320:


Scheduling: coda a piu' livelli, con retroazione (feedback), real time. Inversione di priorita'. Esempio di scheduling su Unix System V R4. Comunicazione tra processi. Modello a memoria condivisa esempio con buffer circolare

Lezione 7, 070326:


Comunicazione: messaggi e mailbox. Modello diretto, indiretto. Sincronizzazione: produttore e consumatore con race condition. Definizione di sezione critica: mutua esclusione, progresso, attesa limitata. Realizzazione sezione critica: disabilitazione interruzioni. Alternanza stretta. Algoritmo di Peterson per 2 processi.

Lezione 8, 070327:


Algoritmo del panettiere (Baker). Test and set lock. Problema dell'inversione di priorita'. Esempio di sleep e wakeup. Problema della sveglia. Semafori, definizione ed utilizzo per implementare mutex e produttore-consumatore. Monitor, principi

Lezione 9, 070402:


Problema dei 5 filosofi. Soluzione con semafori e deadlock. Soluzione senza deadlock ma con starvation. Soluzione senza stallo ne' starvation. Problema lettori e scrittori con precedenza a lettori. Barbiere sonnolento. Il Deadlock: 4 condizioni necessarie (mutua esclusione, hold+wait, no preemption, attesa circolare)

Lezione 10, 070403:


Il Deadlock: grafo allocazione risorse Holt. Gestione deadlock: prevenzione, rilevazione. Stato sicuro. Algoritmo del banchiere. Analisi cicli in grafo di attesa. Risoluzione deadlock: interruzione, checkpoint, preemption.

Lezione 11, 070410:


Gestione Memoria: indirizzi. Collegamento indirizzi e compilatori. Spazio di indirizzamento, caricamento e collegamento dinamico. Swap. Schemi di gestione della memoria: Partizione singola (base e limite), partizione multipla (fissa e dinamica, gestione buchi, ricerca first best and worst fit).

Lezione 12, 070411:


Frammentazione interna e esterna. Compattazione. Paginazione. 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 13, 070507:


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

Lezione 14, 070508:


Tempi di accesso con paginazione. 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. Sostituzione ottimale e lru (contatori, stack, 1 o piu' bit di riferimento).

Lezione 15, 070514:


Sostituzione con algoritmo seconda possibilita' (o chance, orologio). Sostituzione LFU e MFU. Allocazione frames: omogenea, proporzionale. Sostituzione globale o locale. Thrashing. Principio localita'. Evitare thrashing con working set o frequenza page fault.

Lezione 16, 070515:


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.

Lezione 17, 070521:


Struttura delle memorie di massa. Tempo di accesso e banda. Schedulazione disco (testina): fcfs, sstf, scan, c-scan, look, c-look. Configurazione disco, blocco di avvio, blocchi difettosi, swap.

Lezione 18, 070522:


Raid, tempo medio al guasto. Ridondanza e data striping. Livelli 0,1,2,3,4,5,0+1,1+0. File System: caratterizzazione. Struttura directory: singolo livello, 2 livelli, ad albero, a grafo aciclico, grafo generale. Montaggio file system. File system remoti. Semantica coerenza per file condivisi.

Lezione 19, 070528:


Protezione: acl e stile unix. Implementazione file system: livelli. Organizzazione su disco e in memoria. La creazione e apertura di un file. Virtual file system. Realizzazione directory. Metodi di allocazione. Contigua, collegata (linked): cluster e FAT.

Lezione 20, 070529:


Allocazione indicizzata, multilivello e schema combinato (unix file system). Gestione spazio libero: bitmap, lista collegata, raggruppamento, conteggio.

Lezione 21, 070604:


Esercizi di ripasso

Lezione 22, 070605:


Esercizi di ripasso

LABORATORIO

Lezione 1, 070308


Introduzione: presentazione.txt

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

Lucidi: Shell lezione 1

Lezione 2, 070315

Lucidi: Shell lezione 2

Lezione 3, 070322

Lucidi: Shell lezione 3

Lezione 4, 070327

Lucidi: Shell lezione 4

Lezione 5, 070412

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

Lucidi: Pipe e IPC lezione 6

Esempio di pipe: pipe.c

Esempio di memoria condivisa: shmem.c

Esempio di semaforo: sem.c

Lezione 7, 070517

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

Esercitazione assistita

Lezione 9, 070531

Esercitazione assistita

Lezione 10, 070607

Esercitazione assistita

Requisiti per poter sostenere l'esame di Laboratorio.



Progetti bash programming e C system programming.