A Silberschatz, P.Galvin, G. Gagne, Sistemi
Operativi (settima ed.), Addison Weseley, 2006
(le edizioni
precedenti del libro dovrebbero coprire completamente il corso. In
caso qualche argomento del programma non sia trattato in tali
edizioni siete pregati di farmelo presente.)
in alternativa:
W. Stallings, Operating Systems, Prentice-Hall.
Parte
I - Generalità
(questa parte e' coperta dai Capitoli 1, 2 del libro)
Introduzione:
Definizione di Sistema Operativo. Astrazione Software.
Evoluzione e classificazione di sistemi operativi: Sistemi batch,
multiprogrammati e time-sharing. Sistemi real-time. Sistemi
paralleli e distribuiti (cenni).
Strutture dei sistemi di
calcolo: Interruzioni. I/O tramite interruzioni e DMA.
Disabilitazione delle interruzioni. Architetture di protezione:
modalita' di esecuzione e istruzioni privilegiate. Protezione della
memoria. Registri base e limite. Protezione CPU: timer e
time-sharing.
Parte
II - Gestione dei processi (questa parte e' coperta dai
Capitoli 4, 5 e 6 del libro)
I Processi: Concetto di
processo, stati di un processo, PCB (Process Control Block), e la
commutazione di contesto. Scheduling dei processi, code di
scheduling, scheduling a lungo, medio e breve termine. Criteri di
scheduling. Preemption.
Scheduling di CPU: Scheduling
batch: First Come First Serve (FCFS). Shortest Job First (SJF),
approssimazione mediante media esponenziale. Shortest Remaining Time
First (SRTF). Scheduling a priorita'. Starvation e Aging. Scheduling
time-sharing: Round-Robin (RR), dimensione del quanto. Combinazione
di scheduling: scheduling a code multiple. Code a priorita'
variabile. Scheduling per piu' unita' di elaborazione. Scheduling
per sistemi in tempo reale. Casi di studio: Scheduling in Linux e
Windows NT/2000.
Operazioni sui processi: Creazione:
relazioni dinamiche, relazioni di contenuto. Esempio: fork ed exec.
Terminazione: exit e wait.
Comunicazione tra processi:
Processi cooperanti e processi in competizione. Modello a
memoria condivisa. Esempio: il problema Produttore-Consumatore.
Modello a scambio di messaggi: nominazione diretta e indiretta;
comunicazione sincrona e asincrona. Produttore-Consumatore con
scambio di messaggi.
I Thread: Concetto di thread,
motivazioni, thread a livello utente e kernel. Esempio: la libreria
PThread. Modelli programmazione multithread: molti a uno, uno a uno,
molti a molti. Casi di studio: Thread in Solaris 2, Linux e Windows
NT/2000. I Thread di Java: esempio del Produttore-Consumatore.
Parte
III - Sincronizzazione (questa parte e' coperta dai
Capitoli 7 e 8 del libro)
Sezione critica: Concorrenza e
incoerenza dei dati. La sezione critica: mutua esclusione. Soluzioni
software: esempi di soluzioni non funzionanti, proprieta' di
progresso e attesa limitata. Soluzione per 2 processi: algoritmo di
Peterson. Soluzione per n processi: algoritmo del fornaio (cenni).
Soluzioni hardware: disabilitazione interruzioni, istruzioni
atomiche: test-and-set, swap.
Semafori: definizione e
realizzazione nel Sistema Operativo; sezione critica a
sincronizzazione tramite semafori; semafori binari, realizzazione di
semafori contatori tramite semafori binari; Casi di studio:
produttore e consumatore, soluzione per n produttori e m
consumatori; Lettori e scrittori: soluzione con priorita' ai
lettori; Filosofi a cena: soluzione con deadlock e possibili rimedi;
Monitor: Motivazioni e definizione; Esempio:
Produttore/Consumatore tramite monitor; funzionamento del monitor;
monitor con notify, vantaggi e svantaggi, notifyall; Esempio:
Filosofi a cena con notify e notifyall; relazioni tra semafori e
monitor; monitor in Java.
Stallo: Definizione; condizioni
necessarie per lo stallo; grafo di assegnazione delle risorse:
significato dei cicli; prevenzione dello stallo: negazione di una
delle condizioni necessarie; evitare le situazioni di stallo:
concetto di stato sicuro, algoritmo con grafo di assegnazione delle
risorse, algoritmo del banchiere, esempi; rilevamento dello stallo:
istanza singola e piu' istanze di una risoirsa; ripristino da
situazioni di stallo.
Parte IV - Gestione
della Memoria (questa parte e' coperta dai Capitoli 9 e
10 del libro)
Introduzione: associazione di istruzioni e
dati a indirizzi di memoria e rilocazione; spazi di indirizzi logici
e fisici; segmentazione e condivisione di segmenti di
memoria.
Assegnazione contigua: partizionamento fisso,
frammentazione interna; partizionamento dinamico: strategie
first-fit; worst-fit, best-fit, next-fit; frammentazione interna; un
compromesso tra partizionamento statico e dinamico: il Buddy-heap di
Linux (cf. 20.6.1 del libro)
Paginazione: architetture di
paginazione, cenni su TLB e tabelle delle pagine gerarchiche;
frammentazione interna e dimensione delle pagine
Memoria
virtuale: Definizione; paginazione su richiesta; gestione dei
page-fault da parte del Sistema Operativo; strategie di sostituzione
delle pagine: Ottima, First-In-First-Out (FIFO), Least frequently
used (LFU) e Least recently used (LRU), Seconda chance (clock) e
variante con bit di modifica; anomalia di Belady e
problematiche relative all'implementazione delle strategie;
memorizzazione transitoria delle pagine;
Assegnazione dei
blocchi di memoria: numero minimo di blocchi, assegnazione
uniforme e proporzionale, tecnica del working-set; paginazione
degenere (thrashing); approssimazione del working-set tramite
frequenza dei page-fault. Metodo della frequenza delle assenze
(sistema Windows), e metodo del "pageout" globale (Sistema
Solaris).
Parte
I - Generalità (questa parte e'
coperta dai Capitoli 1 e 2)
Introduzione:
Definizione di Sistema Operativo. Astrazione Software.
Evoluzione e classificazione di sistemi operativi: Sistemi batch,
multiprogrammati e time-sharing. Sistemi real-time. Sistemi
paralleli e distribuiti (cenni).
Strutture
dei sistemi di calcolo: Il meccanismo delle
Interruzioni. Architetture di protezione: modalita' di esecuzione e
istruzioni privilegiate.
Parte
II - Gestione dei processi (questa parte e' coperta dai
Capitoli 4, 5)
I Processi: Concetto di processo, stati di
un processo, PCB (Process Control Block). Scheduling dei processi,
code di scheduling, scheduling a lungo, medio e breve termine.
Criteri di scheduling. Preemption. Creazione e terminazione di
processi. Processi cooperanti e processi in competizione.
I
Thread: Concetto di thread, motivazioni, thread a livello utente
e kernel. Modelli programmazione multithread: molti a uno, uno a
uno, molti a molti.
Parte III
- Sincronizzazione (questa parte e' coperta dai Capitoli
7 e 8)
Sezione critica: Concorrenza e incoerenza dei dati.
La sezione critica: mutua esclusione. Soluzioni software: proprieta'
di progresso e attesa limitata. Soluzioni hardware: disabilitazione
interruzioni, istruzioni atomiche.
Semafori: definizione,
e realizzazione nel Sistema Operativo; sezione critica a
sincronizzazione tramite semafori; Casi di studio: produttore e
consumatore, filosofi a cena;
Stallo: Definizione;
condizioni necessarie per lo stallo;
I siti Web dei seguenti libri di testo contengono errata-corrige, esercizi, esempi, altro materiale didattico e riferimenti
(Programma del corso per gli anni accademici precedenti)