Ti trovi qui: Home » Didattica » Insegnamento: Progettazione di Sistemi Operativi

Insegnamento: Progettazione di Sistemi Operativi (Offerta Formativa a.a. 2017/2018)

Corso di studio: Corso di Laurea Magistrale in Ingegneria Informatica (D.M.270/04)

CFU9
Moduli

Modulo: Progettazione di Sistemi Operativi
TAF: Caratterizzante; SSD: ING-INF/05; Ambito: Ingegneria informatica
Docenti: Nicola BICOCCHI, Letizia LEONARDI

Dolly Accedi ai dati dell'insegnamento su Dolly
Orario Lezioni Accedi all'orario settimanale dell'insegnamento
Propedeuticità obbligatorie
Modalità di accertamento del profitto Scritto
Modalità di valutazione Voto
Esse3 Accedi ai dati dell'insegnamento su Esse3
Lingua di insegnamento

Italiano

Partizionamento studenti

Nessun partizionamento

Obiettivi

L'obiettivo del corso è di far raggiungere allo studente una buona conoscenza e capacità di comprensione di ogni livello/gestore di cui si compone un Sistema Operativo allo scopo di poter capire le problematiche di progettazione di un Sistema Operativo sia riguardo ai meccanismi di funzionamento che alle relative politiche. L'applicazione di queste conoscenze riguarda gli aspetti di progettazione di un Sistema Operativo ispirato a UNIX.
Questo corso rappresenta il completamento delle conoscenze rispetto al corso di Sistemi Operativi della Laurea triennale.

Prerequisiti

Non esistono propedeuticità obbligatorie. Agli studenti non laureati in Ingegneria Informatica presso la nostra sede, si consiglia di accertarsi di avere come conoscenze pregresse quella derivanti dagli esami di Sistemi Operativi e Laboratorio di Sistemi Operativi (della Laurea D.M. 509) o di Sistemi Operativi e Lab. (della Laurea D.M. 270).

Contenuti

Gli argomenti teorici che verranno affrontati saranno:
1) Generalità sui Sistemi Operativi
Evoluzione storica: dai primi sistemi ai moderni sistemi operativi.
Classificazione dei Sistemi Operativi: sistemi mono- e multi-utente, sistemi batch e interattivi, sistemi in time-sharing e real-time.
Elementi di base di un Sistema Operativo: punto di vista esterno (utente o programmatore di sistema) e punto di vista interno.
2) Sistema Operativo come insieme di gestori delle risorse. In particolare:
a) Gestione della CPU
Punto di vista esterno - tecniche di programmazione concorrente: modelli dei processi ad ambiente globale e ad ambiente locale; strumenti per la sincronizzazione di processi in ambiente globale (semafori, monitor, etc.) e locale (scambio di messaggi, RPC, etc.).
Punto di vista interno - progettazione del nucleo: strutture dati e primitive; progettazione di algoritmi di scheduling; soluzioni al problema del blocco dei processi (deadlock).
b) Gestione della memoria
Punto di vista esterno - programmi: assoluti, rilocabili staticamente, rilocabili dinamicamente.
Punto di vista interno - progettazione dei metodi di allocazione: contigua (partizionamento statico e dinamico); swapping; segmentazione; non contigua (paginazione); gestione della memoria virtuale.
c) Gestione del File System
Punto di vista esterno - organizzazione logica dei direttori e proprietà dei file; livello di programmazione.
Punto di vista interno - progettazione dell'allocazione fisica in memoria secondaria: metodo contiguo; metodi non contigui (concatenamento e indicizzazione).
Quando necessario, questi argomenti saranno esemplificati rivedendone l'implementazione in UNIX/Linux.

Gli argomenti pratici che verranno affrontati in questo insegnamento saranno svolti utilizzando il linguaggio di programmazione C utilizzato per la progettazione del Sistema Operativo xv6 (a simple, Unix-like teaching operating system).

Metodi didattici

La metodologia didattica utilizzata per l’insegnamento si compone sia di lezioni frontali in aula e sia di esercitazioni pratiche in laboratorio: la percentuale di ore di lezioni in aula è 2/3 delle ore totali e quella di lezioni in laboratorio è 1/3. Le lezioni in aula affrontano, con l’ausilio di lucidi (forniti preventivamente agli studenti), sia gli aspetti teorici che progettuali/realizzativi dei sistemi operativi. Le esercitazioni, che si svolgono in un laboratorio informatico, utilizzando il sistema operativo xv6, sono parte integrante dell’insegnamento e consentono agli studenti di esercitarsi individualmente nella progettazione di un sistema operativo. Sulla pagina Web (gestita direttamente dal docente) gli studenti possono trovare i file pdf dei lucidi (protetti da password di lettura che verrà comunicata agli studenti nella prima lezione) e informazioni sul sistema operativo xv6.

Verifica dell'apprendimento

L'esame si compone di una prova orale e da una tesina facoltativa che, nel caso, deve essere discussa con il Prof. Bicocchi prima della prova orale. Nel caso uno studente abbia deciso di presentare una tesina al Prof. Bicocchi, la prova orale può essere sostenuta solo dopo aver discusso tale tesina. Una volta sostenuta la prova orale, NON sarà possibile presentare alcuna tesina. La prova orale spazia su tutto il programma che verrà svolto: come case-studies verrà fatto riferimento sia al Sistema Operativo UNIX/Linux che al Sistema xv6. In particolare, l'orale prevede -in una prima fase- la somministrazione di un test a domande chiuse e aperte preparato per ogni studente, che tende a coprire tutti gli argomenti del programma; quindi -nella seconda fase- di solito prendendo spunto dalle risposte del test, si passa ad approfondire alcuni argomenti per arrivare al voto dell'orale. Il voto della prova orale è espresso in trentesimi e può arrivare ad un massimo di 33/30 (a seconda della difficoltà delle domande proposte). Tale voto potrà essere incrementato di un valore da 1-4 punti nel caso di svolgimento e discussione della tesina facoltativa secondo quanto sotto illustrato. La tesina è facoltativa. L'argomento della eventuale tesina va concordato con il Prof. Bicocchi e avrà come ambito quello del Sistema xv6. La discussione della tesina deve avvenire prima della prova orale: il voto preso dallo studente nella tesina influirà sul voto finale andando ad incrementare il voto della prova orale di un valore che dipende dal seguente schema: - se il voto della tesina è compreso fra 18 e 21 l'incremento sarà di 1 punti; - se il voto della tesina è compreso fra 22 e 25 l'incremento sarà di 2 punti; - se il voto della tesina è compreso fra 26 e 28 l'incremento sarà di 3 punti; - se il voto della tesina è compreso fra 29 e 30L l'incremento sarà di 4 punti.

Risultati attesi

Conoscenza e comprensione - Conoscere e comprendere ogni livello/gestore di cui si compone un Sistema Operativo a livello di meccanismi di funzionamento e delle relative politiche. Capacità di applicare conoscenza e comprensione - Sapere identificare le varie funzionalità di un Sistema Operativo, sapere valutare le scelte più opportune in base al suo utilizzo e sapere progettare i vari gestori di cui si compone un sistema operativo. Autonomia di giudizio - autonomia di giudizio nell'analizzare e progettare sistemi complessi, valutando l'impatto delle soluzioni informatiche nel contesto applicativo, sia relativamente agli aspetti tecnici che agli aspetti organizzativi e dimostrando di partecipare attivamente al processo decisionale in contesti anche interdisciplinari. - autonomia di giudizio nel valutare le implicazioni economiche, sociali ed etiche associate alle soluzioni individuate. Abilità comunicative - interagire efficacemente con interlocutori sia non specialisti che specialisti di diversi settori applicativi al fine di comprenderne le specifiche esigenze per la realizzazione di sistemi complessi; - descrivere a tali interlocutori in modo chiaro e comprensibile informazioni, idee, problemi e soluzioni oltre che aspetti tecnici. Capacità di apprendimento - capacità di apprendimento che consente di affrontare in modo efficace le mutevoli problematiche lavorative connesse con l'innovazione propria dell'area dell'Ingegneria Informatica; - capacità di riconoscere la necessità di apprendimento autonomo durante tutto l'arco della vita, dato l'elevato tasso di innovazione tecnologica e metodologica nell'area dell'Ingegneria Informatica; - capacità di acquisire in modo autonomo nuove conoscenze specialistiche dalla letteratura scientifica e tecnica del settore, sia nell'ambito delle tematiche approfondite nel proprio percorso formativo, sia in altri ambiti dell'Ingegneria Informatica.

Testi

I lucidi della parte teorica sono disponibili via WEB alla URL: http://www.agentgroup.ing.unimo.it/wiki/index.php/Principi_di_Sistemi_Operativi_-_LM

Testi di riferimento possono essere:

J. Peterson, A. Silberschatz: "Operating System Concepts", Addison Wesley, 1990 (anche versione italiana: SILBERSCHATZ A., GALVIN P., G. GAGNE: "Sistemi Operativi: concetti ed esempi - sesta edizione", Casa Editrice Addison-Wesley, 2002).

M. Milenkovic: "Sistemi Operativi", McGraw-Hill, 1990.

Per il sistema operativo xv6 si faccia riferimento alla documentazione online https://pdos.csail.mit.edu/6.828/2016/overview.html

Docenti

Nicola BICOCCHI
Letizia LEONARDI