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 fisici. Associazione indirizzi fisici a indirizzi virtuali. Rilocazione. MMU. Principali meccanismi di gestione della memoria. Swapping. Multiprogrammazione, memoria virtuale. Paginazione: page fault, principio di località. Problematiche realizzative: paginazione a più 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à, 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 |
Teoria, Unix | NT | |
---|---|---|
I quadrimestre | giovedì II fascia | martedì III fascia |
II quadrimestre | giovedì II fascia | venerdì II fascia |
III quadrimestre | lunedì III fascia mercoledì I fascia |
lunedì III fascia giovedì III fascia |
Alternativamente, gli studenti possono
sostenere un unico esame orale finale sull'intero programma del
corso. Per la registrazione del voto è necessario aver sostenuto
l'esame di Laboratorio S.O.
Esempi di domande da prima prova e seconda prova.
Ecco i risultati delle prove di accertamento.
La terza prova sarà lunedì 11 giugno, ore 14:00, aula 48.