SISTEMI OPERATIVI (Diploma)
Programma - Anno Accademico 1998-99
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