Home Page

 

Corso di Sistemi Operativi A.A. 2005/2006

 

Obiettivo
Il corso ha l'obiettivo di fornire allo studente le nozioni per comprendere i principi su cui si fonda la progettazione di un sistema operativo moderno, ovvero, del software che permette di "controllare" l'hardware di un sistema di calcolo, gestendone le risorse.

 

Docenti

 

Programma del corso
1.

Aspetti generali:

  • ruolo del sistema operativo (SO) in un sistema di calcolo;
  • evoluzione dei SO; tipi di SO (batch/interattivi, time-sharing/dedicati, real-time, paralleli, distribuiti, sistemi embedded...);
  • richiami sull'architettura di un sistema di calcolo (livelli di esecuzione delle istruzioni, gestione delle interruzioni, gestione dell'I/O);
  • il SO come gestore di risorse: processi, memoria, dispositivi, file, interazione con l'utente;
  • il SO come macchina virtuale: il nucleo, le chiamate di sistema;
  • struttura di un sistema operativo (monolitico, a livelli, macchine virtuali, exokernel, microkernel client-server);
  • esempi: Unix tradizionale, Linux, Solaris, Mach, Windows NT.

 
2. Processi e Thread:
  • il concetto di processo: definizione e ruolo, il descrittore di processo;
  • la manipolazione dei processi: la creazione/terminazione di un processo, grafo degli stati di un processo, la commutazione di contesto, lo scheduling di processi;
  • i processi leggeri (threads): modello a thread, thread a livello utente vs. a livello kernel, soluzioni ibride, thread pop-up, passaggio da thread singolo a multithread;
  • ruolo del nucleo: gestione interruzioni e traps, operazioni di wait e signal su condizioni di attesa;
  • lo scheduling dei processori: concetti di base, criteri di scheduling, algoritmi di scheduling, scheduling di sistemi a multiprocessore, scheduling real-time.
 
3. Programmazione concorrente:
  • race condition e sezioni critiche;
  • mutua esclusione;
  • sincronizzazione tra processi e memorie condivise;
  • scambio messaggi;
  • primitive di comunicazione e sincronizzazione: semafori, mutex, monitor, scambio di messaggi;
  • problemi classici: produttore/consumatore, filosofi, lettori/scrittori, barbiere;
  • stallo: definizione, modelli per lo stallo, identificazione, prevenzione.
 
4. Gestione della memoria:
  • gerarchie di memoria: registri, cache, memoria centrale, memoria virtuale, dischi;
  • il binding degli indirizzi, spazi logici e fisici di indirizzamento, la rilocazione;
  • tecniche di allocazione: contigua, la paginazione, la segmentazione; la frammentazione;
  • la memoria virtuale: paginazione a richiesta, algoritmi di sostituzione delle pagine, il thrashing, il modello Working set.
 
5. Input/Output:
  • tipi di dispositivi di I/O - principi dell'hardware di I/O;
  • gestione a basso livello dei dispositivi di I/O - PIO, DMA, DVMA;
  • il trattamento delle interruzioni, i driver di I/O - I/O bloccante, non bloccante, asincrono - interfaccia per le applicazioni;
  • i dischi - algoritmi di schedulazione dei dischi.
 
6. Il file system:
  • il file, attributi, operazioni, struttura fisica;
  • metodi di accesso sequenziale, diretto, a indice;
  • le directory e la struttura logica di un file system: piatta, gerarchica, a grafo;
  • la protezione; la consistenza;
  • implementazione dei file system: organizzazione, allocazione e gestione spazio libero, backup e restore;
  • struttura di un disco: gestione delle partizioni, gestione delle aree di swap;
  • il caso di Unix: UFS, EXT2. Tabelle in kernel. Il Virtual File System. Risoluzione dei nomi in inode;
  • operazioni su dischi, partizioni e file system;
  • cenni ai journaled file system.
 
7. Sistemi con processori multipli:
  • concetti generali - processori strettamente/debolmente accoppiati;
  • multiprocessori - aspetti hardware, software. Limitazioni;
  • multicomputer - aspetti hardware - comunicazione a basso livello, a livello utente - RPC - memoria condivisa distribuita;
  • sistemi distribuiti - servizi e protocolli di rete, e distribuiti - il modello client/server, protocolli - modello ISO/OSI, la suite TCP/IP - middleware di comunicazione;
  • modelli distribuiti basati sulla migrazione dei dati, della computazione, dei processi; su coordinazione distribuita;
  • chiamate di procedure remote (RPC) - esempio di servizio distribuito: NFS.
8. Cenni a problematiche di sicurezza

 

Bibliografia
Testi consigliati:
1. A. Silberschatz, P.B. Galvin, G. Gagne, "Sistemi operativi" (sesta ed.). Addison-Wesley, 2002. ISBN 88-7192-140-2.
2. Andrew S. Tanenbaum, "I moderni sistemi operativi" (seconda ed.). Jackson Libri, 2002. ISBN 88-256-1898-0.

Testo di consultazione:
3. Harvey M. Deitel, Paul J. Deitel. David R. Choffnes "Sistemi Operativi", (terza ed.). Pearson - Prentice Hall, 2005. ISBN 88-7192-224-7.

 

Lucidi delle lezioni (formato PDF)

 

Calcolo del voto
Il voto si calcola tenendo conto di due componenti:
  1. la media dei compitini/il voto dell'esame scritto,
  2. la media dei voti relativi ai tre progetti del Corso di Laboratorio di Sistemi Operativi.
Il primo componente pesa per due terzi del voto finale, il secondo per un terzo.

 

Primo compitino (15/12/2005)
Si considera superato il primo compitino se il proprio voto è maggiore o uguale a 15. Chi non ha superato la prova potrà comunque iscriversi e sostenere il secondo compitino che avrà luogo durante il primo appello di marzo (21/03/2006, ore 10, aule H, I) e recuperare il primo compitino nell'appello successivo di aprile (04/04/2006, ore 10, aule H, I). In entrambi gli appelli sarà possibile naturalmente svolgere il compito completo.

 

Appello del 21/03/2006
Si considera superato il secondo compitino se il proprio voto è maggiore o uguale a 15. Chi non ha superato uno dei due compitini, potrà recuperarlo nell'appello di aprile (04/04/2006, ore 10, aule H, I). In alternativa sarà possibile naturalmente svolgere il compito completo.

 

Appello del 04/04/2006
Si considera superato il compitino se il proprio voto è maggiore o uguale a 15. A partire dal prossimo appello sarà possibile sostenere soltanto l'esame completo.

 

Appello del 07/07/2006
Si considera superato lo scritto se il proprio voto è maggiore o uguale a 15.

 

Appello del 07/09/2006
Si considera superato lo scritto se il proprio voto è maggiore o uguale a 15. I voti compariranno su Sindy il giorno 18/09/2006 prima della prova orale.

 

Appello del 05/12/2006
Si considera superato lo scritto se il proprio voto è maggiore o uguale a 15.