Next: Laboratorio di Sistemi Operativi
Up: Primo Triennio e Diploma
Previous: Calcolo delle probabilità
  Indice
Il corso è una introduzione ai principi ed al progetto di sistemi
operativi, essenziali per coordinare le attività e le risorse di un
sistema di calcolo. Sono affrontati i principali temi dalle
architetture software alla gestione dei processi e delle risorse (es.
memoria) del sistema. Nel corso di Laboratorio viene studiato un
sistema operativo reale della famiglia UNIX.
Programma del corso:
- Introduzione
- Ruolo del sistema operativo e sua evoluzione. Architettura hardware
di un calcolatore. Architettura software di un calcolatore.
- Gestione dei Processi
- Processi e Thread. Stati dei processi. Cambiamento di contesto.
Creazione e terminazione di processi. Thread a livello utente e a
livello kernel. Cooperazione e comunicazione fra processi: memoria
condivisa, messaggi. Comunicazione diretta ed indiretta.
- Scheduling
- Utilizzazione di risorse in ambiente multiprogrammato. CPU-I/O burst
cycle. Scheduling a lungo, medio, breve termine. Scheduling con
prelazione e cooperativo. Criteri di scheduling. Algoritmi di
scheduling: FCFS, SJF, a priorità, RR, a code multiple e con
feedback. Scheduling per sistemi multiprocessore. Scheduling
real-time. Valutazione degli algoritmi: con modelli
deterministici, probabilistici o simulazione.
- Sincronizzazione fra Processi
- Coerenza di dati condivisi, operazioni atomiche. Sezioni critiche.
Approccio software alla mutua esclusione: algoritmi di Peterson e
Dekker, algoritmo del panettiere. Supporto hardware per la mutua
esclusione: test and set, swap. Costrutti per sincronizzazione:
semafori, semafori binari, mutex, monitor. Deadlock, starvation.
Alcuni problemi tipici di sincronizzazione: produttore/consumatore,
lettori/scrittore, problema dei cinque filosofi.
- Deadlock
- Condizioni per l'innesco di un deadlock. Rappresentazione dello stato
di un sistema con grafi di allocazione. Tecniche di deadlock
prevention. Deadlock avoidance. Algoritmo del banchiere. Deadlock
detection e recovery.
- Gestione della Memoria
- Memoria primaria. Indirizzamento logico e fisico. Rilocazione,
address binding. Swapping. Allocazione contigua della memoria.
Frammentazione interna ed esterna. Paginazione. Supporti hardware
alla paginazione: registri specializzati e TLB. Tabella delle pagine.
Paginazione a piu` livelli. Segmentazione. Tabella dei segmenti.
Segmentazione con paginazione.
- Memoria Virtuale
- Paginazione su richiesta. Gestione di page-fault. Algoritmi di
sostituzione delle pagine: FIFO, ottimale, LRU, approssimazioni LRU.
Buffering di pagine. Allocazione di frames in memoria fisica,
allocazione locale o globale. Thrashing. Località dei riferimenti.
Working set model. Controllo della frequenza di page-fault. Blocco
di pagine in memoria.
- Memoria secondaria
- Struttura logica e fisica dei dischi. Tempo di latenza. Scheduling
del disco: algoritmi FCFS, SSTF, SCAN, C-SCAN, LOOK, C-LOOK. Gestione
della memoria di paginazione. Sistemi di Input/Output Hardware per
I/O. Tecniche di I/O: programmato, con interrupt, con DMA. Device
driver ed interfaccia verso le applicazioni. Servizi di kernel per
I/O: scheduling, buffering, caching, spooling.
- File System
- Concetto di file, attributi ed operazioni relative. Tipi di file.
Accesso sequenziale e diretto. Concetto di directory. Struttura di
directory: ad albero, grafo aciclico, grafo generale. Protezioni
nell'accesso a file. Attributi e modalità di accesso. Semantica
della consistenza. Realizzazione Struttura di un file-system.
Montaggio di file-systems. Metodi di allocazione dello spazio su
disco: contigua, concatenata, indicizzata. Gestione dello spazio
libero su disco: tramite vettore di bit, tramite liste. Realizzazione
delle directory: liste lineari, tabelle hash.
- Sistemi distribuiti e Reti
- Topologia di reti. Reti locali e remote (LAN e WAN).
Comunicazione su rete: risoluzione di nomi, instradamento di
pacchetti, strategie di connessione. Soluzione di contese.
Protocollo di comunicazione: protocolli TCP/IP e UDP/IP. Sistemi
operativi di rete e sistemi operativi distribuiti Servizi di rete:
esempi con telnet e ftp. Sistemi client/server. Comunicazione fra
processi remoti: messaggi, RPC, socket. File system distribuiti
Localizzazione di file. Caching e consistenza. Esempio con NFS:
montaggio di filesystem e accesso ai file. Architettura di NFS.
Protezione e sicurezza (cenni)
Libro di testo: Silberschatz-Galvin, Sistemi Operativi, Quinta ed.,
Addison-Wesley,
1998
Per consultazione: Stallings, Operating Systems: Internals and Design
Principles, Third ed., Prentice Hall, 1998.
Next: Laboratorio di Sistemi Operativi
Up: Primo Triennio e Diploma
Previous: Calcolo delle probabilità
  Indice
Roberto Giacobazzi
1999-07-20