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.