Corso di Sistemi Operativi II - a.a.2008/2009
Corso di Laurea in Informatica

Docenti: Prof. Vittoria Gianuzzi (email gianuzzi@disi.unige.it)
Dott. Alessio Merlo (email merlo@disi.unige.it)

Descrizione del Corso

Lo scopo del corso, assieme a SO1, e' di fornire competenze sull'argomento dei sistemi operativi.
Il corso vale 6 crediti, distribuiti come: 5 crediti di lezioni teoriche (circa 40 ore di lezioni) e 1 credito di laboratorio, pari a 24 ore.

Il Laboratorio, abbinato al corso di Sistemi Operativi II, consistera' principalmente nello sviluppo di programmi in C con l'uso di funzioni Unix per la comunicazione.

Programma del Corso di Sistemi Operativi II
Attenzione, il programma,a parte i primi punti, e' provvisorio.
In sede di avanzamento potra' subire modifiche

Esempio di organizzazione interna di un sistema operativo: Unix. Primitive di sistema relative alla gestione dei processi, dei dispositivi di I/O, della memoria centrale e dei file, con relative strutture dati.  

Organizzazione dei processi e thread in Windows Microsoft.  Le lezioni saranno tenute dal Dott. Andrea Dell'Amico (Microsoft Student Partner), in date successive.

Ripasso di SO1: esempi di processi, thread, signal e shell Bash

Introduzione ai Sistemi Distribuiti: Tassonomia, sistemi di indirizzamento, primitive di comunicazione. 
Il modello ISO/OSI: protocolli e indirizzi. 
Funzioni Unix e Windows per la comunicazione su socket. 
Esempi sull'instradamento dei messaggi: router, switch e bridge.

Gestione dell'I/O: schedulazione del disco, gestione clock e terminali.

Remote Procedure Call: cenni

File System distribuiti: NFS e Coda file System.
Condivisione di risorse in un Workgroup (Protocollo Samba)

Problemi e soluzioni per la gestione dei Processi Distribuiti: Algoritmi per la sincronizzazione dei clock, Clock logico

Mutua Esclusione Distribuita. Algoritmi centralizzato, token passing a ring, interamente distribuito con clock logico, token passing senza strutturazione di Ring. Algoritmi di elezione: il Bully algorithm.

Transazioni Atomiche. Cenni generali, Deadlock sequenziale e distribuito: deadlock avoidanc, prevention, detection, algoritmi ditribuiti Wait-Die e Wound-Wait, wait-for-graph distribuito.

Mercoledi' 20 maggio verra' tenuto un seminario sul neworking di Windows, da parte di Andrea Dell'Amico, membro dell'organizzazione Microsoft Student Partners.


Prerequisiti del Corso

E' indispensabile saper svolgere semplici esercizi di programmazione C (corsi di Programmazione e Algoritmi e strutture dati) e aver seguito (e capito) il corso di Sistemi Operativi I.

Testi di riferimento

* Appunti del corso.
* Manuali Unix in linea.
* A.S.Tanenbaum, Modern Operating Systems, Prentice Hall Int. (anche in edizione italiana: I moderni sistemi operativi)
* W. Stallings, Sistemi Operativi, Jackson Libri Universita', 2000.


Esame


Parte di laboratorio, da svolgersi in gruppi.  Si tratta di scrivere programmi distribuiti, in C sotto Linux, con uso di primitive di comunicazioni di sistema e s3emplici script bash.  
La valutazione sara' fatto con una domanda specifica durante l'esame orale. 

Vedere il file "modalita' d'esame di laboratorio".

Per questa parte sara' attribuito un voto da 1 a 6 punti. Chi ha superato tale prova potra' continuare l'esame orale.

All'esame orale sara' attribuito un voto da 1 a 26 punti.

Il voto complessivo sara' la somma dei 2 voti riportati. I punti eccedenti il 30 danno luogo alla lode. Per essere ammessi all'esame orale e' necessario aver conseguito la sufficienza (3 punti) nell'esame di Laboratorio. Per passare l'esame e' necessario aver conseguito la sufficienza anche nell'esame orale (15 punti).