Syllabus di Sistemi Distribuiti (10 CFU) – A.A. 2009/2010 Docente

Syllabus di Sistemi Distribuiti (10 CFU) – A.A. 2009/2010
Docente: Valeria Cardellini
Corso di Laurea Magistrale in Ingegneria Informatica, Università di Roma “Tor Vergata”
Nota: con * sono indicati gli argomenti coperti parzialmente (25-50%) dal testo di Tanenbaum e van Steen
e con ** gli argomenti coperti in buona parte dal testo (>= 50%).
Introduzione ai sistemi distribuiti (**):
definizione di SD;
definizioni di accessibilità, trasparenza, apertura, scalabilità;
tipi di sistemi distribuiti: cluster computing, Grid computing, sistemi informativi distribuiti, sistemi pervasivi distribuiti.
Architetture per sistemi distribuiti (**):
stili architetturali: a livelli, basati su oggetti, basati su eventi, orientati ai dati;
sistemi publish/subscribe e disaccoppiamento;
architetture di sistema: centralizzate, decentralizzate, ibride;
middleware adattativi;
sistemi distribuiti autonomici: definizione, proprietà self-*, architettura.
Processi e thread nei sistemi distribuiti (**):
processori, processi e thread;
cambio di contesto;
vantaggi del multithreading;
implementazione di thread: schema N:1, schema 1:1, thread Solaris;
thread e sistemi distribuiti: lato client e lato server;
virtualizzazione: macchina virtuale, tipi di virtualizzazione, macchina virtuale di processo, monitor della macchina
virtuale, virtualizzazione completa e paravirtualizzazione, esempio: Planetlab;
problematiche relative ai processi lato client e lato server;
migrazione del codice (cenni).
Programmazione multithreaded con thread POSIX:
richiami su processi e thread in Unix;
modelli per programmazione multithreaded;
thread safeness;
classi di fuznioni di pthread;
funzioni per la gestione dei thread;
costrutti e funzioni di mutua esclusione: mutex, lock lettore/scrittore;
variabili condition;
esempi di server TCP multithreaded.
Comunicazione nei sistemi distribuiti (**):
tipi di comunicazione; persistenza, sincronizzazione e dipendenza dal tempo;
semantica della comunicazione in presenza di errori: maybe, at-least-one, at-most-once, exactly-once;
programmazione di rete esplicita ed implicita;
chiamate a procedura remota (RPC): concetti di base, requisiti per RPC, architettura RPC, passi di una RPC,
richiami su passaggio dei parametri, passaggio dei parametri in RPC, Interface Definition Language, binding del
server, RPC asincrona;
SUN RPC: definizione del programma RPC, definizione della procedura remota, implementazione e sviluppo della
procedura remota e del client, esempio square, interazione RPC e socket, livelli di SUN RPC, XDR, port mapper,
esempi;
Java RMI: concetti di base, stub e skeleton, RMI registry, interazione tra componenti, architettura, passi per
l'utilizzo, esempi;
confronto tra SUN RPC e Java RMI;
Message Passing Interface: primitive di comunicazione;
sistemi a code di messaggi: primitive dell'API, architettura di sistema, message broker, IBM WebSphere MQ;
comunicazione orientata agli stream: definizione di stream, stream e QoS, sincronizzazione degli stream.
comunicazione multicast,: tipi di multicast, multicast applicativo;
protocolli di gossiping: principi, anti-entropia, schema generale di protocollo di gossiping, applicazioni.
Naming nei sistemi distribuiti (**):
introduzione e definizioni: nome, punto d'accesso, indirizzo, identificatore;
tipologie di naming;
naming flat: broadcasting, multicasting, puntatori forwarding, approcci basati sull'assegnamento di una home, hash
table distribuite, approcci gerarchici;
naming strutturato: definizioni, esempi, risoluzione dei nomi, implementazione, requisiti dei name server,
risoluzione iterativa e ricorsiva, caching, aspetti di scalabilità;
naming basato su attributi;
LDAP: applicazioni, organizzazione dell'informazione.
Sincronizzazione nei sistemi distribuiti (**):
sincronizzazione fisica: clock fisico, UTC, sincronizzazione interna ed esterna, correttezza, algoritmo di Cristian e
sua accuratezza, algoritmo di Berkeley, Network Time Protocol;
sincronizzazione logica: tempo logico, relazione happened-before, clock logico scalare e sua implementazione,
multicasting totalmente ordinato, clock logico vettoriale e sua implementazione, clock logico matriciale;
mutua esclusione nei sistemi concorrenti: definizioni, algoritmo di Dijkstra e relativo esempio; algoritmo del panificio
di Lamport e relativo esempio;
mutua esclusione distribuita: adattamento dell'algoritmo del panificio di Lamport ai sistemi distribuiti e sue
prestazioni, classificazione delle algoritmi di mutua esclusione distribuita, algoritmo basato su autorizzazioni
centralizzato, algoritmo di Lamport distribuito, algoritmo di Ricart e Agrawala con esempio, algoritmo basato su
token centralizzato, algoritmo basato su token decentralizzato, algoritmi basati su quorum, algoritmo di Maekawa;
algoritmi di elezione: algoritmo bully, algoritmo ad anello, algoritmi di elezione di superpeer.
Consistenza e replicazione nei sistemi distribuiti (**):
modello di sistema;
modelli di consistenza;
consistenza data-centrica e client-centrica;
consistenza stretta, sequenziale, causale, continua, debole, entry: definizioni ed esempi;
modelli di consistenza client-centrici;
consistenza monotonic-read, monotonic write, read-your-wirte, writes-follow-reads: definizioni, esempi ed
applicazioni;
algoritmi per il posizionamento dei server replica;
tipi di replica; approcci per la distribuzione dei contenuti: push, pull, lease, lease adattativo; protocolli di
consistenza: protocolli di consistenza continua, protocolli primari based di tipo remote-write e local write, protocolli
basati su quorum.
Tolleranza ai guasti nei sistemi distribuiti (**):
definizione di dependability, richiami su failure, error e fault;
modelli di failure;
panoramica sulle tecniche per la tolleranza ai guasti;
ridondanza e schema Triple Modular Redundancy;
modelli di replicazione: replicazione passiva ed attiva;
organizzazione di gruppi di processi e mascheramento dei guasti;
problema del consenso bizantino: definizione e algoritmo di Lamport;
condizione necessarie per il consenso distribuito;
multicasting affidabile: multicast affidabile semplice, multicast atomico, ordinamento dei messaggi di multicast;
commit distribuite: commit a due fasi, commit a tre fasi;
ripristino: definizioni, creazione indipendente dei checkpoint, creazione coordinata dei checkpoint, logging dei
messaggi.
Sistemi Web distribuiti (*):
generazioni del Web;
motivazioni per sistemi Web distribuiti;
definizioni e classificazione dei sistemi Web distribuiti;
sistemi Web distribuiti localmente: Web cluster, Web switch e livelli di replicazione, classificazione delle
architetture, meccanismi di routing per architetture di 4 e 7 livello one-way e two-way, algoritmi di distribuzione
content-blind e content-aware ed esempi, Linux Virtual Server, replicazione del middle tier, replicazione del back
end tier;
sistemi Web distribuiti geograficamente: problemi, prossimità, meccanismi di re-routing delle richieste; algoritmi di
distribuzione;
Google: infrastruttura, software di gestione dell'infrastruttura di Google.
Sistemi Web geografici per network caching e delivery (*):
problemi del network delivery;
Web caching cooperativo: cooperazione gerarchica e flat;
schemi query-based e informed-based, ICP, Cache Digest;
caching di contenuti dinamici;
Sistemi per Web content delivery: definizioni e motivazioni, contenuti e servizi, meccanismi di routing delle
richieste, mapping del sistema Web sulla CDN, content peering nelle CDN;
caso di studio di CDN: Akamai.
Sistemi peer-to-peer (*):
caratteristiche;
applicazioni;
overlay network;
reti strutturate e non;
classificazione architetture P2P;
sistemi P2P decentralizzati ibridi, puri, parzialmente centralizzati.
routing in reti strutturate: distributed hash table;
caso di studio di reti non strutturate: Gnutella, Napster, Skype (cenni);
casi di studio di reti strutturate: Chord, Pastry, CAN;
caso di studio: BitTorrent.
Architetture orientate ai servizi e Web service (*)
definizioni;
pila protocollare e tecnologica;
protocollo SOAP ed esempi;
linguaggio WSDL;
UDDI;
composizione di servizi: orchestrazione e coreografia;
processi BPEL: principali costrutti del linguaggio BPEL, esempio di creazione di un processo BPEL.
Cloud computing:
paradigmi di computing e loro evoluzione temporale;
utility computing: definizione e motivazioni;
Grid computing: definizione di grid, caratteristiche ed applicazioni, architettura a livelli, cenni su OGSA;
cloud computing: definizioni, aspetti caratterizzanti, livelli (SaaS, PaaS, IaaS), tipi di cloud;
esempi di piattaforme ed applicazioni cloud.
Architetture parallele:
parallelismo a livello di istruzioni e suoi limiti;
multithreading: a grana fine, a grana grossa, simultaneo;
multiprocessori: classificazione;
SMP: architettura, reti di interconnessione: crossbar, rete omega, problema della coerenza della cache,
protocolli di snooping: esempio di protocollo a 3 stati;
UMA: architetture, introduzione ai protocolli di directory;
architetture multicore e manycore: problemi, architettura di base, esempi di processori.