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 memoria del kernel 
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, 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 IN ITINERE

Non sono previste prove in itinere ma le singole prove (scritto, laboratorio, orale) che compongono l'esame finale si possono dilazionare su più appelli.


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