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
|
|
|