next up previous contents
Next: Laboratorio di Sistemi Operativi Up: Primo Triennio e Diploma Previous: Calcolo delle probabilità   Indice

Sistemi operativi

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 up previous contents
Next: Laboratorio di Sistemi Operativi Up: Primo Triennio e Diploma Previous: Calcolo delle probabilità   Indice
Roberto Giacobazzi
1999-07-20