|
Aspetti generali |
Case study: UNIX |
Case study: Windows NT |
1. Introduzione |
Richiami sull'architettura di un sistema di Elaborazione.
Strutturazione funzionale per livelli di un Sistema di Elaborazione.
Definizione di SO. Tipi di SO ed evoluzione storica. Struttura di un
SO: monolitica, a strati, a processi comunicanti, microkernel.
Interfacce utente dei S.O. Modalità di esecuzione.
|
Storia e caratteristiche del sistema operativo UNIX. Struttura a
strati e a microkernel. Le interfacce di UNIX. L'interfaccia kernel.
L'interfaccia libreria: le chiamate POSIX 1003.1. L'interfaccia
utente: la shell e i comandi standard POSIX 1003.2. Interfacce
grafiche.
|
Storia e caratteristiche di Windows NT. Differenze rispetto ad altri
sistemi operativi. Differenze tra versione Workstation e versione
Server. L'interfaccia utente. L'interfaccia grafica. La linea di
comando. Esempi di utilizzo. L'approccio a oggetti di Windows
NT. Definizione di oggetto. L'Object Manager. Caratteristiche comuni
agli oggetti. La gestione della sicurezza. Esempi di allocazione di
oggetti, di impostazione di criteri di sicurezza
|
2. Processi |
Il concetto di processo. Modelli di esecuzione. Gli stati di un processo.
Il concetto di interruzione. Scheduling di basso livello: le
principali politiche. Processi CPU-bound e I/O bound.
Scheduling real-time: riduzione del tempo di latenza, kernel prelazionabile.
Cenni allo scheduling multiprocessore.
Thread: definione, varianti. Processi cooperanti.
L'interprocess communication e la sincronizzazione tra processi.
Esempio del produttore/consumatore. Sezione critica, race conditions.
Soluzioni: mutex, sincronizzazione. Deadlock e starvation: soluzioni.
|
I processi in UNIX: caratteristiche, stati. Creazione, terminazione e
sospensione di processi: le funzioni exec e fork. Esempio:
Funzionamento di una shell: ciclo prompt-fork-(execve +waitpid).
Gerarchie di processi. Capacità extra dei processi con UID=0.
Politiche di scheduling: tradizionale, SVR4, Solaris,
Linux. Monitoraggio processi: i comandi ps e top.
I thread: implementazioni, scheduling. Thread POSIX: esempio. La
soluzione Solaris: i Light Weight Process.
Comunicazione tra processi (IPC): memoria condivisa, pipe, semafori,
code di messaggi, segnali. Esempi su problemi classici.
|
I processi e thread. I processi utente; i thread; gli stati del
thread. Esempi di creazione di processi. Il kernel: politiche di
scheduling e dispatching dei thread; La gestione degli interrupt e
delle eccezioni; La sincronizzazione in ambienti
multiprocessor. Esempi di Structured Exception Handling. I
servizi. Esempi di attivazione di servizi. I sottosistemi protetti e
l'ambiente di un processo. Il sottosistema Win32. La gestione delle
comunicazioni tra processi via LPC: utilizzo di porte di
comunicazione, memoria condivisa, callback. Esempi di comunicazione
tra processi.
|
3. Memory Management |
Indirizzi virtuali e fisci. Associazione indirizzi fisici a indirizzi virtuali.
Rilocazione. MMU. Principali meccanismi di gestione della memoria. Swapping.
Multiprogrammazione, memoria virtuale. Paginazione: page fault,
principio di localit\`a. Problematiche realizzative: paginazione a
pi\`u livelli, tabella invertita. Segmentazione paginata: soluzione
MULTICS, IA32. Principali algoritmi di rimpiazzamento. Thrashing:
definizione, rimedi, modello del working set.
|
Eventi che portano alla necessita di liberare memoria in
UNIX. Paginazione: struttura della memoria fisica in 4BSD, area di
swap. Paging on demand, prepaging, buffering. Il processo
pagedaemon. Algoritmi di paginazione di 4.2BSD, SVR4 (two-handed
clock). Swapping: il processo swapper, quando si attiva. Monitoraggio
della gestione della memoria virtuale con i comandi ps, top, vmstat,
perfmeter: pagine totali, residenti, in swap.
|
La memoria virtuale. Memoria privata e memoria condivisa: protezioni
della memoria. L'accesso condiviso alla risorsa memoria: l'oggetto
Sezione, viste della sezione, file mapping. Implementazione della
memoria virtuale su MIPS: spazio di indirizzamento; politiche di
paginazione. Differenze rispetto ad altre architetture
hardware. Esempi di allocazione di memoria privata, di memoria
condivisa.
|
4. File system |
File: tipi, organizzazione. Attributi, metodi d'accesso ed operazioni
di base sui file. Directory. Strutturazione del
file-system. Efficienza del file system. I meccanismi di protezione
(matrici di accesso, ACL) e di authorising.
|
Tipi di file, nomi, path relativi e assoluti. UID, GID. Modo dei file:
protezioni, bit speciali. Restringere l'accesso di un file ad un gruppo di utenti.
Implementazione dei file system: UFS e EXT2. Il superblock.
Allocazione dei blocchi, frammenti, i-nodes, struttura delle
directory. Limiti alle dimensioni dei file. Tabelle residenti in
memoria: di i-node, di file aperti, di descrittori di file. Il sync.
Chiamate per accedere a file e directory. Operazioni su dischi e file
system. Il Virtual File System. I comandi mkfs, newfs, mount, umount,
fsck.
|
Il file system come driver. Tipi di file system supportati localmente
e relative caratteristiche. NTFS: caratteristiche, la struttura del
file system; Cenni sulle opzioni avanzate del file system. Gestione
della compatibilità con sistemi FAT.
|
5. Input/output |
Tipi di dispositivi di I/O. Gestione a basso livello dei dispositivi
di I/O. Principi dell'hardware di I/O. PIO, DMA, DVMA. Il trattamento
delle interruzioni, i driver di I/O. I/O bloccante, non bloccante,
asincrono. Interfaccia per le applicazioni. Classi di dispositivi: a
blocchi, a carattere. Librerie in spazio utente dedicate all'I/O.
|
I quattro strati della gestione I/O: controller, device driver,
software indipendente dal dispositivo, software a livello
utente. Dispositivi a blocchi. Cache. Dispositivi a caratteri.
Disciplina di linea, C-list. Accesso crudo ai device. Controllo di
una linea con stty. Principali chiamate di sistema per l'I/O. Visione
astratta dei device: i file in /dev. Significato dei loro parametri,
il comando mknod. Protezione dei device. Monitoraggio con iostat.
|
I dispositivi di I/O. I componenti del sistema di I/O: file, driver e
devices. La gestione dell'I/O: il ruolo dell'I/O Manager. Gestione di
driver stratificati. Esempi di gestione dell'I/O sincrona, asincrona.
|
6. Networking |
Concetti generali. Processori loosely-coupled. Il modello
client/server, protocolli. Motivazioni per le reti. Tipi di reti.
Aspetti fondamentali delle reti.
Modello ISO/OSI, suite TCP/IP, principali protocolli.
Sistemi di rete vs. sistemi distribuiti. Esempi. Chiamate di
procedure remote (RPC). Porta, servizio, associazione statica e
dinamica.
Robustezza di un sistema distribuito, scalabilit\`a, struttura dei
processi server.
|
I servizi e i demoni di Unix. I runlevel, sequenza di startup. Porte
riservate, servizi. Esempio di client/server a livello appliazione:
rsh, rcp.
Il Network File System: concetti base, schema di funzionamento via
RPC. Caratteristiche e architettura del sistema. Condivisione di un
file system via rete: esportazione e montaggio.
Socket: tipi, famiglie di indirizzamento, strutture dati, chiamate di
sistema. Differenze ed applicazioni dei protocolli TCP e UDP. Esempi:
client TCP e UDP, server TCP.
|
I servizi 'built-in': protocolli e servizi disponibili. Utilizzo di NT
in architetture aperte. Utilizzo di NT in sistemi distribuiti
|