Questa pagina fornisce il materiale didattico e le informazioni relative all'insegnamento di Progettazione di Sistemi Operativi (9 CFU) per il Corso di Laurea Magistrale in Ingegneria Informatica, obbligatorio dall'A.A. 2019-20 per il curriculum Cyber systems (invece negli A.A. 2017-18, anno di attivazione, e 2018-19, era obbligatorio per il curriculum Data Engineering and Analytics).
Questo materiale didattico per una buona parte deriva da quello dell'insegnamento di Principi di Sistemi che fino all'A.A. 2016-17 era attivo al I anno della Laurea Magistrale.
Contents
News
Per la prima settimana di lezione, nelle due ore di Giovedì (19/09/2019) verrà svolta lezione invece che esercitazioni.
Per delibera del Consiglio dei Corsi di Studio di Ingegneria Informatica è stata stabilita una corrispondenza ore/CFU di 8 ore per CFU e non più 9 come in precedenza: quindi per questo insegnamento le ore minime di esercitazioni per 3 CFU del Prof. Bicocchi corrispondono a 24 ore, mentre le ore minime di lezione per 6 CFU corrispondono a 48 ore.
Informazioni sul docente
Stanza: MO-27-01-019, primo piano, Edificio 27, Dipartimento di Ingegneria "Enzo Ferrari" (Università di Modena e Reggio Emilia)
Via P. Vivarelli 10, 41125 MODENA
Telefono 0592056135 - Fax 0592056129
Orario di ricevimento: Lunedì dalle 15 alle 17 (di norma, per eventuali modifiche consultare la pagina)
Orario delle Lezioni
Le lezioni di questo insegnamento sono collocate nel I semestre e per l'A.A. 2019-20 avranno inizio Lunedì 16 Settembre 2019.
L'orario delle lezioni è disponibile sul sito di Ingegneria e in particolare quelle di Progettazione di Sistemi Operativi si trova qui.
Qui di seguito si riporta, comunque, per comodità l'orario:
Lunedì |
ore 11-13 (lezione) |
aula P2.1 (FA-2A) (Ingegneria) |
Mercoledì |
ore 11-13 (lezione) |
aula P1.5 (Fa-1E) (Ingegneria) |
Giovedì |
ore 11-13 (esercitazione) |
Lab. P2.5 (FA-2E) (Ingegneria) |
NOTE ALL'ORARIO:
Per la prima settimana di lezione, nelle due ore di Giovedì (19/09/2019) verrà svolta lezione invece che esercitazioni.
Obiettivi dell'Insegnamento
L'obiettivo dell'insegnamento è 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 insegnamento rappresenta il completamento delle conoscenze rispetto all'insegnamento di Sistemi Operativi della Laurea triennale.
Programma dell'Insegnamento
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).
Registro delle lezioni
Dopo ogni lezione/esecitazione verrà compilato il registro con l'indicazione degli argomenti trattati.
Per l'A.A. corrente 2019-20 il registro si trova al link.
I registri relativi agli anni accademici precedenti sono accessibili ai seguenti link:
Modalità d'esame
L'esame si compone di una prova orale e da una tesina facoltativa che, nel caso, deve essere presentata e discussa con il Prof. Bicocchi prima della prova orale (ENTRO LA SCADENZA DELL'ISCRIZIONE ALLA PROVA ORALE). Per maggiori dettagli, vedere il seguito di questa pagina.
Prova orale (AGGIORNATE REGOLE DALL'A.A. 2019-20)
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.
Il voto della prova orale è espresso in trentesimi e può arrivare ad un massimo di 27/30. 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.
Per l'iscrizione alla prova orale, di norma, viene inserito un appello su ESSE3, altrimenti inviare una email al docente per avere informazioni.
Tesina
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 (ENTRO LA SCADENZA DELL'ISCRIZIONE ALLA PROVA ORALE): il voto preso dallo studente nella tesina influirà sul voto finale andando ad incrementare il voto della prova orale di un valore da 1 a 4 punti.
Note sugli esami
- Si ricorda che l'eventuale tesina va discussa prima di poter sostenere la prova orale.
- Il voto della eventuale tesina ha, di norma, una validità di sei mesi.
- Per arrivare al massimo punteggio (30L/30) lo studente deve ottenere il punteggio massimo sia all'orale che nella tesina.
Appelli
Date
NOTA DEL 13/12/2018
Si segnala che d'accordo con gli studenti frequentanti nell'A.A. 2018-19 è stato deciso di NON fissare delle date per tutto l'A.A. ma di concordarle volta per volta. Per la sessione di esami di Gennaio-Febbraio 2019, si comunica che il 25/11/2018 è stata fissata la seguente data:
1) Mer. 23/01/2019, con iscrizioni fino a Dom. 20/01/2019;
Potranno essere fissate altre date su richiesta.
Consigli Utili
Per superare agevolmente la prova orale si consiglia agli studenti di seguire con continuità le lezioni e le esercitazioni in laboratorio e non limitarsi a studiare pedissequamente i lucidi o i testi consigliati, ma di sforzarsi di creare i collegamenti mentali necessari per avere una visione di insieme di ogni argomento.
Testi Consigliati
Materiale come le slide utilizzate alezione sono disponibili in questa pagina.
Comunque, 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.
P. Ancilotti, M. Boari: "Principi e Tecniche di Programmazione Concorrente", UTET, 1988.
Il materiale usato durante le esecitazioni in laboratorio e per la preparazione della tesina può essere reperito qui.
Slide dell'Insegnamento
Sono disponibili i lucidi in formato PDF usati durante le lezioni di teoria sui seguenti argomenti che necessitano tutti, a parte il primo file, di password di lettura (tale password sarà comunicata durante la prima lezione):
- Programma del corso e modalità di esame
- Slide introduttive sui Sistemi Operativi: evoluzione e categorizzazione dei Sistemi Operativi (aggiornato 18/09/2019 ore 15,50)
- Slide sui processi: generalità (aggiornato 18/09/2019 ore 19,45)
- Slide sui processi: interazione fra processi (aggiornato 25/09/2019 ore 9,50)
- Slide sui processi: esempi di uso dei semafori
- Slide sui processi: processi cooperanti in ambiente globale
- Slide sui processi: costrutti di sincronizzazione in ambiente globale (aggiornato 30/09/2019 ore 14,30); se interessati, si veda anche Slide su altri costrutti di sincronizzazione
- Slide su processi in ambiente Locale: processi comunicanti in ambiente locale (aggiornato 8/10/2018 ore 8,50)
- Slide sul Nucleo (aggiornato 21/10/2019 ore 14,15)
- Slide sul Nucleo bis: Scheduler (aggiornato 22/10/2018 ore 09,50)
- Slide sul deadlock (aggiornato 28/10/2018 ore 19,45)
- Slide sulla Gestione della Memoria: metodi di allocazione contigua (aggiornato 14/11/2018 ore 14,55)
- Slide sulla Gestione della Memoria: metodi di allocazione non contigua (aggiornato 14/11/2018 ore 14,55); se interessati, si veda anche Lucidi su gestione memoria in architetture Intel a 32/64 bit e nell’architettura ARM (tratti da cap. 8- Operating System Concepts – 9th Edition, Silberschatz, Galvin and Gagne ©2013)
- Slide sulla Gestione della Memoria Virtuale (aggiornato 26/11/2018 ore 16,30)
- Slide sulla Gestione dei file: livello logico (aggiornato 13/12/2018 ore 10,40); se interessati, si veda anche Slide su gestione dispositivi di memorizzazione (da Operating System Concepts – 9th Edition -cap.10, Silberschatz, Galvin and Gagne ©2013)
- Slide sulla Gestione dei file: livello fisico (aggiornato 13/12/2018 ore 10,00); se interessati, si veda anche Slide su Network File System (NFS) (da Operating System Concepts – 9th Edition -cap.12, Silberschatz, Galvin and Gagne ©2013)
Inoltre sono disponibili le Slide sulla sicurezza degli studenti.
Per le esercitazioni di laboratorio si faccia riferimento al materiale che verrà collocato alla URL.
Si avvisano inoltre gli studenti che alla URL posso essere consultate alcuni elaborati triennali su tematiche relative in particolare a UNIX e/o Linux.
Strumenti Software
Gli strumenti software che si utilizzano durante le esercitazioni in laboratorio sono reperirli alla URL.