MATEMATICA E INFORMATICAInformaticaAnno accademico 2022/2023

1000418 - SISTEMI OPERATIVI M - Z

Docente: MARIO FRANCESCO PAVONE

Risultati di apprendimento attesi

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

Frequenza delle lezioni non obbligatoria ma fortemente consigliata per garantire un idoneo grado di comprensione degli argomenti proposti.

Contenuti del corso

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.

Testi di riferimento

AutoreTitoloEditoreAnnoISBN
Andrew S. Tanenbaum, Herbert BosI moderni sistemi operativi (quarta edizione)Pearson20169788891912695
Abraham Silberschatz, Peter Baer Galvin, Greg GagneSistemi operativi – Concetti ed esempi (nona edizione)Pearson20149788865183717

Programmazione del corso

 ArgomentiRiferimenti testi
1Teoria:
2Introduzione al concetto di sistema operativocap.1 di [TB], cap.1 di [SGG]
3Richiami aull'architettura degli elaboratoricap.1 di [TB], cap.1 di [SGG]
4Struttura di un sistema operativocap.1 di [TB], cap.2 di [SGG]
5I processi: definizione, multiprogrammazione, stati e transizionicap.2 di [TB], cap.3,4 di [SGG]
6I thread: definizione, modelli utilizzabili; programmazione multicorecap.2 di [TB], cap.4 di [SGG]
7Sezioni 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 processicap.2 di [TB], cap.6 di [SGG]
8Problema dei 5 filosofi e dei lettori-scrittori (soluzioni basate su semafori e monitor)cap.2 di [TB], cap.6 di [SGG]
9Scheduling: scheduler e dispatchercap.2 di [TB], cap.5 di [SGG]
10Algoritmi di scheduling: progettazione, FCFS, SJF, SRTN, RR, a priorità, con code multiple, SPN, garantito, a lotteria, fair-sharecap.2 di [TB], cap.5 di [SGG]
11Scheduling dei thread e su sistemi multi-processorecap.2 di [TB], cap.5 di [SGG]
12Gestione della memoria per la multi-programmazione: swapping, rilocazione, gestione dello spazio liberocap.3 di [TB], cap.8 di [SGG]
13Memoria virtuale: paginazione, tabella delle pagine, uso di memoria associativa, varianti multi-livello, tabella delle pagine invertita, conseguenze sulla cachecap.3 di [TB], cap.8 di [SGG]
14Algoritmi di sostituzione delle pagine: progettazione, ottimale, NRU, FIFO, seconda chance, clock, LRU, NFU, aging; anomalia di Beladycap.3 di [TB], cap.9 di [SGG]
15Altri 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 kernelcap.3 di [TB], cap.9 di [SGG]
16File-system: astrazione, file, directorycap.4 di [TB], cap.10 di [SGG]
17Progettazione 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]
18Altri aspetti tecnici sui file-system: controlli di consistenza, journaling, deframmentazionecap.4 di [TB], cap.11 di [SGG]
19Accenni sui file-system storici e contemporanei: FAT-[12,16,32,64], NTFS, ext-[2,3,4], BTRFScap.4,10,11 di [TB], cap.21,22 di [SGG]
20Scheduling del disco e relativi algoritmi: FCFS, SSTF, SCAN, C-SCAN, LOOK, C-LOOKcap.5 di [TB], cap.12 di [SGG]
21Sistemi RAID: principi di base, RAID-[0,1,2,3,4,5]cap.5 di [TB], cap.12 di [SGG]
22Memorie flash, dischi a stato solido (SSD) e implicazioni sui file systemrisorse esterne
23Laboratorio:risorse esterne, man page
24Tutorial sull'uso della shell UNIX
25Gestione dell'I/O su file e chiamate di servizio relative al file-system e alla mappatura dei file in memoria
26Gestione dei processi e dei thread: creazione e coordinamento tramite attesa
27Coordinamento tramite mutex/lock, semafori contatori e variabili condizione (in stile monitor) e lock per reader/writer
28Accenno ai segnali sui sistemi UNIX
29Accenno 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:

Verificare tutti i dettagli sulla modalità di prenotazione sul sito del corso (homepage docente). 

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:


English version