Sistemi Operativi
Questa è la pagina di riferimento per il corso di Sistemi Operativi per Informatica (primo livello) per l'a.a. 2011-2012. Di seguito troverete varie informazioni sui contenuti del corso (programma ufficiale, libri di testo,...) e sul relativo esame finale. Sono ancora disponibili le pagine dei corsi tenuti negli a.a. passati: 2009-2010, 2010-2011.
semestre: II
aula: mercoledì in aula 4 / venerdì in aula 3
orario: 10:00 - 13:00
giorni: mercoledì, venerdì
inizio del corso: venerdì 16 Marzo
CFU: 9
propedeuticità: Architettura degli Elaboratori
Comunicazioni
Su questo sito potrete trovare gli avvisi relativi all'insegnamento (lezioni, ricevimento, esami,...); per il resto è possibile fare riferimento al forum ufficiale associato al corso. La bacheca avvisi può essere sottoscritta attraverso l'uso del feed RSS per tenersi sempre aggiornati in automatico. Per qualunque altra questione (non coperta dalle FAQ) è possibile contattarmi per email o sul forum.
Bacheca avvisi
08-05-2012Per urgenti motivi personali sono costretto ad annullare la lezione ed il ricevimento di domani (mercoledì 9 maggio). In mancanza di ulteriori comunicazioni la lezione di venerdì è confermata. Mi scuso per il breve preavviso (fate passaparola con i colleghi).02-05-2012La prima prova in itinere si terrà mercoledì 30 Maggio a partire dalle ore 10: è strettamente necessario prenotarsi utilizzando l'apposito modulo sul sito del corso entro e non oltre domenica 27 Maggio; gli studenti erasmus/socrates hanno la possibilità di inserire tra le note della prenotazione la richiesta di un test scritto in lingua inglese.
Il programma coperto dalla prima prova in itinere contiene tutta la teoria fino alla gestione della memoria e la parte di laboratorio che riguarda la shell unix e i suoi comandi.
Vi confermo inoltre che venerdì 25 Maggio si terrà il seminario "Windows Internals Tour: Processi, Threads e Gestione della Memoria" che tutti gli studenti del corso sono tenuti a seguire. Il seminario si terrà in aula 3 a partire dalle ore 10:00.
Abstract:
Il seminario presenta l’architettura e la gestione dei processi e threads
nei sistemi operativi Microsoft Windows: Vita di un processo e di un thread,
algoritmi di scheduling, etc.
Sarà inoltre offerta una panoramica sulle tecnologie alla base della
gestione della memoria: Shared Memory, Mapped File, Working Sets,
Copy-on-Write, DEP, ect.Relatore: Andrea Dell'Amico ( Academic Club - Microsoft Student Partner)
11-04-2012Venerdì 13 Aprile non ci sarà la lezione di Sistemi Operativi a causa di miei impegni istituzionali fuori-sede. Le lezioni riprenderanno regolarmente mercoledì 18 Aprile.
06-04-2012Sono disponibili i risultati del compito del 04/04/2012. Ogni studente può accedere alla propria valutazione utilizzando l'apposito modulo web. Chi non è stato ammesso all'orale è invitato a visionare il proprio compito durante gli orari di ricevimento.
Gli orali si terranno mercoledì 11 Aprile alle ore 15:00 nel mio ufficio.
02-04-2012Si avvisano gli studenti del corso che questa settimana si terrà solo la lezione di mercoledì 4 Aprile. La lezione di venerdì 6 viene sospesa. Le lezioni riprenderanno regolarmente mercoledì 11 Aprile.
Calendario e ricevimento 
Nel seguente calendario trovate indicate le lezioni del corso e gli orari di ricevimento per gli studenti. Eventuali spostamenti delle lezioni verranno comunque segnalati attraverso la bacheca avvisi e sul forum. Gli orari di ricevimento invece potrebbero subire cambiamenti senza espliciti preavvisi in bacheca: è pertanto consigliato di controllare sul calendario. E' possibile sottoscrivere lo stesso attraverso l'impiego dell'apposito feed iCalendar.
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 sono curati gli aspetti implementativi attinenti il corso.
Il corso prevede anche una breve introduzione al linguaggio C.
Programma (provvisorio)
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
- Messaggi tra processi
- Problema dei 5 filosofi e dei lettori-scrittori
- 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
- Scheduling su Windows XP e Linux (O(1) e CFS)
- 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
- Algoritmi di sostituzione delle pagine: progettazione, ottimale, NRU, FIFO, seconda chance, clock, LRU, NFU, aging
- Altri aspetti legati alla sostituzione delle pagine: working set, algoritmi locali e globali, controllo del carico, dimensione delle pagine, spazi di indirizzamento separati, condivisione delle pagine, librerie condivise, mappatura di file
- Segmentazione pura e paginata
- File-system: astrazione, file, directory
- Progettazione di un file-system: allocazione dei file (contigua, concatenata, tabellare e indicizzata), directory, hard/soft-link, journaling, VFS, gestione blocchi liberi (con bitmap e con lista concatenata)
- Altri aspetti tecnici sui file-system: quote, controlli di consistenza, cache del disco, block read-ahead, deframmentazione
- Accenni sui file-system contemporanei
- Scheduling del disco e relativi algoritmi: FCFS, SSTF, SCAN, C-SCAN, LOOk, C-LOOK, varianti relative alla latenza rotazionale e al tempo di accesso
- Sistemi RAID: principi di base, RAID 0, RAID 1, RAID 2, RAID 3, RAID 4, RAID 5
- Deadlock: definizione, condizioni necessarie, modellazione tramite il grafo delle risorse
- Strategie di gestione degli stalli: rilevare, evitare (algoritmo del banchiere), prevenire
Laboratorio:
- La shell UNIX
- I file-system, hard/soft-link e altre peculiarità
- Primi comandi per la gestione dei file e delle directory
- Flussi di I/O e redizione
- Invocazione tramite pipeline
- Esempi di comandi per l'elaborazione dei flussi di dati
- Archiviazione dei file
- Esecuzione condizionata dei comandi
- Accenno alle variabili d'ambiente
- Command substitution
- Introduzione al linguaggio C
- L'uso delle chiamate di sistema
- Gestione dell'I/O su file e chiamate di servizio relative al file-system
- Gestione dei processi: creazione, coordinamento, esecuzione di comandi esterni
- Chiamate per la comunicazione tra processi tramite messaggi
- Chiamate per la gestione della memoria condivisa tra i processi
- Chiamate per la gestione dei semafori
- Segnali sui sistemi UNIX
Il programma delinea in modo generico i contenuti trattati durante il corso: per ulteriori dettagli è possibile consultare le diapositive usate durante le lezioni. Tutto ciò che è stato esposto a lezione sarà oggetto di valutazione durante l'esame (compreso gli argomenti relativi al laboratorio).
Libri di testo
autore: Andrew S. Tanenbaum [testo principale]
titolo: I moderni sistemi operativi (terza edizione)
casa editrice: Prentice Hall/Pearson
anno di pubblicazione: 2009
ISBN: 9788871925400- autori: Abraham Silberschatz, Peter Baer Galvin, Greg Gagne [testo di approfondimento]
titolo: Sistemi operativi - Concetti ed esempi (ottava edizione)
casa editrice: Addison Wesley/Pearson
anno di pubblicazione: 2009
ISBN: 9788871925691
Materiale didattico
Di seguito trovate il materiale didattico utilizzato nell'a.a. passato (link barrati): durante l'anno questo potrebbe subire delle modifiche/aggiornamenti comunque marginali. Il materiale aggiornato che verrà man mano pubblicato sarà riconoscibile dai link non barrati.
Proiezioni utilizzate a lezione:
- Teoria:
- Introduzione: versione video, versione stampa
- Processi, thread, IPC, scheduling: versione video, versione stampa
- Gestione della memoria:versione video, versione stampa
- File-system, dischi: versione video, versione stampa
- Deadlock: versione video, versione stampa
- Laboratorio:
- Shell e comandi UNIX: versione video, versione stampa
- Programmazione in ambienti UNIX (file system, processi, IPC, segnali): versione video, versione stampa
Dispense ed esempi:
- C per programmatori Java (Dott. Toscano)
- Esempi introduttivi del linguaggio C visti a lezione
- Esempi di programmazione UNIX visti a lezione
Materiale di approfondimento (non obbligatorio):
- Lo scheduler Completely Fair Scheduler (CFS) di Linux: articolo
- Il kernel di Mac OS X: documentazione ufficiale
- I filesystem di Linux: sintesi delle novità in ext4, articolo su ext4, struttura di un fs BTRFS
- Simulatori ed animazioni: scheduling CPU (1), scheduling CPU (2), stati di un processo, algoritmo di scheduling FCFS, algoritmo di scheduling SJF, algoritmo di scheduling RR (1), algoritmo di scheduling RR (2), mutua esclusione con semafori (1), mutua esclusione con semafori (2), produttore/consumatore con semafori, produttore/consumatore con messaggi, paginazione, segmentazione, segmentazione paginata, paginazione con TLB, paginazione a due livelli, gestione di un page-fault, algoritmo della seconda chance per la sostituzione delle pagine, scheduling del disco FCFS, scheduling del disco SSTF, scheduling del disco SCAN, Livelli RAID
- Manuale completo sul linguaggio C: Tricky C
- Guida introduttiva al linguaggio C: Appunti di Informatica Libera - Introduzione al linguaggio C
- Guida completa ed avanzata per la programmazione script: Advanced Bash-Scripting Guide
- Guida completa ed avanzata per la programmazione in Linux: GaPiL
- Testo di riferimento per architettura Microsoft Windows: Windows Internals
Esame
L'esame finale prevede una prova scritta (scelta multipla e/o aperte), seguita da un colloquio orale obbligatorio. Il colloquio orale dovrà tenersi nello stesso appello in cui si è sostenuta la prova scritta: la data degli orali (in genere 2 giorni dopo, ma a volte il giorno stesso dello scritto) verrà comunicata durante la prova scritta; la regola prevede che non si possono concedere spostamenti ad personam, pertanto se si è impossibilitati ad essere presenti il giorno fissato per gli orali si avrà la possibilità, previa richiesta esplicita al docente e per un numero molto limitato di persone, di poter sostenere gli orali subito dopo lo scritto (nella stessa giornata).
Per poter sostenere gli esami in un dato appello è necessario prenotarsi sul portale CEA (indicare nelle note eventuali esoneri di cui ci vuole avvalere). Il sistema accetta prenotazioni anche in mancanza dei requisiti necessari (sbarramenti e propedeuticità): in sede d'orale verrà richiesta la copia stampata del verbalone ed, inoltre, subito dopo aver sostenuto con successo le prove previste, la materia verrà verbalizzata elettronicamente; se dovesse risultare la mancanza dei suddetti requisiti si procederà all'annullamento dell'esame e di tutte le prove già sostenute (come stabilito dal Consiglio SDAI). 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.
