Corso di Sistemi Operativi (Diploma) - A.A. 2000-2001

Marino Miculan, Anna Marzona

Indice

Obiettivo del corso
Programma
Bibliografia
Orario lezioni
Ricevimento studenti
Esami (Risultati prove accertamento)
Pagine degli anni precedenti: 1999-2000.

Obiettivo del corso

Obiettivo del Corso è fornire un inquadramento generale di base teorico sulle problematiche dei Sistemi Operativi, trattando la gestione dei Processi, dell'Input/Output, della Memoria e del File-System, con alcuni cenni sui Sistemi operativi distribuiti. Parallelamente, le problematiche teoriche sono sviluppate studiando due implementazioni, che vengono discusse come Case Study: UNIX e Windows NT.

Programma

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

Bibliografia

Testi consigliati

  1. A. Silberschatz, P. Galvin, Operating Systems concepts, 5a ed. Addison Wesley, 1998 (Anche in italiano).
  2. H. Hahn, guida a Unix. McGraw-Hill, 2000.
  3. Documentazione dal Linux Documentation Project:
    1. D. Rusling, The Linux Kernel version 0.8-3.
  4. D.A. Solomon, Inside Windows NT: the official guide to the architecture and internals of Microsoft Premier Operating System. Microsoft Press, 1998.
  5. Kernigham, Ritchie, The C Programming Language (ANSI C). Prentice Hall Software Series, 1988. (Anche in italiano).
  6. Trasparenze usate in aula in un unico file (PDF, 2.1M)
  7. Sorgente dello scheduler di Linux (PS, 37K)
  8. Cronologia di Unix
  9. Dispense su Windows NT.
  10. Dispense sul seminario ERP.COM.

Testi di consultazione

  1. A.S. Tanenbaum, Modern Operating Systems, Prentice-Hall, 1992.
  2. P. Cornes, The LINUX A-Z, Prentice-Hall, 1997.
  3. Ritcher, Advanced Windows, Microsoft Press, 1997
  4. Custer, Inside Windows NT, Microsoft Press, 1993
  5. Custer, NT File System, Microsoft Press, 1994
  6. R. Nagaar, Windows NT File System Internals: a developer's guide, O'Reilly, 1997.

Orario delle lezioni

Teoria, UnixNT
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

Ricevimento studenti

Miculan: Giovedì, 9:00-11:00, nello studio SN13 presso il Dipartimento di Matematica e Informatica.
Marzona: spedite un email a amarzona@alfacon.it

Modalità d'esame

L'esame è organizzato in una serie di prove di accertamento svolte durante l'anno sulle varie parti del Corso e di un'eventuale prova integrativa orale finale.

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.


Marino Miculan
Last modified: Wed May 30 08:30:44 CEST 2001