SISTEMI OPERATIVI

INF/01 - 9 CFU - 2° semestre

Docente titolare dell'insegnamento

MARIO DI RAIMONDO


Obiettivi formativi


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.



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. 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).



Testi di riferimento

autori: Andrew S. Tanenbaum, Herbert Bos
titolo: I moderni sistemi operativi (quarta edizione)
casa editrice: Pearson
anno di pubblicazione: 2016
ISBN: 9788891901019

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


Altro materiale didattico

Disponibile sulla pagina del corso o su Studium.



Programmazione del corso

 *ArgomentiRiferimenti testi
1 Teoria: 
2*Introduzione al concetto di sistema operativo 
3 Richiami sull'architettura degli elaboratori 
4*Struttura di un sistema operativo 
5*I processi: definizione, multiprogrammazione, stati e transizioni 
6*I thread: definizione, modelli utilizzabili; programmazione multicore 
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 
8*Problema dei 5 filosofi e dei lettori-scrittori (soluzioni basate su semafori e monitor) 
9*Scheduling: scheduler e dispatcher 
10*Algoritmi di scheduling: progettazione, FCFS, SJF, SRTN, RR, a priorità, con code multiple, SPN, garantito, a lotteria, fair-share 
11*Scheduling dei thread e su sistemi multi-processore 
12 Scheduling su Windows 8 e Linux (task, O(1) e CFS) 
13*Gestione della memoria per la multi-programmazione: swapping, rilocazione, gestione dello spazio libero 
14*Memoria virtuale: paginazione, tabella delle pagine, uso di memoria associativa, varianti multi-livello, tabella delle pagine invertita, conseguenze sulla cache 
15*Algoritmi di sostituzione delle pagine: progettazione, ottimale, NRU, FIFO, seconda chance, clock, LRU, NFU, aging; anomalia di Belady 
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 me 
17*Segmentazione 
18 Gestione della memoria su Linux 
19*File-system: astrazione, file, directory 
20*Progettazione di un file-system: allocazione dei file (contigua, concatenata, tabellare e indicizzata), directory, hard/soft-link, VFS, gestione blocchi liberi (con bitmap e con lista concatenata) 
21*Altri aspetti tecnici sui file-system: quote, controlli di consistenza, Log-structured FS (LFS), journaling, cache del disco, deframmentazione 
22 Accenni sui file-system storici e contemporanei: FAT-[12,16,32,64], NTFS, ext-[2,3,4], BTRFS 
23*Scheduling del disco e relativi algoritmi: FCFS, SSTF, SCAN, C-SCAN, LOOK, C-LOOK 
24*Sistemi RAID: principi di base, RAID-[0,1,2,3,4,5] 
25 Memorie flash, dischi a stato solido (SSD) e implicazioni sui file system 
26 Laboratorio: 
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 
* Conoscenze minime irrinunciabili per il superamento dell'esame.

N.B. La conoscenza degli argomenti contrassegnati con l'asterisco è condizione necessaria ma non sufficiente per il superamento dell'esame. Rispondere in maniera sufficiente o anche più che sufficiente alle domande su tali argomenti non assicura, pertanto, il superamento dell'esame.


Verifica dell'apprendimento


MODALITÀ DI VERIFICA DELL'APPRENDIMENTO

L'esame prevede:


PROVE DI FINE CORSO

Le prove previste (scritto di teoria e prova di laboratorio) devono essere superate secondo la sequenza indicata: è necessario ottenere una sufficienza sulla prova scritta di teoria per poter accedere alla prova pratica di laboratorio; per poter sostenere l'orale è necessario aver collezionato una sufficienza in entrambe le prove precedenti. Il voto finale sarà dato dalla media pesata delle prime due prove (65% teoria, 35% laboratorio) e da un aggiustamento relativo alla prova orale (indicativamente di +/- 4 punti a discrezione del docente). La valutazione delle prime due prove è espressa in trentesimi e si intende generalmente superata se si ottengono almeno 18/30.

Il superamento di una specifica prova non ha una scadenza e pertanto l'esame si può sviluppare su vari appelli. Fa eccezione la prova scritta di teoria che in casi limite, su giudizio insindacabile del docente, può essere considerata scaduta/non-valida in seguito ad un colloquio orale "particolarmente insufficiente" e non allineato alla valutazione dello scritto. Lo studente, non soddisfatto del voto di una prova, può decidere di ripeterla negli appelli successivi rinunciando contestualmente e a priori alla vecchia valutazione.

Per poter sostenere una qualunque prova in un dato appello è necessario prenotarsi sul portale CEA indicando tra le note le prove a cui si vuole partecipare ed eventuali prove già superate e non scadute (esempi: "da sostenere: scritto teoria, prova di laboratorio e orale", "già sostenuti: scritto teoria con 27/30 il 10/07/2015; da sostenere: prova di laboratorio", ...). Il portale CEA accetta prenotazioni anche in mancanza dei requisiti necessari (eventuali sbarramenti e propedeuticità): se in fase di verbalizzazione dovessero emergere dei requisiti non soddisfatti si procederà all'annullamento dell'esame e di tutte le prove già sostenute. Non è assolutamente possibile "conservare" il voto finale di un esame per future registrazioni. Gli studenti sono pertanto invitati a presentarsi agli appelli solo dopo aver verificato il proprio status presso il portale CEA.

Nella data dell'appello riportata sul calendario esami si terrà la prova di teoria; la prova di laboratorio si terrà qualche giorno dopo (da 1 a 5 giorni, in base al numero di elaborati da correggere) e la data esatta, unitamente a quella dei colloqui orali, sarà comunicata successivamente con apposito avviso.


ESEMPI DI DOMANDE E/O ESERCIZI FREQUENTI

Sulla pagina del corso sono disponibili:




Apri in formato Pdf English version