SISTEMI OPERATIVI M - Z
Anno accademico 2023/2024 - Docente: MARIO FRANCESCO PAVONERisultati di apprendimento attesi
- Conoscenza e capacità di comprensione (knowledge and understanding): lo studente sarà in grado di comprendere problematiche quali l’organizzazione di un sistema di calcolo moderno, la gestione delle risorse di un sistema di calcolo (memoria, CPU, dispositivi esterni), e la gestione e la sincronizzazione dei processi e dei thread in un sistema multiprogrammato e a condivisione del tempo. Tramite lo studio del kernel del sistema operativo Linux lo studente avrà una conoscenza pratica delle più moderne tecniche nel campo dei sistemi operativi.
- Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): lo studente sarà in grado di utilizzare le metodologie apprese per analizzare le prestazioni di un sistema operativo in un particolare contesto applicativo; saprà formulare alternative o proporre soluzioni originali a problemi legati al funzionamento dei sistemi di calcolo complessi; saprà porre e sostenere argomentazioni nell’ambito dei sistemi operativi, evidenziando vantaggi e svantaggi di particolari soluzioni implementative; infine, grazie alle conoscenze acquisite nella parte di laboratorio, potrà operare attivamente su un sistema operativo UNIX-like attraverso la shell di comando e, dal punto di vista della programmazione, attraverso le chiamate di sistema POSIX.
- Autonomia di giudizio (making judgements): lo studente sarà in grado di seguire i trend moderni nell’ambito della progettazione di sistemi operativi; sarà in grado di raccogliere i dati necessari alla valutazione delle prestazioni di un particolare sistema operativo, e di interpretare i risultati della valutazione; infine, sarà in grado di elaborare i requisiti necessari alla progettazione di un nuovo sistema operativo, e di valutare l’efficacia di diverse soluzioni alternative.
- Abilità comunicative (communication skills): lo studente acquisirà la capacità di comunicare ed esprimere problematiche inerenti l’oggetto del corso; sarà in grado di sostenere conversazioni su tematiche relative ai moderni sistemi operativi, di confrontare diversi sistemi operativi, e di offrire possibili soluzioni.
- Capacità di apprendimento (learning skills): lo studente avrà appreso le interazioni tra le tematiche dei sistemi operativi, della progettazione software, e dell’importanza di adeguati supporti hardware e questo gli consentirà di proseguire gli studi universitari con un elevato grado di autonomia.
Modalità di svolgimento dell'insegnamento
Lezioni frontali in aula su argomenti di teoria e su sviluppo codice per la parte di laboratorio.
Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.
Prerequisiti richiesti
requisiti: basi di programmazione, conoscenza dell'architettura di un calcolatore
propedeuticità: Architettura degli Elaboratori, Programmazione 1
Frequenza lezioni
Contenuti del corso
Testi di riferimento
Autore | Titolo | Editore | Anno | ISBN |
Andrew S. Tanenbaum, Herbert Bos | I moderni sistemi operativi (quinta edizione) | Pearson | 2023 | 9788891912695 |
Abraham Silberschatz, Peter Baer Galvin, Greg Gagne | Sistemi operativi – Concetti ed esempi (nona edizione) | Pearson | 2014 | 9788865183717 |
Programmazione del corso
Argomenti | Riferimenti testi | |
---|---|---|
1 | Teoria: | |
2 | Introduzione al concetto di sistema operativo | cap.1 di [TB], cap.1 di [SGG] |
3 | Richiami aull'architettura degli elaboratori | cap.1 di [TB], cap.1 di [SGG] |
4 | Struttura di un sistema operativo | cap.1 di [TB], cap.2 di [SGG] |
5 | I processi: definizione, multiprogrammazione, stati e transizioni | cap.2 di [TB], cap.3,4 di [SGG] |
6 | I thread: definizione, modelli utilizzabili; programmazione multicore | cap.2 di [TB], cap.4 di [SGG] |
7 | 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 | cap.2 di [TB], cap.6 di [SGG] |
8 | Problema dei 5 filosofi e dei lettori-scrittori (soluzioni basate su semafori e monitor) | cap.2 di [TB], cap.6 di [SGG] |
9 | Scheduling: scheduler e dispatcher | cap.2 di [TB], cap.5 di [SGG] |
10 | Algoritmi di scheduling: progettazione, FCFS, SJF, SRTN, RR, a priorità, con code multiple, SPN, garantito, a lotteria, fair-share | cap.2 di [TB], cap.5 di [SGG] |
11 | Scheduling dei thread e su sistemi multi-processore | cap.2 di [TB], cap.5 di [SGG] |
12 | Gestione della memoria per la multi-programmazione: swapping, rilocazione, gestione dello spazio libero | cap.3 di [TB], cap.8 di [SGG] |
13 | Memoria virtuale: paginazione, tabella delle pagine, uso di memoria associativa, varianti multi-livello, tabella delle pagine invertita, conseguenze sulla cache | cap.3 di [TB], cap.8 di [SGG] |
14 | Algoritmi di sostituzione delle pagine: progettazione, ottimale, NRU, FIFO, seconda chance, clock, LRU, NFU, aging; anomalia di Belady | cap.3 di [TB], cap.9 di [SGG] |
15 | 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 | cap.3 di [TB], cap.9 di [SGG] |
16 | File-system: astrazione, file, directory | cap.4 di [TB], cap.10 di [SGG] |
17 | 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) | cap.4 di [TB], cap.11 di [SGG] |
18 | Altri aspetti tecnici sui file-system: controlli di consistenza, journaling, deframmentazione | cap.4 di [TB], cap.11 di [SGG] |
19 | Accenni sui file-system storici e contemporanei: FAT-[12,16,32,64], NTFS, ext-[2,3,4], BTRFS | cap.4,10,11 di [TB], cap.21,22 di [SGG] |
20 | Scheduling del disco e relativi algoritmi: FCFS, SSTF, SCAN, C-SCAN, LOOK, C-LOOK | cap.5 di [TB], cap.12 di [SGG] |
21 | Sistemi RAID: principi di base, RAID-[0,1,2,3,4,5] | cap.5 di [TB], cap.12 di [SGG] |
22 | Memorie flash, dischi a stato solido (SSD) e implicazioni sui file system | risorse esterne |
23 | Laboratorio: | risorse esterne, man page |
24 | Gestione dell'I/O su file, chiamate di servizio relative al file-system e alla mappatura dei file in memoria | |
25 | Gestione dei processi e dei thread: creazione e coordinamento tramite attesa | |
26 | Coordinamento tramite mutex/lock, semafori contatori e variabili condizione (in stile monitor) e lock per reader/writer | |
27 | Accenno ai segnali sui sistemi UNIX |
Verifica dell'apprendimento
Modalità di verifica dell'apprendimento
L'esame è composto da due prove da superare in ordine eventualmente su appelli diversi:
- prova di teoria: prevede, nell'ambito di un unico appello, una prova scritta o a computer seguita da un colloquio orale sulla parte di teoria del programma;
- prova pratica di laboratorio: superata la teoria, prevede una sessione in 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.
Verificare tutti i dettagli sulla modalità di prenotazione sul sito del corso (homepage docente).
- Non approvato: lo studente non ha acquisito i concetti di base e non è in grado di rispondere ad almeno il 60% delle domande né di svolgere gli esercizi teorici e pratici.
- 18-20: lo studente dimostra una padronanza appena sufficiente dei concetti base, e/o riesce ad impostare gli esercizi teorico/pratici con molta difficoltà e con vari errori.
- 21-24: lo studente dimostra una padronanza minima dei concetti di base, le sue capacità di collegamento dei contenuti sono modeste, riesce a risolvere semplici esercizi.
- 25-27: lo studente dimostra una buona padronanza dei contenuti del corso, le sue capacità di collegamento dei contenuti sono buone, risolve gli esercizi con pochi errori.
- 28-30 e lode: lo studente ha acquisito tutti i contenuti del corso ed è in grado di padroneggiarli compiutamente e di collegarli con spirito critico; risolve gli esercizi in modo completo e senza errori di particolare rilievo.
La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.
Esempi di domande e/o esercizi frequenti
Sulla pagina del corso (homepage docente) sono disponibili:
- un fac-simile della prova scritta;
- una serie di esercizi di laboratorio che gli studenti sono invitati a svolgere durante il corso;
- tutte le prove di laboratorio, alcune con soluzione, svolte fino ad oggi.