Sistemi Operativi (M-Z)

AA. 2023/2024.

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

March 21, 2023: In merito all'imminente appello straordinario del 27 Marzo c.a., si riportano alcune note/promemoria: (1) il test di teoria si svolgerà mercoledì 27 Marzo nel laboratorio 236 a partire dalle ore 9:00; (2) la prova di laboratorio si svolgerà venerdì 5 Aprile nei laboratori 125 e 236 a partire dalle ore 15:00; (3) gli orali si svolgeranno in date intermedie su discrezione dei docenti: è altamente probabile che venga svolta lo stesso mercoledì 27 nel pomeriggio; (4) per sostenere qualunque prova è, come sempre, strettamente necessario prenotarsi sul portale SmartEdu; in assenza di prenotazione non sarà possibile procedere e non si faranno eccezioni di alcun genere; (5) le prenotazioni scadranno domenica 24 Marzo; se avete problemi di prenotazione contattate immediatamente la segreteria studenti del DMI: non aspettate l'ultimo momento!‘‘

Avvisi

July 24, 2024: La valutazione della prova scritta al computer di Teoria è reperibile al seguente link: https://dtm.unict.it/marks/494532209. I colloqui orale, per chi ha superato il test al computer, si svolgeranno secondo i seguenti turni:
    •   TURNO I: Giovedì25 c.m. ore 15:30
    •   TURNO II: Venerdì26 c.m. ore 11:00
    •   TURNO III: Venerdì26 c.m. ore 15:30
    •   TURNO IV: Lunedì29 c.m. ore 15:30
    •   TURNO V: Mercoledì31 c.m. ore 10:00
Le assegnazioni ai turni sono disponibili dal link sopra.
July 22, 2024: Considerato l'alto numero delle prenotazioni l'esame, che si svolgeràà in aula 4, verrà suddiviso in due turni. TUTTI dovranno essere presenti alle ore 9:30 per le verifiche delle presenze; le turnazioni verranno decise sul momento. Si comunica inoltre che la prova pratica di laboratorio è fissata per lunedì 29 Luglio.


Materiale Didattico

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

•   esercizi visti a lezione

Last Update: June 13, 2024

Esercizi e compiti di laboratorio dei precedenti anni accademici, svolti nell’ambito delle attività di tutorato:
–   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 11:00 alle 12: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 15:00 alle 18:00 in aula 24;
•   Giovedì dalle 15:00 alle 18:00 in aula 24.

Tutorato di SO: da definire.