Corso di Sistemi Operativi per Informatica

AA. 2012-13


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

Risultati appello 24 Settembre:

Gli orali (dal 15 in su) si svolgono in nel mio studio il 27 Settembre dalle ore 10.00. Per accordi differenti mandatemi una email.

234459 18
Fino 18
234658 17
193222 16
221198 INS

Altri links:

Dispense online di Eugenio Omodeo (Sincronizzazione)


TEORIA

Lezione 1, 121017:


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

Lezione 2, 121018:


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

Lezione 3, 121023:


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

Lezione 4, 121024:


Sistemi monolitici, a livelli, modulari. Macchine virtuali. Gestione processi, process control block. Stato dei processi.

Lezione 5, 121030:


Creazione processi, fork e struttura ad albero. Terminazione. Thread.

Lezione 6, 121031:


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). Algoritmi di scheduling: FIFO/FCFS (esempi).

Lezione 7, 121106:


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

Lezione 8, 121107:


Algoritmi di scheduling: Coda a piu' livelli, con retroazione e scheduling real time. Es scheduling Linux O(1). Esercizi sugli algoritmi di scheduling presentati.

Lezione 9, 121113:


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

Lezione 10, 121114:


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


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


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 e stato filosofo).

Lezione 13, 121127:


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

Lezione 14, 121128:


Esempio di visualizzazione deadlock con grafici temporali. Stato sicuro. Analisi dei cicli nel grafo di Holt con archi di prenotazione. Algoritmo del banchiere ed eliminazione deadlock.

Lezione 15, 121204:


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

Lezione 16, 121205:


Partizione multipla (fissa e dinamica). Gestione memoria: gestione buchi, ricerca first best and worst fit. Frammentazione interna e esterna. Compattazione. Esempio con partizionamento variabile. Paginazione. Conversione indirizzo logico in fisico. Conversione indirizzo logico in fisico.

Lezione 17, 121211:


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

Lezione 18, 121212:


Paginazione a 2 livelli. 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.

Lezione 19, 121218:


Problema del riavvio dell'istruzione. 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.

Lezione 20, 121219:


Sostituzione ottimale e lru (contatori e stack). Sostituzione con algoritmo seconda possibilita' (o chance, orologio). Sostituzione LFU e MFU. Allocazione frames: omogenea, proporzionale.

Lezione 21, 130108:


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. Interfacce I/O e syscall.

Lezione 22, 130109:


Servizi kernel: scheduling, buffering, caching, spooling, errori. 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. File System: caratterizzazione. Struttura directory: singolo livello.

Lezione 23, 130115:


Struttura directory: 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, 130116:


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.

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

LABORATORIO

Lezione 1, 121109


Introduzione: presentazione.txt

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

Lucidi: Shell lezione 1

Lezione 2, 121116

Lucidi: Shell lezione 2

Lezione 3, 121123

Lucidi: Shell lezione 3

Lezione 4, 121129

Lucidi: Shell lezione 4

Lezione 5, 121206

Esercitazione assistita

Lezione 6, 121213

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

Lucidi: Pipe e IPC lezione 6

Esempio di pipe: pipe.c

Esempio di memoria condivisa: shmem.c

Esempio di semaforo: sem.c

Lezione 8, 130110

Lucidi: Threads Lezione 7

Esempio di creazione pthreads: exCreazioneThread.c

Esempio di mutex e threads: mutex.c

Esempio di semaforo e threads: semthread.c

Link per tutorial dello strumento make: qui

Requisiti per poter sostenere l'esame di Laboratorio.