Distributed systems

A.A. 2016/2017
Insegnamento per
6
Crediti massimi
48
Ore totali
Lingua
Inglese
Obiettivi formativi
Scopo di questo corso è quello di presentare le tecnologie di base dei sistemi distribuiti. Il corso studierà le maggiori problematiche e scelte di progettazione di un sistema distribuito, i suoi principi architetturali (con particolare attenzione alla interconnesione di rete, alla comunicazione fra processi, e all'invocazione remota di procedure). Inoltre, verrano introdotti i metodi di base e gli algoritmi per il controllo della concorrenza.
· Definizione e caratteristiche principali di un sistema distribuito e della sua architettura
· Protocolli di comunicazione fra processi, per la gestione dei nomi, per la sincronizzazione, per la consistenza e replicazione in ambiente distribuito
· Soluzioni per la resistenza ai guasti in ambiente distrib

Struttura insegnamento e programma

Edizione attiva
Responsabile
Lezioni: 48 ore
Docente: Foresti Sara
Programma
1. Introduzione
definizione di sistema distribuito, obiettivi (disponibilità delle risorse, trasparenza di distribuzione, openness, scalabilità); classificazione dei sistemi distribuiti (sistemi di computazione, sistemi informative, sistemi pervasivi).
2. Architettura dei sistemi distribuiti
architettura del sistema (centralizzata, decentralizzata, ibrida); approcci basati sulla presenza di un middleware(interceptors, middleware adattativi); modello basato sul feedback.
3. Processi
threads; virtualizzazione; clients; servers; migrazione del codice.
4. Comunicazione
concetti di base; Remote Procedure Call; Message Oriented Communication; Stream Oriented Communication; Multicast Communication.
5. Assegnamento e gestione dei nomi
concetti di base (nome, identificatore, indirizzo); sistemi di gestione dei nomi piatti, strutturati, e basati su attributi.
6. Sincronizzazione
sincronizzazione basata su orologi (orologi fisici, GPS); orologi logici (protocolli di Lamport e Vector Clocks); mutua esclusione (algoritmi centralizzati, decentralizzati, distribuiti e token ring); global node positioning; algoritmi di elezione di un coordinatore.
7. Consistenza e Replicazione
modelli basati sui dati (consistenza continua, ordinamento consistente); modelli basati sul client (eventual consistency, letture monotone, scritture monotone, read your writes, scritture seguono le letture); gestione delle replicazioni; protocolli per la consistenza (continuous consistency, primary-based, replicated-write, cache coherence).
8. Fault tolerance
concetti base (rottura, ridondanza); process resilience; comunicazione affidabile fra client e server; comunicazione affidabile all'interno di gruppi; protocolli per il commit distribuito; recovery
Informazioni sul programma
· Definizione e caratteristiche principali di un sistema distribuito e della sua architettura
· Protocolli di comunicazione fra processi, per la gestione dei nomi, per la sincronizzazione, per la consistenza e replicazione in ambiente distribuito
· Soluzioni per la resistenza ai guasti in ambiente distribuito
Propedeuticità
· Algoritmi e strutture dati
· Basi di dati
· Reti di calcolatori
· Sistemi operativi I e II
Prerequisiti e modalità di esame
Scritto
Materiale didattico e bibliografia
Andrew Tanenbaum, Maarten van Steen
"Distributed Systems, Principles and Paradigms"
Prentice-Hall, 2007 (2nd edition)
Periodo
Secondo semestre
Periodo
Secondo semestre
Modalità di valutazione
Esame
Giudizio di valutazione
voto verbalizzato in trentesimi
Siti didattici
Docente/i
Ricevimento:
su appuntamento
via Celoria, 18 - Milano (MI)