Questa pagina contiene tutto il materiale didattico del secondo modulo di Sistemi Operativi tenuto dal Prof. Riccardo Focardi.
Lezioni e esami in modalità online
- Spazio Moodle ufficiale del corso.
L’esame di questo modulo (Sistemi Operativi 2) avverrà secondo le seguenti modalità:
- Un quiz su
moodle
da svolgere in aula composto da domande e esercizi estratti a caso da un pool che darà un voto di base in trentesimi; - Tre esercitazioni di laboratorio con bonus di 1 punto sul voto finale del quiz (fino a un massimo di 3 punti) che si sommerà al voto del quiz.
Esame completo: la parte di Sistemi Operativi 1 avverrà tramite un’analoga prova, da effettuare con la Prof.ssa Balsamo. Il voto complessivo sarà la media dei voti sui due moduli.
Prove intermedie: chi ha superato le prove intermedie (compitini) della prima parte può sostenere l’esame di Sistemi Operativi 2 in qualsiasi appello dell’anno accademico (fino a gennaio 2024 incluso).
Laboratorio e materiale online
Per tutte le lezioni sono disponibili, qui sotto, le dispense online. Per le lezioni di laboratorio sono inoltre disponibili le slide.
Le lezioni “teoriche” sono svolte alla lavagna mentre le lezioni contrassegnate con (Lab) sono di laboratorio e siete invitati a tenere pronto il vostro ambiente di sviluppo preferito in C o Java.
Per la parte di C, è necessario il supporto dello standard POSIX. Avete queste possibilità:
- Utilizzare questa immagine docker che riproduce un ambiente identico a quello utilizzato nelle lezioni di laboratorio. Potete utilizzarla su qualsiasi sistema host installando docker;
- Utilizzare MacOS, Linux o una VM Linux con gcc installato. In MacOS non sono implementati i semafori senza nome, quindi alcuni esempi non possono essere riprodotti (vedere il punto precedente);
- Utilizzare WSL 2 in Windows.
Libri di testo
I libri sono gli stessi del primo modulo. Per la parte di programmazione in ambiente UNIX si può fare riferimento a:
- Richard Stevens, Stephen A. Rago, Advanced Programming in the UNIX Environment (seconda o terza edizione), Addison Weseley
Link utili
- Docker testbed (per chi non ha Linux)
- WSL 2 in Windows
- Esami scritti prima della modalità di esame in moodle
- Verifiche anni precedenti
Programma
Introduzione
- [15/02/2024] Comunicazione tra processi e thread
Processi
- [20/02/2024] Creazione processi (Lab) (slides)
- [22/02/2024] Esecuzione e terminazione (Lab) (slides)
- [27/02/2024] Esercitazione sui processi (Lab)
- [29/02/2024] Segnali (Lab) (slides)
- [05/03/2024] Comunicazione tramite pipe (Lab) (slides)
- [07/03/2024] Esercitazione sulle pipe (Lab)
- [12/03/2024] Prima esercitazione con bonus: comunicazione tramite pipe (Lab)
Thread
- [14/03/2024] Produttore e consumatore
- [19/03/2024] Sezione critica: soluzioni software e hardware
- [21/03/2024] I thread POSIX (Lab) (slides)
- [26/03/2024] I semafori
- [28/03/2024] I semafori POSIX (Lab) (slides)
- [02/04/2024] Programmazione con i semafori
- [04/04/2024] Esercitazione sui semafori (Lab)
- [09/04/2024] Seconda esercitazione con bonus: sincronizzazione tramite semafori POSIX (Lab)
- [16/04/2024] I monitor
- [18/04/2024] Programmazione con i monitor
- [23/04/2024] Thread di Java; sezione critica tramite monitor (Lab) (slides)
- [30/04/2024] I filosofi a cena in Java (Lab)
- [02/05/2023] Esercitazione sui monitor (Lab)
- [07/05/2024] Terza esercitazione con bonus: sincronizzazione tramite monitor in Java (Lab)
- [09/05/2024] Lo stallo
- [14/05/2024] Controllo dello stallo