Laboratorio di Sistemi Operativi II
Tecnologie Informatiche
Anno Accademico 2006-2007
Docente: Massimo Bernaschi (massimo@iac.cnr.it)
Ricevimento studenti: martedì/giovedì 10.30 c/o IAC (durante il corso) oppure previo appuntamento
Descrizione del corso
Il corso ha l'obiettivo di far apprendere, principalmente per mezzo di sperimentazione in laboratorio, alcuni concetti fondamentali della programmazione di sistema, con particolare riferimento alle problematiche legate allo sviluppo di applicazioni parallele e/o multi-threaded.
Programma
- Introduzione
- Scopo del Corso, Administratrivia, Modalità di Esame
- Errori comuni nella programmazione C e di sistema
- Thread
- Processi vs. Thread
- Thread Libraries
- pthread vs. kthread
- Primitive su thread
- Mutua Esclusione
- Performance
- Inter Process Communication
- Pipe, Named Pipe, Segnali
- Problemi legati alla gestione dei segnali in applicazioni multithreaded
- Memoria Condivisa
- Semafori
- Message Queue
- Confronto fra meccanismi IPC
- Sockets
- Introduzione, Socket Types & Domains
- Chiamate di sistema
- Strutture dati
- Endiannes
- Alcuni modi di usare i thread/processi
- Pipeline.
- Work crew.
- Client/server
Testo di riferimento
Trattandosi di un corso di laboratorio, non dovrebbe essere necessario il ricorso ad uno specifico libro di testo. In generale il materiale reperibile su questa pagine o direttamente su internet, unito alla documentazione ed alle
man pages del sistema operativo, sono sufficienti per lo svolgimento del progetto. Si può fare riferimento ai libri di testo consigliati per l'esame di
Sistemi Operativi II
Altri testi consigliati
- David R. Butenhof, Programming with POSIX(R) Threads . Addison-Wesley 1997
- Kay A. Robbins and Steven Robbins, Unix Systems Programming: Communication, Concurrency, and Threads . Prentice Hall, 2003.
Un ottimo testo, anche se un pò datato è
- Uresh Vahalia, Unix Internals, The new Frontier. Prentice Hall 1995
Tutorials
Tutorial sulla Programmazione di Sistema
Socket Communication
Modalità d'esame
Per poter sostenere l'esame di Laboratorio di Sistemi Operativi II è
necessario consegnare il progetto 2006-2007 e la relazione entro la scadenza fissata per ogni appello (in genere qualche giorno prima dell'appello stesso). Il progetto e' un lavoro
individuale ed
originale . Non e' quindi possibile condividere parti di codice o relazione con altri studenti, o copiare parte del progetto da altre fonti. Discussioni tra studenti, scambi di idee ed in genere tutto ciò che vi aiuta ad apprendere è invece legittimo ed apprezzato. Se avete dei dubbi riguardo a quali forme di collaborazione sono considerate legittime, chiedete liberamente. Fate attenzione: effettuerò una verifica utilizzando un tool automatico, ed i casi di copiatura saranno sanzionati.
E' anche possibile superare il corso consegnando il
progettone
, coordinato con il corso di
Sistemi Operativi II
di Massimo Bernaschi. Il progettone, una volta discusso in sede d'esame con esito positivo, fa conseguire allo studente il superamento di entrambi gli esami. Trattandosi di un lavoro sicuramente più complesso, da sviluppare sia in ambiente Unix che Windows, per il progettone è possibile lavorare anche in gruppi di (massimo) due persone. Ovviamente verrà opportunamente valutato il lavoro individuale.
Per l'iscrizione alle sessioni di esame di LSOII, contattare Massimo Bernaschi (massimo@iac.cnr.it).
In generale, prima di presentarsi all'appello, si consiglia di verificare lo stato del progetto (o del progettone), tramite un incontro da concordarsi tramite email.
Domande ricorrenti
TBD