Corso di Sistemi Operativi e Laboratorio
Laurea in Informatica
A.A. 2018/2019
docenti: Marina Lenisa, Ivan Scagnetto
Orario delle lezioni:
giovedi 8.30-10.30 (aula F) e venerdi 8.30-10.30 (aula I)
Indice
Descrizione del corso
Programma
Bibliografia
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 verranno illustrate 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, etc.)
Parallelamente, il corso 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.
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.
- 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.
Bibliografia
Testi consigliati
- A. Silberschatz, P.B. Galvin, G. Gagne, Sistemi operativi
(nona ed.). Pearson, 2014
- A. Tanenbaum, H. BosI moderni sistemi operativi (quarta
ed.). Pearson (Prentice Hall), 2016.
Si consiglia
di integrare i testi precedenti con appunti presi a
lezione e le seguenti trasparenze usate in aula:
- Introduzione, evoluzione, tipi di sistemi operativi
- Richiami di hardware
- Componenti, servizi e strutture dei S.O.
- Processi e Thread
- Scheduling di breve termine
- Processi cooperanti
- Deadlock
- Gestione della memoria
- Memoria virtuale
- Le restanti trasparenze sono disponibili sul sito
dott. Ivan Scagnetto.
Modalità di esame
Scritto + laboratorio + eventuale esame orale.
Sia l'esame scritto che quello di laboratorio si considerano superati con un voto maggiore o uguale a 15. L'esame orale è obbligatorio se la
media pesata con i crediti dei voti dello scritto (9 CFU) e del laboratorio (3 CFU) è maggiore o uguale
a 15 ma inferiore a 18, cioè 15 ≤ (9*vs + 3*vl)/12 < 18, dove vs indica il voto dello scritto e vl il
voto del laboratorio.
Esame scritto:
C'è la possibilità di sostenere l'esame scritto in 2 parti: I prova (febbraio), II prova (giugno, I appello della sessione estiva). Per chi non superasse una delle due prove, c'è la possibilità di un recupero a luglio (II appello della sessione estiva). In alternativa, si può sostenere l'esame completo a partire da giugno. Da settembre si può sostenere solo l'esame completo.