SISTEMI OPERATIVI (Diploma)

Programma - Anno Accademico 1998-99

Maurizio Pighin, Anna Marzona, Marino Miculan

Scopi del Corso

Obbiettivo 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. Le problematiche teoriche sono poi sviluppate studiando due implementazioni, che vengono discusse come Case Study: UNIX e Windows-NT. Viene infine fornita una descrizione generale del C-Language.

 

Modalità d'Esame

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

 

Programma

Parte Generale

1.       Introduzione ai Sistemi Operativi (SO). 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. Interfacce utente dei S.O.

2.       Processi. Il concetto di processo e di kernel del SO. Gli stati di un processo. Il concetto di interruzione. Scheduling di basso livello: le principali politiche. L’ interprocess communication e la sincronizzazione tra processi: i semafori, i monitor, il message passing. Il concetto di deadlock e sue soluzioni.

3.       Memory Management. Il concetto di multiprogrammazione. Rilocazione. Swapping. Il concetto di memoria virtuale. Paginazione, segmentazione. Il concetto di page fault. Algoritmi di rimpiazzamento. Il concetto di working set. Problematiche realizzative.

4.       Input/output. Gestione a basso livello dei dispositivi di I/O. Principi dell’hardware di I/O. Il trattamento delle interruzioni, i driver di I/O, le parti di SO e applicazioni utente dedicate all’I/O.

5.       File system. Nozione di file: tipi, organizazzione. Metodi d’accesso ed operazioni di base sui file. Il concetto di directory. Strutturazione del file-system. Efficienza del file system. I meccanismi di protezione, authorising e recovery.

6.       Cenni su sistemi operativi distribuiti.

7.       Introduzione al C language. Tipi, operatori, espressioni. Flusso di controllo. Funzioni e struttura dei programmi.Array, puntatori, strutture dinamiche, strutture complesse. L’input/output. Le standard library e le system call.

Case Study: l'ambiente UNIX

1.       Introduzione. Inquadramento del sistema operativo UNIX. La situazione attuale. Caratteristiche peculiari di UNIX. Struttura a strati. Le interfacce di UNIX. L'interfaccia kernel: le due modalità di esecuzione. L'interfaccia libreria: le chiamate POSIX 1003.1. L'interfaccia utente: la shell e i comandi standard POSIX 1003.2. Funzionamento di una shell: ciclo prompt-fork-(execve +waitpid). La C shell: redirezioni, esecuzione in background, composizione, pipe. Variabili.

2.       Processi. Stati di un processo in UNIX. Caratteristiche dei processi. Creazione, terminazione e sospensione di processi: le funzioni exec e fork. Gerarchie di processi. Politiche di scheduling. Capacità extra dei processi con UID=0. Monitoraggio processi: i comandi ps e top. Comunicazione tra processi (IPC). Esempi. I thread: principi, implementazioni, scheduling. Esempio di programma multithread POSIX. La soluzione Solaris: i Light Weight Process.

3.       Memory Management. Eventi che portano alla necessita di liberare memoria. Swapping: il processo swapper. Paginazione: struttura della memoria fisica in 4BSD, area di swap. Paging on demand. Il processo pagedaemon. Algoritmi di paginazione di 4.2BSD e SVR4. Monitoraggio della gestione della memoria virtuale con i comandi ps, top, vmstat: pagine totali, residenti, in swap.

4.       Input/Output. I quattro strati della gestione I/O: controller, device driver, software indipen-dente dal dispositivo, software a livello utente. Dispositivi a blocchi. Cache. Dispositivi a carat-teri. Disciplina di linea, C-list. 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. Esempio di un device driver in Linux: il Tiny Device Driver.

5.       File system. Tipi di file, nomi, path relativi e assoluti. Modo dei file: protezioni, bit speciali. 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: i comandi fdisk, mkfs, newfs, mount, umount, fsck.

6.       Networking. Protocolli nella suite TCP/IP. Il modello client/server. I servizi e i demoni di Unix. I runlevel. Porte riservate. Comandi per esecuzione remota: rsh, rcp. Visualizzazione dei pacchetti con snoop. Socket: tipi, famiglie di indirizzamento, chiamate di libreria. Differenze ed applicazioni dei protocolli TCP e UDP. Esempi: client TCP e UDP, server TCP. Cenni alle chiamate di procedure remote (RPC). Il Network File System: concetti base, schema di funzionamento via RPC. Condivisione di un file system via rete: esportazione e montaggio.

Case Study: l'ambiente WINDOWS-NT

1.       Introduzione. 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. 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. La memoria virtuale. Memoria privata e memoria condivisa: protezioni della memoria. L'accesso condivisio 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.       Input/Output. I dispositivi di I/O. I componenti del sistema di I/O: file, driver e devices. La gestione dell'I/O: il riolo dell'I/O Manager. Gestione di driver stratificati. Esempi di gestione dell'I/O sincrona, asincrona.

5.       File System. 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.

6.       Networking. I servizi 'built-in': protocolli e servizi disponibili. Utilizzo di NT in architetture aperte. Utilizzo di NT in sistemi distribuiti

-----------------------------

Aim of the Course

Target of Course is the presentation of a general base vision of Operating Systems. In particular are present problems regarding Processes, Input/Output, Memory and File-Systems, with some notes about Distributed Operating Systems. The theoretic approaches are then developed studying two implementations, which are discussed as Case Studies: UNIX and Windows-NT. At last, a general description of C-Language is performed.

Exams

The exams consists in a series of written tests during the year on the various parts of the Course, with an eventual final oral integration.

Program

General Part

1.       Introduction to Operating Systems (OS). Notes on the architecture of Computer Systems. Level functional structure. OS definition. Types of OS and historical evolution. Structure of OS: monolithic, with levels, with communicating processes. User interfaces.

1.       Processes. The concept of process and kernel of OS. The process states. The concept of interrupt. Low level scheduling: the main politics. Inter-process communication. And process synchronisation: semaphores, monitors, message passing.

2.       Memory Management. The multiprogramming concept. Relocation. Swapping The virtual memory concept. Paging, segmentation. The page-fault concept. Replacement algorithms. The working-set concept. Implementation problems.

3.       Input/Output. I/O low level management. I/O hardware principles. Interrupt management. I/O drivers. OS and user application modules devoted to I/O. The deadlock problem and its solutions.

4.       File System. The concept of file: types and organization. Access methods and base operations on files. The concept of directory. File system structure. File system efficiency. Protection, authorizing and recovery mechanisms.

5.       Notes on distributed OS.

6.       Introduction to C-Language. Types, operators, expressions. Control-flow. Functions and program structure. Array, pointers, dynamic structures, complex structures. Input/output. Standard-libraries and system-calls.

Case Study: the UNIX Environment

1.       Introduction. Main features of UNIX The nowadays situation. Peculiarities of UNIX. Layered structure. Interfaces to UNIX. The kernel interface: two execution modes. The library interface: the POSIX 1003.1 calls. The user interface: shells, commands in POSIX1003.2. Internals of a shell: prompt-fork-(execve+waitpid) cycle. The C shell: re-directions, background execution, sequential composition, pipe. Variables: definition, expansion.

2.       Processes. States of a process in UNIX. Features of processes. Creation, termination, suspension of processes: functions exec and fork. Hierarchies of processes. Processor scheduling policies. Processes with UID=0. Monitoring processes by means of ps and top. InterProcess Communication (IPC). Examples. Threads: principles, implementations, scheduling. Example of a POSIX _multithreaded program. The Solaris implementation: the Light Weight Process.

3.       Memory Management. Events leading to memory need. Swapping: the swapper process (pid=0). Paging: physical memory layout in 4BSD, swap area, working set. Paging on demand. The page daemon process (pid=2). Paging algorithms in 4.2BSD and SVR4. Monitoring virtual memory management by means of ps, top, vmstat: total pages, resident set, in swap area.

4.       Input/Output. The four layers of I/O: controller, device driver, device-independent software, user-level software. Block devices. Cache. Character devices. Line discipline, C-lists. Line control by means of stty. Main system calls for I/O. Abstract view of devices: files in /dev. Meaning of their parameters; the mknod command. Example: a device driver for Linux.

5.       File system. Types of files, names, relative and absolute pathnames. Modes of files: protection bits, special bits. Implementation of file systems: UFS and EXT2. Block allocation, fragments, i-nodes, directory structure. Limits to file dimensions. Memory resident tables: i-node table, open file table, per process file table. Sync. System calls for accessing to files and directories. Disk and file system operations: commands fdisk, mkfs, newfs, mount, umount, fsck.

6.       Networking. Protocols in the TCP/IP suite. The client/server model. Services and daemons in Unix. Runlevels. Reserved ports. Commands for remote execution: rsh, rcp. Packet monitoring by means of snoop. Sockets: types, address families, system calls. Comparison of protocols TCP and UDP, and their applications. Examples of communications via socket: clients on TCP and UDP, server TCP. Remote Procedure Calls - hints. The Network File System: basic ideas, schema via RPC. File system sharing: exportation and mounting.

Case Study: Windows-NT Environment

1.       Introduction: Design goals and system overview. Relations with other commercial operating systems. Differences between Server and Workstation versions. User Interface: GUI and Command Line; usage examples. Windows NT Object model: Object definition; role of the Object manager. System security through object security. Examples on object creation and query

2.       Processes and threads: execution state of a thread. Examples of process and thread creation. The kernel: thread scheduling and dispatching policy. Interrupt and exception management. Synchronization in a multiprocessor environment. NT Native services. The protected subsystems. Win32 Subsystem in detail. Inter-Process communication via LPC through communication ports, shared memory, call-backs. Examples of IPC.

3.       Memory management: Virtual memory; sharing memory through sections, view and file mapping. Private and shared memory: memory protection. Virtual memory implementation: address space, paging policy. Examples of memory allocation.

4.       I/O system: I/O system components: File, driver and devices; I/O Processing: the role of the I/O manager. Single and multiple layered driver. Examples of synchronous and asynchronous I/O Processing.

5.       File System: File system as an I/O driver. How NT manages different kinds of FS. NTFS: details and structure of the native NT file system. Introduction on the file system's advanced options. Compatibility with FAT file system.

6.       Networking. Built-in network components: available protocols, services and APIs. NT in open architecture. NT in distributed environment.

 

Bibliografia/Bibliography

1.       A.Silberschatz, P.Galvin, Operating Systems, 5thed., Addison Wesley, 1998 (Anche in Italiano)

2.       D.A.Solomon, Inside Windows NT: the official guide to the architecture and internals of Microsoft Premier Operating System, Microsoft Press, 1998. (alternativa al precedente)

3.       Kernigham Ritchie, The C Programming Language, Prentice Hall Software Series, 1988

 

Testi di Consultazione/Other references

1.       A.S.Tanenbaum, Modern Operating Systems, Prentice Hall Editions, 1992

2.       A.S. Tanenbaum, A.S. Woodhull, Operating Systems, Design & Implementation, Prentice Hall, 1997

3.       Ritcher, Advanced Windows, Microsoft Press, 1997

4.       Custer, Inside Windows NT, Microsoft Press, 1993

5.       H.Custer, NT File System, Microsoft Press, 1994

6.       R.Nagaar, Windows NT File System Internals: a developer's guide, O'Rielly, 1997