Corso di Sistemi Operativi per Informatica

AA. 2005-06

Nota: i voti degli scritti saranno validi fino alla sessione di settembre compresa. Dalla sessione di gennaio sara' necessario rifare gli scritti.

Appello 01 03 07

Appello 21 07 06



Il libro di testo seguito e': Silberschatz, Galvin, Gagne: Sistemi operativi. Apogeo 2005. (Ci sono 2 copie in biblioteca)

Altri links:

Dispense online di Eugenio Omodeo (Sincronizzazione)



TEORIA

Lezione 1, 060306:


Introduzione ai sistemi operativi, evoluzione sistemi operativi: sistemi batch, multiprogrammati, time-sharing, paralleli, di rete, distribuiti e cluster (dal Capitolo 1 del testo)

Lezione 2, 060307:


Sistemi real-time, embedded. Struttura del S.O., gestione processi, memoria centrale, files, i/o, memoria secondaria, protezione, interprete dei comandi. Servizi S.O. Chiamate di sistema (Capitoli 3.1—3.3)

Lezione 3, 060313:


Storia di Unix. Sistemi monolitici, a livelli. Struttura modulare. (Cap 3.5) Macchine virtuali. (Cap 3.6). Processi: definizione, process control block, stato dei processi, context switch. Scheduling dei processi: a breve, medio e lungo termine. (Cap 4.1, 4.2). Creazione processi.

Lezione 4, 060314:


Terminazione processi. Esempio C di gestione processi. (Cap 4.3). Thread e modelli multithread. (Cap 5.1 e 5.2). Scheduling CPU. Processi CPU e I/O bounded. Algoritmi preemptive e non preemptive. Criteri di scheduling. (Cap 6.1 e 6.2).

Lezione 5, 060320:


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

Lezione 6, 060321:


Scheduling con coda a piu' livelli, retroazione, real time (Cap 6.3). Esempio SysV R4. Comunicazione processi. Sezione critica memoria condivisa. Esempio lettore/scrittore. IPC (Cap 4.4 e 4.5).

Lezione 7, 060327:


Comunicazione diretta e indiretta. (Cap 4.5) Sincronizzazione: esempio produttore e consumatore con N elementi. Race condition e sezione critica. (Cap 7.1 e 7.2) Mutua esclusione: disabilitazione interruzioni, variabili di lock, alternanza stretta, algoritmo di Peterson (2 processi). (dispense sincronizzazione)

Lezione 8, 060328:


Algoritmo del panettiere per N+2 processi. Hw di sincronizzazione. Sleep e wakeup. Semafori. Monitor. Esempi di sincronizzazione con semafori e monitor. I 5 filosofi con semafori. (dispense sincronizzazione)

Lezione 9, 060403:


Esempi ed esercizi: i 5 filosofi con semafori (senza stallo ma starvation e senza ne' stallo ne' starvation). Lettori e scrittori. Barbiere sonnolento.

Lezione 10, 060404:


Deadlock: definizione, condizioni necessarie, grafi di allocazione (Cap 8.2). Gestione deadlock, prevenire, evitare (stato sicuro). Esempi. (Cap 8.3--8.5).

Lezione 11, 060410:


Deadlock: rilevazione e recupero (Cap 8.6). Gestione memoria. binding indirizzi, spazio indirizzamento, caricamento dinamico e collegamento dinamico (9.1.1--9.1.4)

Lezione 12, 060411:


Overlay, Swapping (Cap 9.1.5 e 9.2). Gestione memoria: allocazione contigua (partizioni fisse e variabili) (Cap 9.3). Esempi. Frammentazione. Allocazione non contigua: paginazione (Cap 9.4 e 9.4.1). Esempi

Lezione 13, 060502:


Compito sulla prima parte del corso

Lezione 14, 060508:


Correzione compito e ripasso.

Lezione 15, 060509:


Ripasso paginazione. Implementazione HW tabella delle pagine (Cap 9.4.2) Paginazione a 2 livelli (Cap 9.4.4). Segmentazione (Cap 9.5)

Lezione 16, 060515:


Segmentazione paginata (Cap 9.6). Memoria virtuale. Demand paging (Cap 10.2). Copia durante la scrittura (Cap 10.3).

Lezione 17, 060516:


Sostituizione pagine (Cap 10.4): Fifo (anomalia di Belady), ottimale LRU, LRU approssimato (bit e seconda possibilita'), conteggio (LFU e MFU).

Lezione 18, 060522:


Allocazione frame (omogenea e proporzionale). Sostituzione globale e locale (Cap 10.5). Thrashing (Cap 10.6). Working set. Esempio memoria virtuale in Windows XP (10.9).

Lezione 19, 060523:


Ripasso. Gestione Periferiche, controller, porte, interrupt, DMA. (Cap 13.1 13.2)

Lezione 20, 060529:


Interfacce I/O (Cap 13.3). Il sottosistema I/O del kernel (Cap 13.4) Strutture delle memorie di massa (Cap 14.1). Schedulazione FCFS, SSTF, SCAN.

Lezione 21, 060530:


Schedulazione C-SCAN, Confronti tra algoritmi schedulazione disco. Amministrazione disco (Cap 14.3): formattazione, partizione. Blocchi difettosi. Spazio Swap (Cap 14.4). Tempo medio al guasto.

Lezione 22, 060605:


RAID (Cap 14.5): affidabilita' e prestazioni. livelli 0--5, 0+1, 1+0. File system: struttura (Cap 11.1, 11.2). Directory (singolo livello, 2 livelli, ad albero) Cap 11.3.

Lezione 23, 060606:


Directory (a dag e grafo, Cap 11.3). Montaggio File System (Cap 11.4). Condivisione e File System remoti (Cap 11.5). Protezione (Cap 11.6). Implementazione File System, livelli (Cap 12.1). Partizioni. Virtual File System. (Cap 12.2) Realizzazione directory (Cap 12.3).

Lezione 24, 060612:


Metodi di allocazione: contiguo, collegato, FAT, Indicizzato. Gestione spazio libero: mappa bit, lista collegata, raggruppamento e conteggio. Esercizi.

Lezione 25, 060613:


Esercizi di ripasso.




LABORATORIO

Lezione 1, 060316


Introduzione: presentazione.txt

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

Lucidi: Shell lezione 1

Lezione 2, 060323

Lucidi: Shell lezione 2

Lezione 3, 060330

Lucidi: Shell lezione 3

Lezione 4, 060406

Lucidi: Shell lezione 4

Esempio di shell script: esempio

Lezione 5, 060420

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

Lucidi: Pipe e IPC lezione 6

Esempio di pipe: pipe.c

Esempio di memoria condivisa: shmem.c

Esempio di semaforo: sem.c

Lezione 7, 060511

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

Collaboratore didattico: Elio Panegai
Introduzione a Java

Lezione 9, 060525

Collaboratore didattico: Elio Panegai
Introduzione a Java

Lezione 10, 060601

Collaboratore didattico: Elio Panegai
Java: Overloading metodi, classi util, overriding clone e equal, costruttori privati, ereditarieta', scoping

Lezione 11, 060608

Collaboratore didattico: Elio Panegai
Java: ereditarieta' e polimorfismo, eccezioni, java thread, costrutto synchronized, esercizio: 5 filosofi, barrier e semafori, latch.

Requisiti per poter sostenere l'esame di Laboratorio.



Progetti bash programming e C system programming.



Studenti del corso



Seminario 060524 Per Linguaggi Dichiarativi: Constraint Programming approaches to the Protein Folding Problem