( english version )
Sistemi operativi ( 6 CFU )
Prof. Francesco Zanichelli
     Tel. 0521 905710 - Fax. 0521 905723           E-mail. francesco.zanichelli@unipr.it           Home page. http://www.ce.unipr.it/~mczane

Finalità
Il modulo presenta i principali strumenti metodologici per l'analisi del software di sistema, con particolare riferimento al S.O. UNIX.
Nella prima parte viene introdotto il modello a processi di un S.O., unitamente alla gestione delle risorse hardware di sistema. Nella seconda parte vengono illustrate le principali caratteristiche di UNIX sia come visione utente che come programmazione di sistema.

Programma
Parte I (Teoria)
Introduzione ai sistemi operativi. Sistemi batch, time-sharing, spooling.
Parallelizzazione di elaborazione e I/O. Il sistema di interruzione: interruzione da dispositivo e da timer. Gestione delle interruzioni. Modello di un semplice sistema operativo e tecniche di incremento delle prestazioni.
Multiprogrammazione e modello a processi. Sistema di protezione. Modi di funzionamento della CPU. Chiamate di sistema. Gestione dell'I/O. Struttura a livelli del sistema operativo. Virtualizzazione.

Concetto di processo. Stato del processo. Descrittore del processo. Processi concorrenti. Modello di interazione a memoria condivisa. Mutua esclusione e sezioni critiche. Semafori e primitive di sincronizzazione. Cooperazione e competizione tra processi mediante semafori.
Il modello di interazione a scambio di messaggi e le primitive send/receive.
Concetto di Deadlock e tecniche di gestione.
Algoritmi di scheduling della CPU.

Parte II (UNIX)

Introduzione a UNIX e Linux.
Struttura del file system di UNIX. Diritti e meccanismi di protezione. Principali comandi di sistema. Redirezione e piping di comandi. Interpreti comandi. Modalitą di esecuzione foreground/background.

Organizzazione fisica del file system. L'immagine in memoria di un processo UNIX. Sviluppo di programmi in UNIX/LINUX.
Primitive per la gestione dei file e dell'I/O.
Primitive per la gestione dei processi. Creazione, esecuzione e terminazione.
Sincronizzazione e comunicazione tra processi: segnali, pipe/fifo e socket.

Attività d'esercitazione
Esercitazioni in laboratorio informatica di base (Linux Suse 11 virtualizzato con Virtualbox)
su interazione utente e programmazione di sistema Linux.

Modalità d'esame
Una prova scritta con tre domande aperte sulla parte di teoria (Parte I).

Una prova pratica al calcolatore costituita da un esercizio in C/C++ sulla interazione tra processi UNIX (Parte II).

Gli studenti possono sostenere il giorno dell'esame una sola o entrambe le prove.
I risultati parziali conseguiti rimangono validi per tutto l'anno accademico (sessione di gennaio/febbraio quindi compresa), ed e' possibile ripetere, al pił una volta, una prova per migliorare il voto conseguito. In ogni caso si mantiene il voto migliore tra quelli conseguiti per ciascun tipo di prova (teoria o UNIX).

Per calcolare il voto finale, sarą eseguita una media pesata dei risultati ottenuti nei due tipi di prova (con pesi 0.6 per la prova UNIX e 0.4 per la prova di teoria).

Propedeuticità
Fondamenti di informatica + Laboratorio di programmazione
Fondamenti di programmazione

Testi consigliati
Sistemi operativi - Concetti ed esempi - 8/ed, A. Silberschatz, P. B. Galvin, G. Gagne
Pearson Education 2009, ISBN 9788871925691
(oppure)
Sistemi Operativi 2/ed, P. Ancilotti, M. Boari, A. Ciampolini, G. Lipari
McGraw Hill, ISBN: 9788838664328,
GaPiL -- Guida alla Programmazione in Linux (http://gapil.truelite.it)

 
stampa il programma ~ torna indietro