Sistemi operativi e laboratorio
Docente
Prof. Marina Lenisa marina.lenisa@uniud.it http://www.dimi.uniud.it/lenisa
Crediti
12 CFU
Finalità
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 verranno illustrate tecniche di programmazione concorrente e gli aspetti concernenti il calcolo parallelo e distribuito.
Programma
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.
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.
Bibliografia
- Trasparenze usate in aula dal docente
- A. Silberschatz, P.B. Galvin, G. Gagne, Sistemi operativi (ottava ed.). Pearson, 2009.
- A. Tanenbaum, I moderni sistemi operativi (terza ed.). Pearson (Prentice Hall), 2009.
Modalità d'esame
Prova scritta + prova orale facoltativa