Distributed systems

A.A. 2017/2018
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
The exam is a written test including both questions about the concepts studied during the course, and exercises similar to the ones seen during the course. The exam is aimed at assessing the knowledge and understanding of the topics of the course.
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)