438/95 A.A. 1995/96 UNIVERSITA' DEGLI STUDI DI TRIESTE _____________________________________________________________________ CORSO DI DIPLOMA PROGRAMMA DEL CORSO DI DOCENTE INGEGNERIA INFORMATICA AUTOMATICA SISTEMI OPERATIVI D.U. Paolo INCHINGOLO ED Generalità sui sistemi operativi. Struttura di un sistema operativo: sistemi monolitici, sistemi a livelli; macchine virtuali; sistemi basati su client-server. Storia dei sistemi operativi: dalla monoprogrammazione alla multiprogrammazione (multi-tasking); unità di i/o virtuali; macchine virtuali; sistemi distribuiti in rete (cluster); sistemi vettoriali; sistemi paralleli multiprocessore (a connessione stretta e a connessione debole); sistemi a parallelismo massiccio; calcolatori neurali; sistemi vettoriali-paralleli; sistemi operativi di rete. I processi: vita di un processo; controllo dei processi; identificatori; gerarchia e proprietà di processi. Chiamate di sistema (system calls). Il modello ISO/OSI. Comunicazioni inter-processo (IPC). Socket. Organizzazione di client e server (concorrenti o seriali) per comunicazione tra socket nella famiglia AF_UNIX. Problemi di gestione delle IPC: Corse critiche (race conditions) e relative soluzioni: mutua esclusione con attesa attiva (disabilitazione delle interruzioni, variabili di lock, alternanza stretta, soluzione di Peterson, istruzione TSL); sospensione e risveglio (soluzione di base, primitive sleep e wakeup, bit di attesa della sveglia, problema del buffer a capacità limitata; semafori; punto critico; stallo; contatori di eventi; monitor; scambio di messaggi. Schedulazione dei processi. Algoritmi di schedulazione; schedulazione senza prerilascio e con prerilascio; schedulazione di Round Robin; schedulazione con priorità; code multiple; shortest job first; schedulazione garantita; schedulazione a due livelli. Gestione della memoria. Gestore della memoria (memory manager); gestore senza swapping o paginazione. Monoprogrammazione senza swapping o paginazione; multiprogrammazione e uso della memoria; multiprogrammazione con partizioni fisse; rilocazione e protezione; registro hw base; registro hw limite. Gestore con swapping; multiprogrammazione con partizioni variabili; compattazione della memoria; gestione della memoria con bitmap e con liste concatenate; algoritmi first fit - next fit - best fit - worst fit - quick fit; gestione della memoria con il sistema dei compagni (buddy system); Memoria virtuale (virtual memory); overlay; paginazione; indirizzi virtuali; spazio di indirizzamento virtuale; unità di gestione della memoria; pagine virtuali e pagine fisiche; tabellae delle pagine (a 1, 2, 3 e 4 livelli); memoria associativa. Segmentazione: indirizzamento; sezioni; segmentazione con paginazione; I file: sistemi di archiviazione (file system); direttori (directory); struttura gerarchica; proprietà e modi (uid, gid, mode); associazioni file-processo; Descrittore del file (file handle); Apertura e chiusura di un file. File speciali (special files): a blocchi (block special device) e a caratteri (character special device); pipe. La shell (con particolare riguardo a UNIX); ridirezione e piping. Gestione dell’input-output; indipendenza dal dispositivo fisico; denominazione uniforme; trattamento degli errori; conversione del tipo di trasferimento; trasferimento sincrono (con lock) e asincrono (guidato da un’interruzione). Gestione dell’accesso ai dispositivi dedicati e condivisi da parte del sistema operativo. I quattro livelli del software di I/O: i driver delle interruzioni; i driver dei dispositivi; il software di sistema hardware-indipendente; il software utente. Librerie collegate ai programmi utente; programmi utente al di fuori del sistema operativo. Sistemi di spooling. I terminali: terminali reali e mappati in memoria; software di input; driver a caratteri; driver a linee; driver in modo raw; driver in modo cooked; software di output. Il sistema operativo UNIX: Famiglie e dialetti UNIX. Struttura del nucleo di UNIX. Buffer cache, algoritmi di allocazione, lettura e rilascio dei blocchi. Rappresentazione interna dei file (i-node), allocazione e rilascio degli i-node. Struttura dei file regolari, speciali e dei direttori. Il superblocco. Stati di un processo. Gestione della memoria e dell’area di swap. Le Shell UNIX: struttura, comandi, script; programmazione sotto shell, con particolare riguardo alla Korne Shell.. Gestione di un sistema operativo UNIX: installazione e personalizzazione del sistema. Aggiornamenti e modifiche delle funzioni fondamentali (utenze, gruppi, file system, servizi, comunicazioni). Dump e restore totali e incrementali. Gestione dell’utenza. Esercitazioni: esercitazioni sul sistema operativo UNIX, sulle SHELL UNIX e sulle comunicazioni interprocesso. Testi consigliati A.S. Tanenbaum, I moderni sistemi operativi, ed. Prentice Hall-Jackson Libri. M. Bach, UNIX Architettura di Sistema, ed. Jackson. Presentazione ppt del corso, ftp://gnbts.univ.trieste.it:/DU/so1.