Corso di Laurea in Informatica
Sistemi Operativi 2004/2005
Marco Comini e Marina Lenisa
pagina aggiornata il
7-04-2006
Indice
Descrizione del corso
Programma
Bibliografia e altro materiale didattico
Esami
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 complementare 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 definitivo
- 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.
- Coordinazione Distribuita
- Protezione e Sicurezza
- implementazioni della matrice d'accesso
- vulnerabilità delle passwords
- Cavalli di Troia, Trap Doors, Worms e Viruses
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, Modern Operating Systems (II
ed.). Prentice Hall, 2001. ISBN 0-13-031358-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 la prima
parte di corso (tenuta da Marina
Lenisa)
- Trasparenze usate in aula, per la seconda parte di corso
(tenuta da me) (ancora in fase di completamento, provvisoriamente utilizzare
quelle di Marino
Miculan)
Trasparenze usate in aula, per la terza
parte di corso
(tenuta da me)
- 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.
Modalità d'esame
L'esame di Sistemi Operativi si
compone di una prova scritta, di una prova di laboratorio,
ed (eventualmente) di una prova orale (soprattutto per discriminare le situazioni "di
confine" o, in ogni caso, "sospette" e/o dare la possibilità di
alzare il voto rispetto a quanto determinato da scritto e laboratorio).
- Prova Scritta:
-
La prova scritta richiede di:
- svolgere degli esercizi analoghi a quelli presentati nelle esercitazioni
e/o
- rispondere ad alcune
domande sugli argomenti trattati nelle lezioni.
La prova scritta può essere sostenuta anche se non si è ancora
sostenuta la prova di laboratorio e viceversa.
Durante il corso, verranno svolti 2 compitini. Gli studenti che superano
positivamente i compitini vengono esonerati dalla prova scritta.
La prova scritta mantiene la sua validità per un anno, ossia una volta superato
lo scritto lo studente ha un anno di tempo per completare l'esame sostenendo
le rimanenti prove.
Ad ogni scritto (e ad ogni compitino) agli studenti verranno consegnati 2 possibili
testi d'esame e verranno dati 5 minuti per scegliere la prova che intenderanno
sostenere fra:
- Basic: consistente essenzialmente in una serie di domande
sugli argomenti trattati durante le lezioni;
- Advanced: consistente essenzialmente in una serie di esercizi
analoghi a quelli presentati durante le esercitazioni.
Ovviamente il voto ottenibile con le due prove non è il medesimo. In particolare
i voti ottenibili con una prova Basic o Advanced sono, rispettivamente, all'interno
del range 16-22 o 23-30+. Si considereranno valide solo le prove sostenute
per cui si è ottenuto un voto all'interno del range previsto. In particolare
una prova Advanced che non ottenga almeno 23 non sarà considerata valida.
Ogni volta che si consegna per la correzione una prova scritta si cancella
ogni eventuale voto ottenuto su prove corrispondenti (primo
compitino, secondo compitino, scritto completo; quest'ultimo cancella pure
i compitini)
-
Prova di Laboratorio:
- Per informazioni sulle modalità della prova di laboratorio si consultino
le istruzioni sulla relativa pagina del corso di Laboratorio
di Sistemi Operativi.
-
Prova Orale (se necessaria) e Registrazione Voto Esame:
-
La prova orale consiste nella discussione di alcuni degli argomenti trattati
a lezione. Per poter sostenere la prova orale o registrare il voto dell'esame
(se la prova orale non fosse necessaria), è necessario:
- aver superato la prova di laboratorio;
- aver superato una prova scritta da meno di un anno e con un voto maggiore o uguale a 16.
Nel caso la prova orale non venga superata o si decida di non accettare il voto, le rimanenti prove rimangono valide al fine di sostenere un secondo esame orale.
-
Iscrizioni Necessarie:
-
Si ricorda che sia per potersi presentare alle prova scritta che a
quella orale è necessaria l'iscrizione elettronica (mediante il sito
www.sindy.uniud.it).
Esami passati
Potete inoltre scaricare in formato elettronico (parte dei) testi e/o soluzioni
dei compiti passati:
- testo e (parziali) soluzioni del compito del 2005/09/21 advanced e
basic
- testo e (parziali) soluzioni del compito del 2005/09/02 advanced e
basic
- testo e (parziali) soluzioni del compito del 2005/07/07 advanced e
basic
- testo e soluzioni del secondo compitino del 2005/03/18
advanced e
basic
- testo e soluzioni del primo compitino del 2005/04/06 advanced e
basic
- testo e soluzioni del secondo compitino del 2005/04/06 advanced e
basic