Corso di Sistemi Operativi per Informatica

AA. 2017-18


Testo consigliato: Silbershatz Sistemi Operativi (concetti ed esempi). Nona 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 2018.
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.

Altri links:

Approfondimento su Linux: scheduler di processi

Dispense online di Eugenio Omodeo (Sincronizzazione)

Esempio di prova intermedia


TEORIA

Lezione 1, 180228:


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

Lezione 2, 180301:


Evoluzione sistemi operativi: sistemi multiprogrammati, time-sharing. Sistemi paralleli, reti di calcolatori, real-time, embedded. Gestione processi, memoria centrale, files. Gestione i/o, protezione.

Lezione 3, 180307:


Interprete comandi. Avvio del sistema. Gestione processi, memoria centrale, files e i/o: problematiche e servizi del s.o (sys calls). Storia Unix. Sistemi monolitici, a livelli

Lezione 4, 180308:


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

Lezione 5, 180314:


Scheduling a breve, medio e lungo termine. Creazione processi, fork e struttura ad albero in linux. Terminazione. Thread: confronto con processi e vantaggi. 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.

Lezione 6, 180315:


Indici: waiting time (tempo di attesa), response time (tempo di risposta). Algoritmi di scheduling breve termine: FIFO/FCFS (esempi, effetto convoglio)

Lezione 7, 180321:


Algoritmi di scheduling: SJF, media esponenziale, prova sketch ottimalita' (da bubble sort). Algoritmi di scheduling: priorita', starvation e aging.

Lezione 8, 180322:


Round robin: coda circolare, context switch. Code multiple, con retroazione e scheduling real time. Esempio scheduling Linux O(1) kernel 2.6.

Lezione 9, 180328:


Comunicazione tra processi, memoria condivisa. Esempio produttore consumatore (con n-1 celle). Meccanismi IPC (introduzione). Comunicazione: messaggi e mailbox. Modello diretto.

Lezione 10, 180404:


Mailbox a comunicazione indiretta. Send e receive bloccanti e non bloccanti. Buffer mailbox illimitato, limitato e 0 capacita'. Sincronizzazione: produttore e consumatore con race condition (uso contatore di celle). Definizione di race condition. Definizione di sezione critica: mutua esclusione, progresso, attesa limitata.

Lezione 11, 180405:


Realizzazione sezione critica: disabilitazione interruzioni. Alternanza stretta. Variabili di lock. Algoritmo di Peterson per 2 processi. Algoritmo del panettiere (Baker). Analisi del codice con proprieta' mutua esclusione, attesa limitata e progresso.

LABORATORIO

Requisiti per poter sostenere l'esame di Laboratorio.