Questa è la pagina archiviata del corso di Sistemi Operativi (A-L) per Informatica (primo livello) per l’a.a. 2021-2022. La pagina non è più aggiornata.
Informazioni generali
CFU: 9
ore: 72
anno: 2°
semestre: 2°
inizio lezioni: 8 Marzo 2022
modalità: presenza (mista fino al 31/03/22)aula: 24
canale Teams: i412gv5 (A-L), qlxao81 (M-Z)
orario: 10-13
giorni: martedì – giovedì
requisiti: basi di programmazione, conoscenza dell’architettura di un calcolatore
propedeuticità: Architettura degli Elaboratori, Programmazione 1
docente: Prof. Mario Di Raimondo (A-L) / Prof. Mario Pavone (M-Z)
frequenza: non obbligatoria ma fortemente consigliata
Obiettivi
Il corso propone una completa introduzione alle problematiche relative alla progettazione dei moderni sistemi operativi. La parte teorica è integrata con riferimenti concreti ai sistemi operativi contemporanei ed è prevista una parte di laboratorio in cui sono curati gli aspetti implementativi attinenti il corso.
Obiettivi formativi
Programma
- Introduzione al concetto di sistema operativo
- Richiami sull’architettura degli elaboratori
- Struttura di un sistema operativo
- I processi: definizione, multiprogrammazione, stati e transizioni
- I thread: definizione, modelli utilizzabili; programmazione multicore
- Sezioni critiche e mutua esclusione: variabili di lock, alternanza stretta, soluzione di Peterson, istruzioni TSL/XCHG, semafori, mutex lock in spazio utente, futex, monitor, messaggi tra processi
- Problema dei 5 filosofi e dei lettori-scrittori (soluzioni basate su semafori e monitor)
- Scheduling: scheduler e dispatcher
- Algoritmi di scheduling: progettazione, FCFS, SJF, SRTN, RR, a priorità, con code multiple, SPN, garantito, a lotteria, fair-share
- Scheduling dei thread e su sistemi multi-processore
- Gestione della memoria per la multi-programmazione: swapping, rilocazione, gestione dello spazio libero
- Memoria virtuale: paginazione, tabella delle pagine, uso di memoria associativa, varianti multi-livello, tabella delle pagine invertita, conseguenze sulla cache
- Algoritmi di sostituzione delle pagine: progettazione, ottimale, NRU, FIFO, seconda chance, clock, LRU, NFU, aging; anomalia di Belady
- Altri aspetti legati alla gestione della memoria: allocazione dei frame, working set, controllo del carico, dimensione delle pagine, condivisione delle pagine, copy-on-write, zero-fill-on-demand, librerie condivise, mappatura di file, allocazione della memoria del kernel (buddy system, slab allocator)
- File-system: astrazione, file, directory
- Progettazione di un file-system: allocazione dei file (contigua, concatenata, tabellare e indicizzata), directory, hard/soft-link, gestione blocchi liberi (con bitmap e con lista concatenata)
- Altri aspetti tecnici sui file-system: controlli di consistenza, journaling; cache del disco, deframmentazione
- Scheduling del disco e relativi algoritmi: FCFS, SSTF, SCAN, C-SCAN, LOOK, C-LOOK
- Sistemi RAID: principi di base, RAID-[0,1,2,3,4,5]
- Memorie flash, dischi a stato solido (SSD) e implicazioni sui file system
- Tutorial sull’uso della shell UNIX
- Programmazione in ambienti UNIX:
- L’uso delle chiamate di sistema
- Gestione dell’I/O su file e chiamate di servizio relative al file-system e alla mappatura dei file in memoria
- Gestione dei processi: creazione, coordinamento, esecuzione di comandi esterni
- Chiamate per la comunicazione tra processi tramite pipe e FIFO
- Chiamate per la comunicazione tra processi tramite messaggi
- Chiamate per la gestione della memoria condivisa tra i processi
- Chiamate per la gestione dei semafori
- Segnali sui sistemi UNIX (accenno)
Il programma delinea in modo generico i contenuti trattati durante il corso: per ulteriori dettagli è possibile consultare le diapositive usate durante le lezioni. Tutto ciò che è stato esposto a lezione, ad eccezione dei contenuti del tutorial sulla shell UNIX, sarà oggetto di valutazione durante l’esame.
Tutti i contenuti NON sottolineati sono da intendersi come facenti parte delle conoscenze minime richieste per il superamento dell’esame.
Risorse
Il materiale didattico utilizzato nell’a.a. passato è riconoscibile dal link barrato: durante l’anno questo potrebbe subire modifiche e aggiornamenti. Il materiale aggiornato che verrà man mano pubblicato sarà riconoscibile dal link non barrato.
I moderni sistemi operativi (quarta edizione)
autori: Andrew S. Tanenbaum, Herbert Bos
casa editrice: Pearson
anno di pubblicazione: 2016
ISBN: 9788891912695
Sistemi operativi – Concetti ed esempi (nona edizione)
autori: Abraham Silberschatz, Peter Baer Galvin, Greg Gagne
casa editrice: Pearson
anno di pubblicazione: 2014
ISBN: 9788865183717
Tutti i testi sono disponibili presso la biblioteca del DMI.
Le proiezioni viste a lezioni sono disponibili sul repository GIT pubblico del corso.
Gli esempi di laboratorio visti a lezioni sono disponibili sul repository GIT pubblico del corso.
Sono anche disponibili alcuni esempi e compiti di laboratorio svolti nell’ambito delle attività di tutorato del corso. Tali codici non sono però stati revisionati dai docenti del corso.
Gli esercizi proposti durante le lezioni e il tutorato sono disponibili sul repository GIT pubblico del corso.
I compiti passati di laboratorio disponibili sul repository GIT pubblico del corso.
- Lo scheduler Completely Fair Scheduler (CFS) di Linux: articolo
- Mac OS X: scheduler, file-system APFS
- I filesystem di Linux: sintesi delle novità in ext4, articolo su ext4, struttura di un fs BTRFS
- Manuale completo sul linguaggio C: Tricky C
- Guida completa ed avanzata per la programmazione script: Advanced Bash-Scripting Guide
- Guida completa ed avanzata per la programmazione in Linux: GaPiL
- Memorie NAND e dischi SSD: articolo
Esame
L’esame finale prevede, esattamente in quest’ordine, le seguenti prove da superare:
- prova di teoria: si tratta di un questionario, con risposte a scelta multipla e/o aperte, su argomenti relativi alla teoria ed esercizi; superato questo si sosterrà un colloquio orale sugli stessi argomenti;
- prova pratica di laboratorio: si tratta di una sessione di laboratorio in cui lo studente dovrà scrivere un programma in linguaggio C che risolva un problema proposto facendo uso dei costrutti e delle chiamate di sistema UNIX viste a lezione; si lavorerà in un ambiente ad-hoc in cui sarà possibile consultare solo la documentazione di sistema e le proiezioni viste a lezione.
La prova scritta riceverà un voto in trentesimi: ottenuti almeno 18/30 si sosterrà l’orale che, con un limitato aggiustamento, porterà alla valutazione finale della parte teorica; la prova di laboratorio avrà un proprio voto in trentesimi. Il voto finale si baserà sulla media pesata dei voti ottenuti nelle due parti del programma (65{96b1e551c0eb6b8642c23002f9641c21addce7adddff4232ab77094dde67ad16} teoria, 35{96b1e551c0eb6b8642c23002f9641c21addce7adddff4232ab77094dde67ad16} laboratorio): l’esatto arrotondamento e l’eventuale assegnazione della lode rimane a completa discrezione della commissione.
La prova scritta e il colloquio orale vanno superati nell’ambito dello stesso appello (comunque in giorni diversi per i tempi tecnici di correzione); la prova pratica, in genere fissata in una terza data, può essere sostenuta subito dopo o anche in un appello successivo. E’ pertanto possibile superare tutte le prove nell’ambito di un unico appello ufficiale o decidere di sostenerle a cavallo di appelli distinti (scritto+orale in un appello, laboratorio in un altro). Il voto sulla parte di teoria, se non completato con il laboratorio, avrà comunque una scadenza: Maggio 2023. Superata la teoria (scritto+orale), se lo studente è insoddisfatto del voto ricevuto per il laboratorio, può ripetere quest’ultima prova in un appello successivo mantenendo la votazione sulla teoria.
Per poter sostenere una qualunque prova in un dato appello è obbligatorio prenotarsi sul portale SmartEdu, indicando le prove da sostenere nel campo note (teoria e/o laboratorio). Se si sostengono le prove in appelli distinti, è necessario prenotarsi ad ogni appello. In caso di assenza per cause di forza maggiore lo studente deve avvisare il docente il prima possibile. In caso di mancata comunicazione, l’assenza verrà regolarmente verbalizzata sul portale d’Ateneo.
Nella data dell’appello riportata sul calendario esami si terrà sempre la prova di teoria; la prova orale si terrà qualche giorno dopo (da 1 a 5 giorni, in base al numero di elaborati da correggere) e la data esatta, unitamente a quella della prova di laboratorio, sarà comunicata successivamente allo scritto con un apposito avviso.
Gli studenti ERASMUS stranieri in visita presso il nostro Ateneo, tenendo conto delle difficoltà linguistiche e dei ristretti periodi di permanenza, possono superare l’esame sostenendo direttamente il colloquio orale sulla teoria (senza scritto) e, superato questo, la prova pratica in laboratorio (anche in appelli distinti). Il colloquio, su richiesta, si potrà sostenere anche in lingua Inglese.