Sistemi Operativi (M-Z)

AA. 2024/2025

Obiettivi

Il corso propone una completa introduzione alle problematiche relative alla progettazione dei moderni sistemi operativi. La parte teorica è integrata con riferimenti concreti ai sistemi operativi contemporanei ed è prevista una parte di laboratorio in cui vengono curati gli aspetti implementativi attinenti il corso.

Obiettivo del corso è quello di rendere lo studente in grado di utilizzare le metodologie apprese per analizzare le prestazioni di un sistema operativo in un particolare contesto applicativo; formulare alternative o proporre soluzioni originali a problemi legati al funzionamento dei sistemi di calcolo complessi; e, grazie alle conoscenze acquisite nella parte di laboratorio, potrà operare attivamente su un sistema operativo UNIX-like attraverso la shell di comando e, dal punto di vista della programmazione, attraverso le chiamate di sistema POSIX. Infine, il corso si prefigge di far apprendere allo studente le interazioni tra le tematiche dei sistemi operativi, della progettazione software, e dell’importanza di adeguati supporti hardware.



Comunicazioni

February 13, 2025: “Le prove di teoria superate ma non ancora completate con la parte di laboratorio decadranno dopo gli appelli già fissati del 14 Aprile c.a., e/o del 12 Maggio c.a. Si noti che il secondo appello è riservato solo ai fuori corso e/o laureandi. Si ricorda sempre che per sostenere qualunque prova è strettamente necessario prenotarsi presso il portale SmartEdu; in assenza di prenotazione non sarà consentito alcun svolgimento di prove e non si faranno eccezioni di alcun genere. Se per tali appelli riscontrate problemi di prenotazione contattate immediatamente la segreteria studenti del DMI: non aspettate l'ultimo momento!‘‘

Avvisi

March 8, 2025 Le prove di laboratorio di Sistemi Operativi sono state valutate per entrambi i moduli A-L & M-Z. Le valutazioni con relative proposte di voto possono essere visionate al seguente link: https://dtm.unict.it/marks/4059280084
Per procedere alla verbalizzazione è necessario confermare esplicitamente (anche se scontato) via email al docente di riferimento l'accettazione. Si ricorda che gli esami verranno verbalizzati solo dopo aver ricevuto tutte le conferme sul voto proposto.

March 2, 2025 Le lezioni avranno inizio Giovedì 5 marzo alle ore 10 in aula 24 come da calendario.


Materiale Didattico

Teoria

•   Presentazione del Corso
•   SO-chp01.pdf
•   lezione del 20/03/2025

Last Update: March 22, 2025

Useful Links

• Lo scheduler CFS di Linux
• Mac OS X: scheduler, file-system APFS
• Filesystem Linux: novità in ext4, ext4, struttura BTRFS
• Manuale completo sul linguaggio C: Tricky C
Memorie NAND e dischi SSD

Laboratorio

•   Slide complete lezioni Laboratorio

Last Update: July 31, 2024

Esercizi e compiti di laboratorio dei precedenti anni accademici, svolti nell’ambito delle attività di tutorato:
–   Tutorato AA 2023-2024
–   Tutorato AA 2022-2023
–   Tutorato AA 2021-2022
–   Tutorato AA 2019-2020


Modalità Esame

L'esame è composto da due prove, da superare in ordine anche in appelli diversi:
•   prova di teoria: si tratta di un questionario, a risposta multipla e/o aperte, su argomenti relativi alla teoria ed esercizi; superato questo, si sosterrà nello stesso appello un colloquio orale sugli stessi argomenti;
•   prova di laboratorio: si tratta di prova pratica in laboratorio in cui lo studente dovrà scrivere un programma in linguaggio C che risolva un problema proposto facendo uso dei costrutti e delle chiamate di sistema UNIX viste a lezione. Si lavorerà in un ambiente ad-hoc in cui sarà possibile consultare solo la documentazione di sistema e le proiezioni viste a lezione.

Prova Teoria & Laboratorio

La valutazione del questionario sarà approvato o non approvato; solo nel primo caso si potrà sostenere il colloquio orale che completerà la prova di teoria. La valutazione finale della prova di teoria sarà in trentesimi. Prova scritta (questionario) e colloquio orale vanno superati nell’ambito dello stesso appello. La prova di laboratorio avrà un proprio voto in trentesimi e si svolgerà in una apposita data successiva a quella della teoria; può essere sostenuta anche in appelli successivi.
Il voto finale si baserà sulla media pesata dei voti ottenuti nelle due parti del programma (65% teoria, 35% laboratorio): l’esatto arrotondamento e l’eventuale assegnazione della lode rimane a completa discrezione della commissione.

Note Esame

Per poter sostenere una qualunque prova è obbligatorio prenotarsi sul portale SmartEdu, specificando nelle note le prove da sostenere (teoria e/o laboratorio). Le due prove possono essere sostenute anche in appelli diversi; in questo caso è necessario prenotarsi in ogni appello in cui si sostiene la prova. Nella data dell’appello riportata nel calendario esami si terrà sempre la prova scritta di teoria (questionario); le date per il colloquio orale (usualmente qualche giorno dopo il questionario) e la prova di laboratorio, verranno ufficialmente comunicate successivamente allo scritto con apposito avviso.
NOTA: il voto ottenuto sulla parte di teoria, se non completato con il laboratorio, rimarrà valido fino all'ultimo appello del relativo A.A.: Aprile 2025


Programma del Corso

Teoria

  • Introduzione al concetto di sistema operativo
  • Richiami sull’architettura degli elaboratori
  • Struttura di un sistema operativo
  • I processi: definizione, multiprogrammazione, stati e transizioni
  • I thread: definizione, modelli utilizzabili; programmazione multicore
  • 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
  • Problema dei 5 filosofi e dei lettori-scrittori (soluzioni basate su semafori e monitor)
  • Scheduling: scheduler e dispatcher
  • Algoritmi di scheduling: progettazione, FCFS, SJF, SRTN, RR, a priorità, con code multiple, SPN, garantito, a lotteria, fair-share
  • Scheduling dei thread e su sistemi multi-processore
  • Gestione della memoria per la multi-programmazione: swapping, rilocazione, gestione dello spazio libero
  • Memoria virtuale: paginazione, tabella delle pagine, uso di memoria associativa, varianti multi-livello, tabella delle pagine invertita, conseguenze sulla cache
  • Algoritmi di sostituzione delle pagine: progettazione, ottimale, NRU, FIFO, seconda chance, clock, LRU, NFU, aging; anomalia di Belady
  • 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 (buddy system, slab allocator)
  • File-system: astrazione, file, directory
  • 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)
  • Altri aspetti tecnici sui file-system: controlli di consistenza, journaling; cache del disco, deframmentazione
  • Scheduling del disco e relativi algoritmi: FCFS, SSTF, SCAN, C-SCAN, LOOK, C-LOOK
  • Sistemi RAID: principi di base, RAID-[0,1,2,3,4,5]
  • Memorie flash, dischi a stato solido (SSD) e implicazioni sui file system

Laboratorio

  • Tutorial sull’uso della shell UNIX
  • Programmazione in ambienti UNIX:
    • uso delle chiamate di sistema
    • gestione dell’I/O su file e chiamate di servizio relative al file-system e alla mappatura dei file in memoria
    • gestione dei processi e dei thread: creazione e coordinamento tramite attesa
    • Coordinamento tramite mutex/lock, semafori contatori, variabili condizione (in stile monitor), lock per reader/writer e barriere
    • Accenno ai segnali sui sistemi UNIX


Libri Consigliati

I Moderni Sistemi Operativi (4° o 5° edizione)
A. S. Tanenbaum & H. Bos
Pearson
anno: 2016 / 2023
ISBN: 9788891931955
e-ISBN: 9788891931962
ISBN: 9788891906250
e-ISBN: 9788891906267


Sistemi Operativi – Concetti ed Esempi (9° edizione)
A. Silberschatz, P. Baer Galvin, G. Gagne
Pearson
anno: 2014
ISBN: 9788865183717

Ricevimento

Il ricevimento studenti viene svolto presso il proprio studio nei seguenti giorni e orari:
•   Mercoledì dalle 10:00 alle 11:00.

NOTA: è consigliabile concordare con il docente il ricevimento per via email (no telegram o teams) all'indirizzo mario.pavone@unict.it.

Orario Lezioni (AA.2023/2024)

Le lezioni si svolgono come da calendario nei seguenti giorni e orari:
•   Martedì dalle 10:00 alle 13:00 in aula 24;
•   Giovedì dalle 10:00 alle 13:00 in aula 24.

Tutorato di SO: inizio previsto per metà Maggio.