Corso di Laurea in Informatica - A.A. 2003-04
Corso di Sistemi Operativi
Indice
Descrizione del corso
Programma
Bibliografia
Orario lezioni e ricevimento studenti
Esami
Risultati degli scritti
Descrizione del corso
I sistemi operativi sono parte essenziale di un sistema di calcolo.
Nella maggior parte dei casi, essi implementano la vera piattaforma
sulla quale si svolge tutta l'attività di analisi, sviluppo,
implementazione ed esecuzione dei sistemi software, incapsulando ed
astraendo dal sistema hardware sottostante.
È pertanto necessario che uno studente di Informatica possieda le basi
per comprendere le principali problematiche relative all'efficace
utilizzo (da utente, da progettista, da programmatore, da
amministratore) di un sistema operativo moderno.
Allo scopo di fornire tali basi, durante il corso verranno discussi alcuni
concetti fondamentali relativi ai sistemi operativi e
alle loro funzionalità primarie (gestione dei processori,
della memoria e dei dispositivi di ingresso/uscita).
Inoltre un moderno informatico non può non conoscere tecniche di
programmazione concorrente, e gli aspetti concernenti
il calcolo parallelo e distribuito.
I concetti generali previsti per il corso, ampliamente coperti dal
materiale bibliografico consigliato, verranno discussi a lezione in
maniera relativamente indipendente da specifici sistemi operativi.
Essi saranno comunque esemplificati facendo riferimento a comuni
sistemi operativi (Unix, Linux, Windows 2000, etc.)
Parallelamente, il corso accessorio di Laboratorio di
Sistemi Operativi offre l'opportunità allo studente di mettere in
pratica le nozioni apprese e di verificarne la comprensione. Inoltre
tale corso offrirà le nozioni di base relative all'uso di
linguaggi di scripting, della
programmazione di sistema e della
programmazione distribuita.
Allo studente, oltre che capire ed imparare quanto suggerito a
lezione, verrà chiesto di svolgere alcuni
progetti. Condizione necessaria per sostenere l'esame di
Sistemi Operativi è lo svolgimento dei progetti obbligatori del
corso di Laboratorio.
Programma
- 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.
- 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;
- Programmazione concorrente
- race conditions, 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
- 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
- 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.
- 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.
- 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.
È possibile scaricare il diario completo
delle lezioni tenute durante l'anno accademico 2003-04, in formato PDF.
Bibliografia
Testi consigliati
I due testi migliori per questo corso sono i seguenti:
- A. Silberschatz, P.B. Galvin, G. Gagne, Sistemi operativi
(sesta ed.). Addison-Wesley, 2002. ISBN 88-7192-140-2.
- A. Tanenbaum, I moderni sistemi operativi (II
ed.). Jackson Libri, 2002. ISBN 88-256-1898-0.
Sono entrambi eccellenti, ma in parte complementari: ci sono aspetti
trattati meglio in uno che nell'altro, e viceversa. Per questo è
essenziale integrare ognuno dei testi precedenti con appunti presi a
lezione e il seguente materiale:
- Trasparenze usate in aula, per l'intero corso: in un unico file PDF, oppure in parti:
- Introduzione generale
- Richiami di hardware, e strutture dei S.O.
- Servizi e Strutture dei S.O.
- Processi e Thread
- Scheduling di breve termine
- Processi cooperanti
- Deadlock
- Gestione della memoria
- Gestione della memoria virtuale
- Gestione dell'I/O
- Gestione del File System
- Sistemi a più processori
- Cronologia di Unix
Testi di consultazione
- Distributed Systems, A. Tanenbaum, M.R. Van Steen. Prentice Hall, 2002.
Il naturale completamento in ambito distribuito del testo precedente.
- UNIX for Programmers and Users, seconda edizione.
Graham Glass, King Ables. Prentice-Hall, 1999.
Specialmente il capitolo 13, sugli internal di Unix.
- Unix system programming, Keith Haviland, Dina Gray, Ben Salama,
seconda edizione. Addison Wesley, 1998. ISBN: 0-201-87758-9.
Buon libro di programmazione, ricco di esempi. Non tratta i threads.
Orario delle lezioni e ricevimento
Ricevimento: lunedì, martedì, dalle 14 alle 16.
Il ricevimento si svolge presso lo studio del docente (SN13, Dipartimento di
Matematica e Informatica). Eventualmente anche su appuntamento:
miculan@dimi.uniud.it
Modalità d'esame
L'esame è organizzato in una prova scritta, seguita eventualmente da
un esame orale (soprattutto per discriminare le situazioni "di
confine"). Per l'ammissione all'orale e alla registrazione è
necessario aver svolto con successo i progetti obbligatori del corso
di Laboratorio S.O.
Ecco alcune FAQ:
- Quanto conta il voto del corso di Laboratorio S.O.?
- Il
10% del totale. Più precisamente, il voto dell'esame è determinato
dalla somma di tre valori:
Vfinale = Vscritto + Vlab + Vorale
dove, in generale
- 0 ≤ Vscritto ≤ 27
- 0 ≤ Vlab ≤ 3
- -3 ≤ Vorale ≤ 3; 0 se non sostenuto.
- Precisamente, cosa è una "situazione di confine"?
- L'ammissione e l'obbligatorietà dell'esame orale è data dalla seguente regola
- Vscritto + Vlab ≤ 15: non ammesso
- 16 ≤ Vscritto + Vlab ≤ 19: obbligatorio
- 20 ≤ Vscritto + Vlab ≤ 27: facoltativo
- 28 ≤ Vscritto + Vlab: obbligatorio
Ne consegue che per essere ammessi all'orale è necessario aver conseguito il voto di Laboratorio S.O.
- In cosa consiste l'orale?
- In due-tre di domande. Con l'orale si può variare il voto dello scritto al massimo di due-tre punti. In più, ma anche in meno.
- Le domande saranno su argomenti teorici del libro e dispense, o qualcos'altro?
- Su argomenti teorici del libro, delle dispense e trattati in aula.
Ma anche qualcos'altro.
- Se l'orale va male, posso tenermi il voto dello scritto?
- No. Una volta iniziato l'orale, questo fa parte integrante dell'esame e
concorre alla formazione del voto finale.
- È necessario iscriversi su Sindy per sostenere lo scritto?
- Sì.
Dato che i compiti verranno preparati in funzione del numero di
iscritti, per essere ammessi all'esame è necessario
iscriversi presso Sindy (http://www.sindy.uniud.it/) almeno
due giorni prima la data dello scritto. Chi non fosse in grado
di iscriversi via web, può contattarmi direttamente via email.
- È necessario iscriversi su Sindy per sostenere l'orale?
- No, in quanto gli ammessi all'orale si sono già iscritti su Sindy per lo scritto.
- È necessario aver conseguito il voto di Laboratorio per sostenere l'orale?
- Sì. Vedi sopra.
- In quale ordine si svolgono gli orali?
- Nell'ordine di iscrizione su Sindy (per gli scritti)
- Quando si registra il voto di chi ha superato lo scritto ma non
deve (né vuole) fare l'orale?
- I voti intermedi (tra 20 e 27, compresi) vengono registrati il
giorno dell'orale, prima di iniziare gli orali.
Risultati delle prove scritte
Appelli:
- 22/03/2004: risultati.
- 07/04/2004: risultati.
- 19/07/2004: risultati.
- 07/09/2004: risultati.
- 29/11/2004: risultati, soluzione.
Marino Miculan