**************************************************************************** PROGRAMMA DETTAGLIATO DI SEI-2 Sillabus estratto da Davide Silvestri durante le lezioni 1995-96 **************************************************************************** 1. Introduzione - Architettura di un sistema di elaborazione - Definizione di Sistema Operativo - Evoluzione storica dei Sistemi Operativi 2. Programmazione Concorrente - Concetti di base: processi, ordinamento parziale, grafi di precedenza - Condizioni di Bernestein - I costrutti fork & join, parbegin...parend e loro confronto - Proprieta' di un programma concorrente: safety, liveness - Problemi: deadlock, starvation, lockout - Esempi di race condition: spooler di stampa - Problema della sezione critica: mutua esclusione - Algoritmi di Dekker e Peterson - Confronto delle soluzioni software - Primitive hardware per mutua esclusione - Uso di test-and-set - Definizione e realizzazione dei semafori - Realizzazione con semafori di un arbitrario grafo di precedenza - Esempi di uso dei semafori - Produttore consumatore con buffer limitato - Lettori-scrittori con priorita' ai lettori - Definizione di monitor - Operazioni wait e signal su condition variable - Esempi di uso di monitor - Produttore-consumatore con buffer limitato - Lettori-scrittori - Classificazione del monitor: tipo Monitor, tipo Manager, tipo Mediator, tipo Gladiator 3. Gestione dei processi - Quali sono le caratteristiche di esecuzione-attesa dei processi? - Che cosa e' il Process Control Block? - Criteri per lo scheduling della CPU: fattore di utilizzazione, throughput, turnaround time - Short e long term scheduler - Principali algoritmi: FCFS, prelazioni, Shortest Job First, Shortest Remaning Time First, Round Robin, Multilevel con feedback - Descrivere brevemente lo scheduler di Minix 4. Gestione di Input/Output - Principi: device independence, uniform naming, error handling - Classificazione: block, character device - Struttura di un device - Gestione dell'unita' disco: organizzazione fisica - Algoritmi di scheduling del braccio: FCFS, SSF, Elevator - Gestione degli errori - Gestione DMA di un disco - Gestione di Input/Output in Minix - I clock - I terminali 5. Gestione della memoria - Gerarchie di memoria - Singolo utente, swapping, partizioni multiple fisse e variabili - Frammentazione interna ed esterna - Paginazione pura - Segmentazione pura - Segmentazione paginata - Memoria virtuale - Gestione del page-fault - Politiche di rimpiazzamento di pagine: FIFO (anomalia di Belady), ottima, LRU - Approssimazioni LRU - Che cos'e' e come si previene il thrashing - Quante pagine assegnare ad un processo in esecuzione: working set, resident set - Il gestore della memoria in Minix - Contenuto della memoria dopo il caricamento del sistema - Strutture dati principali e loro gestione - Primitive fork ed exec 6. Gestione del file system - Differenze tra file, directory e file system - Metodi di accesso ai file: sequenziale, diretto, indice - Scelta della dimensione del blocco - Memorizzazione file: FAT del DOS - Memorizzazione directory: DOS, Unix - Organizzazione di Minix - Strutture dati principali e loro gestione in Minix: super-block, i-node, block cache, tabella dei processi, file descriptor, file position table - Gestione di directory e path name - Ricerca di un file in un file system montato - Vantaggi di un file system montato - Pipe e file speciali - Meccanismi di protezione - Dominio di protezione - File server: interfaccia, aggiornamento atomico, controllo della concorrenza, transazioni, replicazione 7. Deadlock - Quali sono le condizioni necessarie per l'esistenza di deadlock e come possono essere utlizzate per evitarlo? - Utilizzo del grafo di allocazione delle risorse - Deadlock prevention - Deadlock avoidance (algoritmo del banchiere) - Deadlock detection e recovery 8. Sistemi distribuiti - Motivazioni: condivisione di risorse, parallelismo affidabilita', sistema di comunicazione - Descrivere le caratteristiche fondamentali delle varie topoloigie di interconnessione - Architettura standard ISO/OSI (cenni) - Strategie di routing: fissa, dinamica, circuiti virtuali - Strategie di connessione: a commutazione di circuito, di messaggio, di pacchetto - Risoluzione di contese: collision detection, token ring, message slot - Descrivere un protocollo di comunicazione su bus: Ethernet - Quali sono i problemi nell'applicazione in ambiente distribuito dei vari metodi studiati per evitare o risolvere problemi di deadlock in ambiente uniprocessore? - Descrivere i protocolli wound-wait e wait-die 9. Il sistema Minix - Come e' strutturato il sistema Minix e come si gestiscono i processi? - Comandi principali di Minix - Come funziona lo scheduler di Minix? - Quali sono le primitive di Minix per la gestione dei processi? - Come fa il main di Minix a creare inizialmente i vari processi? - Quale e' lo schema di un task? - Come fanno i processi Minix a comunicare fra loro? 10. Performance e gerarchie di memoria - Cos'e' la prestazione relativa? - Ricavare la legge di Amdahl - Gerarchie gerarchie di memoria - Definizione di MIPS e MFLOP - Cache memory - Dove deve essere messo un blocco nella Cache? (Block Placement) - Come si trova un blocco se e' in cache? (Block indetification) - Quale blocco della cache bisogna rimpiazzare se c'e' read miss ? (Block Replacement) - Cenni di cache a due livelli