Obiettivi formativi:
Questo insegnamento ha lo scopo di illustrare la struttura di un sistema operativo multiprogrammato e le relative politiche di amministrazione delle risorse computazionali, con particolare riferimento alla schedulazione della CPU e alla gestione della memoria centrale, del file system e dei dispositivi di input/output. |
Settori scientifico-disciplinari:
INF/01, ING-INF/05. |
Crediti:
12. |
Modulo:
Unico. |
Durata:
Annuale, 112 ore (80 di lezione frontale + 32 di esercitazione guidata). |
Frequenza:
Non sono previsti obblighi di frequenza. |
Docente:
Dott. Emanuele Lattanzi. |
Programma:
01. Introduzione: 01.01 Introduzione ai sistemi operativi. 01.02 Strutture dei sistemi operativi. 01.03 Principali funzioni di un sistema operativo. 01.04 Chiamate di sistema. 02. Processi: 02.01 Gestione dei processi. 02.02 Context switch. 02.03 Thread vs. processi. 02.04 Comunicazione tra processi. 03. Sincronizzazione: 03.01 Il problema della sezione critica. 03.02 Strumenti per la sincronizzazione e loro uso. 03.03 Problemi di sincronizzazione e deadlock. 04. Scheduling: 04.01 Concetti fondamentali. 04.02 Politiche di scheduling. 04.02 Scheduling in Linux. 05. Memoria principale: 05.01 Organizzazione della memoria principale. 05.02 Paginazione. 05.03 Struttura della tabella delle pagine. 05.04 Segmentazione. 05.05 Esempi: Pentium Intel, Linux. 06. Memoria virtuale: 06.01 Paginazione su richiesta. 06.02 Sostituzione delle pagine. 06.03 Allocazione dei frame. 06.04 File mappati in memoria. 07. File system: 07.01 Concetto di file system. 07.02 Montaggio, condivisione e protezione. 07.03 Implementazione. 07.04 Metodi di allocazione. 07.04 Gestione dello spazio libero. 08. Sistemi di input/output: 08.01 Polling, interrupt e DMA. 08.02 Dispositivi a caratteri, a blocchi e di rete. 08.03 Interfaccia del kernel per l'I/O. 09. Sistemi distribuiti: 09.01 Sistemi operativi distribuiti. 09.02 Coordinazione distribuita. 10. Protezione e sicurezza: 10.01 Tipi di protezione, domini di protezione e accessi. 10.02 Controllo dell'accesso. 10.03 Protezione basata sul linguaggio. 11. Macchine virtuali: 11.01 Macchine virtuali astratte. 11.02 Macchine virtuali reali. 11.03 Struttura delle macchine virtuali. 11.04 JVM - Java Virtual Machine. 12. Elementi di sistemi real-time: 12.01 Sistemi hard e soft real-time. 12.02 Il kernel dei sistemi operativi real-time. 12.03 Algoritmi di scheduling. 13. Attività di laboratorio: 13.01 Gestione dei processi nei sistemi UNIX-like. 13.02 Gestione dei thread nei sistemi UNIX-like. 13.03 Introduzione alla programmazione Java. 13.04 Gestione dei thread in Java. 13.05 Strumenti per la sincronizzazione dei thread in Java. |
Testi di riferimento:
|
Propedeuticità:
Programmazione degli Elaboratori, Architettura degli Elaboratori, Algoritmi e Strutture Dati. |
Modalità didattiche:
Lezioni frontali ed esercitazioni di laboratorio. |
Modalità di accertamento:
Prova scritta, progetto individuale e prova orale. |
Commissione d'esame:
Dott. Emanuele Lattanzi e Prof. Alessandro Bogliolo (supplente: Prof. Marco Bernardo). |
Note:
La prova scritta viene valutata in trentesimi ed è ritenuta sufficiente se il relativo voto, che
rimane valido per tutti gli appelli dell'a.a. in cui la prova viene sostenuta, è di almeno 18/30. Il progetto, da svolgere individualmente su un tema concordato con il docente, deve essere consegnato almeno una settimana prima della prova orale e il relativo esito rimane valido per tutti gli appelli dell'a.a. in cui il progetto viene consegnato. La prova orale può essere sostenuta solo previo superamento delle altre due prove e comprende una discussione del progetto. Se sufficiente, l'esito della prova orale, assieme a quello del progetto, comporta un aggiustamento per eccesso o per difetto di al più 10/30 del voto della prova scritta, determinando così il voto finale. |
Ultima modifica: 04/06/2010 | Approvato da: Presidente CCdL |