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. |
Settore scientifico-disciplinare:
ING-INF/05. |
Crediti:
12. |
Modulo:
Unico. |
Durata:
Annuale, 120 ore (72 di lezione teorica + 48 di esercitazione guidata). |
Frequenza:
Consigliata, ma non obbligatoria. |
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 Criteri di scheduling. 04.03 Algoritmi di scheduling. 04.04 Scheduling dei thread. 05. Scheduling in Linux: 05.01 Process descriptor. 05.02 Caratteristiche principali. 05.03 Lo scheduler 2.4.x. 05.04 Lo scheduler 2.6.x. 05.05 Lo scheduler SMP. 06. Memoria principale: 06.01 Organizzazione della memoria principale. 06.02 Paginazione. 06.03 Struttura della tabella delle pagine. 06.04 Segmentazione. 06.05 Esempi: Pentium Intel, Linux. 07. Memoria virtuale: 07.01 Paginazione su richiesta. 07.02 Sostituzione delle pagine. 07.03 Allocazione dei frame. 07.04 File mappati in memoria. 08. File system: 08.01 Concetto di file system. 08.02 Montaggio, condivisione e protezione. 08.03 Implementazione. 08.04 Metodi di allocazione. 08.05 Gestione dello spazio libero. 09. Dischi magnetici: 09.01 Struttura del disco. 09.02 Performance dei dischi. 09.03 Algoritmi di scheduling. 10. Sistemi di input/output: 10.01 Polling, interrupt e DMA. 10.02 Dispositivi a caratteri, a blocchi e di rete. 10.03 Interfaccia del kernel per l'I/O. 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. Il sistema operativo Android: 12.01 Struttura. 12.02 La Virtual Machine Dalvik. 12.03 Applicazioni. 12.04 Message passing: Intents. 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 Procedurale e Logica, Architettura degli Elaboratori, Algoritmi e Strutture Dati. |
Modalità didattiche:
Lezioni teoriche ed esercitazioni guidate in 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'anno accademico 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'anno accademico 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: 09/10/2012 | Approvato da: Presidente CCdL |