Programma Definitivo Sistemi Operativi + Laboratorio (Corso A) a.a.2002/2003 Docente: Impedovo Sebastiano 1) INTRODUZIONE AI SISTEMI OPERATIVI Obiettivi e funzioni dei sistemi operativi: v Il sistema operativo come interfaccia utente/computer; v Il sistema operativo come gestore delle risorse; v Facilità di evoluzione di un sistema operativo. Evoluzione dei sistemi operativi: v Elaborazione seriale; v Semplici sistemi batch; v Sistemi batch multiprogrammati; v Sistemi time-sharing. Aspetti principali di un sistema operativo: v Processi; v Gestione della memoria; v Protezione dell’informazione e sicurezza; v Schedulazione e gestione delle risorse; v Struttura del sistema. Caratteristiche dei sistemi operativi moderni. Panoramica su windows NT: v La storia ; v Multitasking a singolo utente; v Architettura di Windows NT: NT executive; Sottosistemi di ambiente; Modello Client/Server; Thread ed SMP; Oggetti in Windows NT. Sistemi UNIX tradizionali: v Storia; v Descrizione. Sistemi UNIX moderni: v Sistema V Release 4 (SVR4) v Solaris 2.x v 4.4 BSD. 2) DESCRIZIONE E CONTROLLO DEI PROCESSI Stati dei processi: v Un modello a due stati; v Creazione e terminazione dei processi; v Un modello a cinque stati; v Processi sospesi. Descrizione dei processi: v Strutture di controllo dei processi; v Attributi dei processi; v EFLAGS del Pentium; v Il ruolo del PCB. Controllo dei processi: v Modi di esecuzione; v Creazione dei processi; v Cambio dei processi: cambiamento di modo, cambiamento dello stato di un processo; v Esecuzione del Sistema Operativo: Kernel non implementato con processi; Esecuzione all’interno dei processi utente; Sisitemi operativi basati sui processi. Gestioni dei processi in UNIX SVR4: v Stati dei processi; v Descrizione dei processi. v Controllo dei processi in UNIX e fork 0. 3) TREAD, SMP E MICROKERNEL Processi e thread: v Multithreading; v Funzionalità dei thread; v Thread a livello utente e di Kernel. Multiprocessing simmetrico: v Architettura SMP; v Organizzazione SMP; v Considerazioni per la progettazione di sistemi operativi multiprocessore: v Processi e thread concorrenti; v Schedulazione; v Sincronizzazione; v Gestione della Memoria. Microkernel. v Architetutra del Microkernel; v Benefici di un’organizzazione a mikrokernel; v Prestazioni del Microkernel; v Progettazione del Microkernel. Thread e SMP in Windows NT. v Oggetti di tipo processo e di tipo thread v Multithreading; v Stati dei thread; v Supporto per i sottosistemi del sistema operativo; v Supporto al multiprocessing. Thread e gestione del SMP in Solaris: v Architettura multithreading; v Motivazioni v Struttura dei processi; v Esecuzione dei thread; v Interrupt come thread. 4) CONCORRENZA: Mutua esclusione e sincronizzazione. Proncipi della concorrenza: v Un semplice esempio; v Problemi di concorrenza nei sistemi operativi; v Interazione tra processi : competizione per le risorse; cooperazione tramite condivisione; cooperazione tramite comunicazione. Mutua esclusione: approcci software. v Algoritmo di Dekker: Insidie della programmazione concorrente. 1°, 2°, 3°, 4° tentativo di soluzione e la soluzione corretta. v Algoritmo di Peterson (facoltativo). Mutua esclusione supporto hardware: v Abilitazione e disabilitazione degli interrupt; v Istruzioni di macchina speciali: Test and set e Scambio. v Uso di Test-set e Scambio per la mutua esclusione. Semafori: v Definizione della primitiva Signal e wait; v Primitive Signal e wait per i semafori binari; v Mutua esclusione con semafori. Il problema del produttore consumatore v Soluzione del problema produttore-consumatore con semafori binari nel caso di buffer infinito v Soluzione generale del problema del produttore-consumatore nel caso di buffer infinito; v Soluzione del problema del produttore-consumatore nel caso di buffer finito. v Monitore v Il problema lettori scrittori (facoltativo). 5) SCHEDULING Introduzione allo scheduling Scheduler di lungo, medio e breve termine Schema di collocazione degli scheduler Frequenza di scheduling Scheduling e valutazione delle prestazioni v sfruttamento della CPU v lavoro utile v tempo di ricircolo v tempo di attesa v tempo di risposta Algoritmi di scheduling metodi interrompenti e non interrompenti Scheduling con modello First Come First Served Scheduling con modello Short Remaining Time Next Scheduling con modello Round Robin Scheduling con modello interrompibile basato sulla priorità (Event Driven) Scheduling con modello a code multiple Scheduling con modello a code multiple con retroazione 6) STALLO Le risorse Gli stalli v Condizioni per lo stallo v Modelli per le situazioni di stallo L’algoritmo dello struzzo L’identificazione e la risoluzione dello stallo v L’identificazione dello stallo con una risorsa per ogni classe v L’identificazione dello stallo con risorse multiple per ogni classe v La risoluzione dello stallo Evitare lo stallo v Traettorie di risorsa v Stati sicuri e non sicuri v L’algoritmo del banchiere per una singola risorsa v L’algoritmo del banchiere per risorse multiple La prevenzione delle situazioni di stallo v Negazione della condizione di mutua-esclusione v Negazione della condizione di hold-and-wait v Negazione della condizione di mancanza di prerilascio v Negazione della condizione di attesa circolare 7) GESTIONE DELLA MEMORIA 1) Introduzione: allocazione contigua della memoria v monoallocazione v partizionamento statico v partizionamento dinamico v segmentazione allocazione non contigua della memoria v paginazione v memoria virtuale Principi di base della gestione della Memoria Centrale Parametri di confronto degli schemi di gestione 2) Monoallocazione Principi Meccanismi di protezione (mediante supporti hardware): v registro barriera v diritti di accesso mediante bit di protezione v sistema operativo in memoria a sola lettura Meccanismi di condivisione Prestazioni 3) Partizionamento Statico Principi operativi Tabella delle partizioni Algoritmi di ricerca delle partizioni Swapping, supporti per lo swapping Frammentazione interna Condivisione nel partizionamento statico Meccanismi di protezione Prestazioni 4) Partizionamento Dinamico Principi operativi Tabella delle partizioni Tabella della memoria Algoritmi di ricerca delle partizioni Frammentazione esterna Compattazione, Tempi e modalità della compattazione Condivisione nel partizionamento dinamico Meccanismi di protezione Prestazioni 5) Segmentazione Principi Operativi Indirizzamento bi-dimensionale Caricamento dei processi Traduzione dell’indirizzo Tabella dei descrittori dei segmenti (TDS) Tabella e lista della memoria libera Registri barriera Commutazione di processo nella segmentazione Swapping nella segmentazione Compattazione nella segmentazione Protezione Condivisione Collegamento dinamico Prestazioni 6) Paginazione Principi operativi Pagine Tabella delle pagine Traduzione dell’indirizzo virtuale Restituzione delle pagine Frammentazione Ricerca delle pagine libere Supporti hardware per la paginazione Registri limite Cache di traduzione Protezione Condivisione Prestazioni 7) Memoria Virtuale Principi Operativi Memoria Virtuale con Paginazione Tabella delle pagine Tabella di descrizione dei file Interrompibilità dell’istruzione ed esempi esplicativi Gestione della memoria virtuale: v strategia di allocazione v strategia di ricerca v strategia di sostituzione v strategia di posizionamento Località dei programmi Algoritmi di sostituzione delle pagine v Algoritmo FIFO v Algoritmo LRU v Algoritmo di Belady v Algoritmo NRU Confronto operativo tra gli algoritmi Concetti di distanza futura e distanza passata Working-Set Supporti hardware per la memoria virtuale 8) FILE SYSTEM I file v Denominazione di File v Struttura dei File v Tipi di File v Accesso ai File v Attributi v Operazioni sui file v File mappati in memoria Le Directory v Sistemi Gerarchici di Directory v I path name v Operazioni sulle Directory Implementazione del File System v Implementazione dei File v Implementazioni delle Directory v File condivisi v Gestione dello spazio su disco v Affidabilità del file system v Prestazioni del file system Sicurezza v L’ambiente di sicurezza v Principi di progettazione per la sicurezza v Autenticazione dell’utente Meccanismi di protezione v I domini di protezione v Liste di controllo degli accessi v Le capability list v Modelli di protezione v Canali nascosti. PROGRAMMA DI LABORATORIO PER SISTEMI OPERATIVI Pratica con i comandi di WINDOWS : Gestione dei menu a tendina. Pratica con i comandi di LINUX: Comandi da Console; Pratica con l’interfaccia grafica GNOME. Esercitazioni su applicazioni per windows (dal Richter) (Facoltative) v Gestione degli errori in Windows v Unicode v Oggetti Kernel v I processi v Attività v Introduzione ai thread Testi di riferimento: Sistemi Operativi; W. Stallings; Jackson Libri, 2002 I moderni Sistemi Operativi. A.S. Tanembaum; Prentice Hall/ Jackson; 2002. Programmare Applicazioni per Windows; Mondadori Informatica/ Jeffrey Richter , 2002. Guida a LINUX Corso Completo; Luca Righi; Jackson Libri , 2002