Programma del corso

Parte prima: Sistemi Operativi
Introduzione
Cos'e' un sistema operativo? - Sistemi batch semplici (cenni) - Sistemi batch multiprogrammati (cenni) - Sistemi time-sharing - Personal computer - Sistemi paralleli - Sistemi distribuiti - Sistemi real-time
Strutture dei sistemi di calcolo
Funzionamento di un sistema di calcolo - Struttura di I/O (cenni) - Struttura della memoria (Memoria centrale - Dischi magnetici - Nastri magnetici) - Gerarchia delle memorie (cenni) (Cache - Coerenza e consistenza) - Architettura di un generico sistema
Strutture dei sistemi operativi
Componenti del sistema (Gestione dei processi - Gestione della memoria centrale - Gestione dei file - Gestione del sistema di I/O - Gestione della memoria secondaria - Reti - Sistema di protezione (cenni) - Interprete dei comandi) - Servizi di un sistema operativo - System call [Processi - Comunicazione interprocesso - Sincronizzazione> (Manipolazione dei file (cenni) - Gestione dei dispositivi - Gestione delle informazioni (cenni) - Comunicazione) - Programmi di sistema - Struttura di sistema (Struttura semplice - Approccio stratificato) - Macchine virtuali - Progettazione e realizzazione di un sistema (Scopi della progettazione - Meccanismi e politiche - Realizzazione) - Generazione di sistemi
Processi
Concetto di processo (Processo - Stato di processo - Process control block) - Scheduling dei processi (Code di scheduling - Scheduler - Context switch) - Operazioni sui processi (Creazione di un processo - Terminazione di un p rocesso) - Processi cooperanti - Thread (cenni) - Comunicazione tra processi (Struttura di base - Nominazione - Buffering)
Scheduling della CPU
Concetti di base (Ciclo di CPU-I/O burst - Scheduler della CPU - Scheduling con prelazione - Dispatcher) - Criteri di scheduling - Algoritmi di scheduling (Scheduling first-come, first served - Scheduling shortest-job-first, Scheduling con priorita' - Scheduling round-robin - Scheduling con code multipla
Sincronizzazione dei processi
Introduzione - Problema della sezione critica (Soluzione per due processi - Soluzione per piu' processi) - Hardware di sincronizzazione - Semafori (Uso dei semafori - Realizzazione - Deadlock e starvation - Semafori binari) - Problemi tipici di sincronizzazione (Problema del buffer limitato - Problema dei lettori e degli scrittori - Problema dei cinque filosofi) - Regioni critiche
Deadlock
Modello del sistema - Caratterizzazione dei deadlock (Condizioni necessarie - Grafo di allocazione risorse) - Metodi per la gestione dei deadlock - Prevenire i deadlock (Mutua esclusione - Possesso e attesa - Impossibilita' di prelazione - Attesa circolare) - Evitare i deadlock (Stato sicuro - Algoritmo con grafo di allocazione delle risorse - Algoritmo del banchiere) - Rilevamento dei deadlock (cenni) - Ripristino da situazioni di deadlock (Terminazione di processi - Prelazione di risorse)
Gestione della memoria
Introduzione (Binding degli indirizzi - Caricamento automatico - Collegamento dinamico) - Swapping - Allocazione contigua (Allocazione con partizione singola - Allocazione con partizioni multiple - Frammentazione interna ed esterna) - Paginazione (Metodo di base - Struttura della tabella delle pagine - Paginazione a piu' livelli - Tabella delle pagine invertita - Pagine condivise) - Segmentazione (Metodo di base - Hardware - Realizzazione delle tabelle dei segmenti - Protezione e condivisione)
Memoria virtuale
Introduzione - Paginazione su richiesta - Prestazioni della paginazione su richiesta - Sostituzione delle pagine - Algoritmi di sostituzione delle pagine (Algoritmo FIFO (cenni) - Algoritmo LRU (cenni) - Algoritmi con conteggio) - Allocazione dei frame (cenni) - Segmentazione su richiesta (cenni)
Interfaccia del file system
Concetto di file (Attributi dei file - Operazioni sui file - Tipi di file - Struttura di file - Struttura interna dei file) - Metodi di accesso (Accesso sequenziale - Accesso diretto - Altri metodi di accesso) - Struttura di directory (Directory a livello singolo (cenni) - Directory a due livelli (cenni) - Directory con struttura ad albero (cenni) - Directory con struttura a grafo aciclico (cenni) - Directory con struttura a grafo generale (cenni)) - Protezione (cenni)
Parte seconda: Programmazione concorrente
Il linguaggio C
Primitive del linguaggio - Variabili - Tipi - Costrutti condizionali - Costrutti iterativi - Puntatori - File - Sottoprogrammi
Programmazione concorrente
Primitive per la gestione dei processi - Primitive per la gestione dei messaggi - Primitive per la gestione dei semafori - Sincronizzazione dei processi - Mutua esclusione tra processi
Esercitazioni
Parte terza: Reti di Calcolo
Strutture delle reti di comunicazione
Introduzione - Motivazione (Condivisione delle risorse - Accelerazione dei calcoli - Affidabilita' - Comunicazione) - Topologia (Reti totalmente connesse - Reti parzialmente connesse - Reti gerarchiche - Reti a stella - Reti ad anello - Reti con bus multiaccesso - Reti ibride) - Tipi di rete (Reti locali - Reti gerarchiche) - Comunicazione (Nominazione e risoluzione dei nomi - Strategie di instradamento - Strategie riguardanti i pacchetti - Strategie di connessione - Contesa) - Strategie di progetto - Un esempio di comunicazione in rete
Materiale didattico sulle reti di calcolo