Lezioni frontali in aula su argomenti di teoria e su sviluppo codice per la parte di laboratorio. Il corso può prevedere dei seminari tenuti da esperti esterni su argomenti correlati e d'attualità.
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.
Lezioni frontali in aula su argomenti di teoria e su sviluppo codice per la parte di laboratorio. Il corso può prevedere dei seminari tenuti da esperti esterni su argomenti correlati e d'attualità.
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
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.
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. Con riferimento ai sistemi UNIX, nella parte di laboratorio si affronta l'uso della shell e la programmazione in linguaggio C degli aspetti cruciali legati ai processi, alla memoria e all'inter-process communication (IPC).
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. Con riferimento ai sistemi UNIX, nella parte di laboratorio si affronta l'uso della shell e la programmazione in linguaggio C degli aspetti cruciali legati ai processi, alla memoria e all'inter-process communication (IPC).
autori: Andrew S. Tanenbaum, Herbert Bos
titolo: I moderni sistemi operativi (quarta edizione)
casa editrice: Pearson
anno di pubblicazione: 2016
ISBN: 9788891912695
autori: Abraham Silberschatz, Peter Baer Galvin, Greg Gagne
titolo: Sistemi operativi – Concetti ed esempi (nona edizione)
casa editrice: Pearson
anno di pubblicazione: 2014
ISBN: 9788865183717
autori: Andrew S. Tanenbaum, Herbert Bos
titolo: I moderni sistemi operativi (quarta edizione)
casa editrice: Pearson
anno di pubblicazione: 2016
ISBN: 9788891912695
autori: Abraham Silberschatz, Peter Baer Galvin, Greg Gagne
titolo: Sistemi operativi – Concetti ed esempi (nona edizione)
casa editrice: Pearson
anno di pubblicazione: 2014
ISBN: 9788865183717
Disponibile sul sito del corso.
Disponibile sul sito del corso.
LABORATORY | ||
Argomenti | Riferimenti testi | |
1 | Teoria: | |
2 | Introduzione al concetto di sistema operativo | cap.1 di [TB], cap.1 di [SGG] |
3 | Richiami sull'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 | Scheduling su Windows 8 e Linux (task, O(1) e CFS) | cap.10,11 di [TB], cap.21,22 di [SGG] |
13 | Gestione della memoria per la multi-programmazione: swapping, rilocazione, gestione dello spazio libero | cap.3 di [TB], cap.8 di [SGG] |
14 | 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] |
15 | 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] |
16 | 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] |
17 | Segmentazione | cap.3 di [TB], cap.8 di [SGG] |
18 | Gestione della memoria su Linux | cap.10 di [TB], cap.8 di [SGG] |
19 | File-system: astrazione, file, directory | cap.4 di [TB], cap.10 di [SGG] |
20 | 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] |
21 | Altri aspetti tecnici sui file-system: controlli di consistenza, journaling, deframmentazione | cap.4 di [TB], cap.11 di [SGG] |
22 | 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] |
23 | Scheduling del disco e relativi algoritmi: FCFS, SSTF, SCAN, C-SCAN, LOOK, C-LOOK | cap.5 di [TB], cap.12 di [SGG] |
24 | Sistemi RAID: principi di base, RAID-[0,1,2,3,4,5] | cap.5 di [TB], cap.12 di [SGG] |
25 | Memorie flash, dischi a stato solido (SSD) e implicazioni sui file system | risorse esterne |
26 | Laboratorio: | risorse esterne, man page |
27 | Tutorial sull'uso della shell UNIX | |
28 | L'uso delle chiamate di sistema | |
29 | Gestione dell'I/O su file e chiamate di servizio relative al file-system e alla mappatura dei file in memoria | |
30 | Gestione dei processi: creazione, coordinamento, esecuzione di comandi esterni | |
31 | Chiamate per la comunicazione tra processi tramite pipe e FIFO | |
32 | Chiamate per la comunicazione tra processi tramite messaggi | |
33 | Chiamate per la gestione della memoria condivisa tra i processi | |
34 | Chiamate per la gestione dei semafori | |
35 | Segnali sui sistemi UNIX | |
LABORATORY | ||
Argomenti | Riferimenti testi | |
1 | Teoria: | |
2 | Introduzione al concetto di sistema operativo | cap.1 di [TB], cap.1 di [SGG] |
3 | Richiami sull'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 | Scheduling su Windows 8 e Linux (task, O(1) e CFS) | cap.10,11 di [TB], cap.21,22 di [SGG] |
13 | Gestione della memoria per la multi-programmazione: swapping, rilocazione, gestione dello spazio libero | cap.3 di [TB], cap.8 di [SGG] |
14 | 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] |
15 | 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] |
16 | 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] |
17 | Segmentazione | cap.3 di [TB], cap.8 di [SGG] |
18 | Gestione della memoria su Linux | cap.10 di [TB], cap.8 di [SGG] |
19 | File-system: astrazione, file, directory | cap.4 di [TB], cap.10 di [SGG] |
20 | 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] |
21 | Altri aspetti tecnici sui file-system: controlli di consistenza, journaling, deframmentazione | cap.4 di [TB], cap.11 di [SGG] |
22 | 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] |
23 | Scheduling del disco e relativi algoritmi: FCFS, SSTF, SCAN, C-SCAN, LOOK, C-LOOK | cap.5 di [TB], cap.12 di [SGG] |
24 | Sistemi RAID: principi di base, RAID-[0,1,2,3,4,5] | cap.5 di [TB], cap.12 di [SGG] |
25 | Memorie flash, dischi a stato solido (SSD) e implicazioni sui file system | risorse esterne |
26 | Laboratorio: | risorse esterne, man page |
27 | Tutorial sull'uso della shell UNIX | |
28 | L'uso delle chiamate di sistema | |
29 | Gestione dell'I/O su file e chiamate di servizio relative al file-system e alla mappatura dei file in memoria | |
30 | Gestione dei processi: creazione, coordinamento, esecuzione di comandi esterni | |
31 | Chiamate per la comunicazione tra processi tramite pipe e FIFO | |
32 | Chiamate per la comunicazione tra processi tramite messaggi | |
33 | Chiamate per la gestione della memoria condivisa tra i processi | |
34 | Chiamate per la gestione dei semafori | |
35 | Segnali sui sistemi UNIX |
L'esame prevede:
Verificare tutti i dettagli sulla modalità di prenotazione sul sito del corso.
La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.
L'esame prevede:
Verificare tutti i dettagli sulla modalità di prenotazione sul sito del corso.
La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.
Sulla pagina del corso sono disponibili:
Sulla pagina del corso sono disponibili: