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.
requisiti: basi di programmazione, conoscenza dell'architettura di un calcolatore
propedeuticità: Architettura degli Elaboratori, Programmazione 1
Frequenza delle lezioni non obbligatoria ma fortemente consigliata per garantire un idoneo grado di comprensione degli argomenti proposti.
Il corso è una introduzione ai principi ed al progetto di sistemi operativi, essenziali per coordinare le attività e le risorse di un sistema di calcolo. Sono affrontati i principali temi dalle architetture software alla gestione dei processi e delle risorse del sistema. Nella parte di laboratorio si approfondirà l'uso di strumenti standard (POSIX) in ambienti UNIX-compatibili per la gestione di processi e thread nonché la comunicazione e coordinamento tra questi.
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 |
Argomenti | Riferimenti testi | |
---|---|---|
1 | Teoria: | |
2 | Introduzione al concetto di sistema operativo | cap.1 di [TB], cap.1 di [SGG] |
3 | Richiami all'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, slab allocator | 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 | 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, algoritmo dell'ascensore, variante circolare | 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, variabili condizione (in stile monitor), lock per reader/writer e barriere | |
27 | Accenno ai segnali sui sistemi UNIX |
L'esame è composto da due prove da superare in ordine eventualmente su appelli diversi:
Verificare tutti i dettagli sulla modalità di prenotazione sul sito del corso.
Le prove sono finalizzate ad ottenere una valutazione complessiva della preparazione dello studente. Il voto finale, congiunto con il modulo di laboratorio, viene attribuito indicativamente secondo il seguente schema:
La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.
Sulla pagina del corso sono disponibili: