Home Page

 

Corso di Sistemi e Programmazione Distribuita A.A. 2010/2011

 

 

Obiettivo
Il corso ha l'obiettivo di introdurre le problematiche relative alla programmazione dei sistemi distribuiti, illustrando gli algoritmi ed i paradigmi fondamentali e fornendo spunti e collegamenti a casi di studio reali.

 

Docenti

 

Programma del corso

Introduzione: definizione di un sistema distribuito, obiettivi, tipologie di sistemi distribuiti.

Architetture: tipologie, middleware.

Processi: thread, virtualizzazione, paradigma client/server, migrazione del codice.

Comunicazione: nozioni di base, RPC, comunicazione message-oriented e stream-oerinted, multicast.

Naming: nomi, identificatori e indirizzi, flat naming, structured naming, attribute-based naming.

Sincronizzazione: orologi virtuali, mutua esclusione, algoritmi di elezione.

Consistenza e replicazione: modelli di consistenza (data-centric e client centric), gestione delle repliche, protocolli per la consistenza.

Fault tolerance: nozioni di base, comunicazione affidabile, commit distribuito, recovery.

File system distribuiti: architettura, sincronizzazione, consistenza e replicazione, fault-tolerance, sicurezza.

Coordinamento distribuito e reti peer-to-peer.

 

 

Materiale didattico

Le slide utilizzate nel corso ed altro materiale sono disponibili sul sito ufficiale della facoltà di Scienze MM.FF.NN. relativo al materiale didattico.

 

Bibliografia
Testi consigliati:
1. Andrew S. Tanenbaum e Maarten van Steen, Distributed Systems: Principles and Paradigms, Second Edition. Pearson (Prentice Hall), 2007.
2. Ajay D. Kshemkalyani and Mukesh Singhal, Distributed Computing: principles, algorithms, and systems. Cambridge University Press, 2008.