275/00 A.A. 2000/01 CORSO DI LAUREA PROGRAMMA DEL CORSO DI DOCENTE UNIVERSITA' DEGLI STUDI DI TRIESTE INGEGNERIA ELETTRONICA SISTEMI OPERATIVI Enzo MUMOLO Introduzione al corso: obiettivi del corso, definizioni di base, servizi di un S.O., il S.O. come rete di code, come gestore risorse, come macchina astratta. Storia dei S.O.; classificazione secondo la organizzazione interna; sistemi monolitici, stratificati, client/server Nozioni di base sui S.O.; risorse, processi, PCB, stati di un processo, file, protezione delle risorse, processi demoni Introduzione a Unix dal punto di vista dell’utente, file mode, PID, GID, ID effettivo, ereditarieta’, redirezione, processi in foregroud, background, struttura del file system Unix come macchina astratta: comandi utente, shell, editors, programmazione in shell, espressioni regolari, Perl, esempi di programmazione, esercitazioni pratiche Processi concorrenti in un ambiente a memoria condivisa. Sequenze di esecuzione, determinatezza di un sistema di task, condizioni necessarie e sufficienti. Mutua esclusione, soluzioni software, algoritmo di Peterson, soluzioni hardware, sleep/wakeup, semafori, costrutti linguistici. Stallo, prevenzione, rilevamento e recupero, evitare lo stallo, algoritmo del banchiere, rilevare lo stallo con piu’ risorse e piu’ istanze per risorsa. Il S.O. Unix o Buffer cache, algoritmi di basso livello per la gestione del file system e dei processi, tabella processi, area-U, gestione memoria o Chiamate di sistema per la gestione del file system e dei processi. Primitive di IPC, pipe, fifo, messaggi, semafori, memoria condivisa, segnali, equivalenza tra le primitive. Chiamate di sistema per la gestione di IPC tramite socket. o Programmazione di sistema in C. Programmazione multithreaded in Solaris. Esempi di programmazione, esercitazioni pratiche Gestione risorse. o Gestione dell’unita’ centrale. Schedulazione ottima, processi CPU-bound e I/O bound, predizione del tempo di elaborazione, schedulazione prioritaria, schedulazione Round Robin, soluzioni ibride, importanza del tempo di context switch o Gestione memoria in multiprogrammazione. Partizioni fisse/variabili, compattazione della memoria, gestione della memoria contigua, regola del 50%, liste concatenate, bitmap, buddy system. Frammentazione interna ed esterna. Memoria virtuale, tempo reale/tempo virtuale, rimpiazzamento, anomalia FIFO, approccio NUR, orologio, rimpiazzamento ottimo di Belady, PMT, tabella delle pagine invertite, supporto HW, MMU, TLB. Working set, descrizione formale, algoritmo PFF, contatore. o Gestione del file system, allocazione blocchi dati, vettore di bit, concatenazione, raggruppamento, conteggio. Inconsistenza del fs. Efficienza del fs, cluster, cache, ram disk o Gestione dischi, cache, controller, schedulazione del disco, posizione di riposo delle testine, dischi RAID, livelli, organizzazione, codice di Hamming o Gestione delle reti di calcolatori Cenni di sistemi operativi in tempo reale: problematiche, algoritmi di schedulazione di processi aperiodici e periodici. Progetto e analisi di un S.O. mediante simulazione ad eventi discreti; richiami di variabili aleatorie, funzioni di distribuzione, generazione di v.a. uniformi, test chi-quadro, gaussiane, metodo della funzione inversa, generazione esponenziale, proprieta’ markoviava, programmazione, schema di principio di un simulatore, meccanismi di avanzamento del tempo, analisi dei risultati, stima puntuale, intervallare. Esempi di simulazione di un sistema batch, con piu’ processori, con piu’ code di priorita’. Esempi di analisi di un sistema time sharing, della schedulazione, della gestione memoria e dei dischi con simulazione discreta Cenni sulla realizzazione di un S.O.: il sistema sperimentale Yatos (Yet Another Tiny OS) Conclusioni