MATEMATICA E INFORMATICAInformaticaAnno accademico 2023/2024

1000418 - SISTEMI OPERATIVI A - L

Docente: MARIO DI RAIMONDO

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 (quinta edizione)Pearson20239788891912695
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 all'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, slab allocatorcap.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, journalingcap.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, algoritmo dell'ascensore, variante circolarecap.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
24Gestione dell'I/O su file, chiamate di servizio relative al file-system e alla mappatura dei file in memoria
25Gestione dei processi e dei thread: creazione e coordinamento tramite attesa
26Coordinamento tramite mutex/lock, semafori contatori, variabili condizione (in stile monitor), lock per reader/writer e barriere
27Accenno 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.

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.

Esempi di domande e/o esercizi frequenti

Sulla pagina del corso sono disponibili:


English version