Modelli di sistemi distribuiti sistema di comunicazione z
Modelli di sistemi distribuiti sistema di comunicazione z Quali tipi di problemi computazionali si possono risolvere in un sistema distribuito? z Dipende dalle caratteristiche del sistema: sistema y sincronia/asincronia di esecuzione e interazioni y comportamento in caso di failure hardware e software. . . Algoritmi Distribuiti 1
Modelli di sistemi distribuiti fissare un appuntamento Roberto e Maria vogliono vedersi a pranzo e comunicano via e-mail ore 10. 00 Incontriamoci a mezzogiorno ore 10. 40 OK ore 11. 15 ore 12. 10 Ack “OK” ore 11. 40 K” Ack “Ack O caratteristiche del sistema: non esiste memoria comune trasmissione non sicura (non si sa se il messaggio e’ pervenuto correttamente. . ) ritardo di trasmissione non noto e non limitato Algoritmi Distribuiti 2
Modelli di sistemi distribuiti fissare un appuntamento Vediamoci a mezzogiorno OK. A presto Roberto e Maria vogliono vedersi a pranzo e comunicano per telefono caratteristiche del sistema: non esiste memoria comune ognuno dei due sente le parole dell’altro con un ritardo noto e limitato se la comunicazione cade entrambi ne vengono a conoscenza Algoritmi Distribuiti 3
Modelli di sistemi distribuiti schema di comunicazione Occorre considerare tre dimensioni: tipo di failure o nism o r sinc Algoritmi Distribuiti 4
Modelli di sistemi distribuiti Schemi di comunicazione § rete a scambio di messaggi § connessioni punto-a-punto § topologie specifiche (anello, stella, broadcast, . . ) § memoria condivisa Algoritmi Distribuiti 5
Modelli di sistemi distribuiti: reti punto-a-punto § Reti punto-a-punto si possono modellare come grafi, grafi i cui nodi rappresentano i processi e gli archi le linee di comunicazione (eventualmente bidirezionali) § Si suppone che i processi comunichino tramite primitive tipo send/recv § send non bloccante § spesso si ipotizza un grafo completo § linee virtuali non necessariamente fisiche P send recv Q Out buffer In buffer Algoritmi Distribuiti 6
Modelli di sistemi distribuiti: reti punto-a-punto Caratteristiche delle reti punto-a-punto failure free § Per quanto riguarda i processi: § Se un processo non ha ancora raggiunto il suo stato finale, “prima o poi” eseguira’ certamente un altro step (liveness) § Per quanto riguarda la comunicazione: § P riceve un messaggio m da Q al piu’ una volta e solo se Q glielo ha precedentemente inviato (safety) § Se P manda un messaggio m a Q, Q “prima o poi” lo ricevera’ certamente (liveness) Algoritmi Distribuiti 7
Modelli di sistemi distribuiti Tipi di malfunzionamenti Malfunzionamento di processi : CRASH. . . un processo si blocca prima di raggiungere lo stato finale…. Processo fallito Processo corretto non soddisfa la proprieta’ di liveness dei processi soddisfa la liveness dei processi Malfunzionamento di comunicazione: PERDITA DI MESSAGGI. . un messaggio inviato non viene ricevuto… Linea fallita Linea corretta non soddisfa la liveness della comunicazione Algoritmi Distribuiti 8
Modelli di sistemi distribuiti Modello Sincrono § E’ noto un limite di tempo massimo per l’esecuzione di uno step locale da parte di un processo § E’ noto un limite di tempo massimo di ritardo di trasmissione § Si puo’ supporre che i processi abbiano orologi fisici perfettamente sincronizzati (o approssimativamente sincronizzati, cioe’ all’interno di un intervallo di tempo ) Algoritmi Distribuiti 9
Modelli di sistemi distribuiti Modello sincrono- Conseguenze Wait for timeout > max(t 1 + t 2 + t 3) P send(Q, m) recv(m) Q t 1 recv(m’) t send(P, m’) t 2 t 3 Si possono usare timeout per scoprire malfunzionamenti di comunicazione Algoritmi Distribuiti 10
Modelli di sistemi distribuiti Modello sincrono Conseguenze P Q m 1 m 3 m 2 t R fase 1 fase 2 fase 3 Si puo’ organizzare la computazione in fasi: fasi § invio di messaggi a un insieme di processi P § ricezione di messaggi della fase da parte dei processi di P § cambio di stato Algoritmi Distribuiti 11
Modelli di sistemi distribuiti Modello asincrono Modello Asincrono • anche se il tempo d’esecuzione di uno step locale e’ finito, non e’ noto nessun limite di tempo massimo per la sua esecuzione • non e’ noto nessun limite di tempo massimo per la trasmissione del messaggio • non si puo’ supporre l’esistenza di orologi fisici sincronizzati Il modello asincrono e’ il piu’ generale: un algoritmo progettato per sistemi asincroni funziona anche in sistemi sincroni Algoritmi Distribuiti 12
Modelli di sistemi distribuiti sincrono/ asincrono Sfortunatamente: alcuni problemi computazionali non hanno soluzione in sistemi asincroni § se si desidera una soluzione fault tolerant § se si vuole usare un algoritmo deterministico quindi per alcuni problemi di deve ricorrere a § sistemi sincroni § algoritmi probabilistici Algoritmi Distribuiti 13
Modelli di sistemi distribuiti sincrono/ asincrono Per descrivere un sistema distribuito, occorre specificare: § § § grafo di comunicazione (completo, anello, ecc…) possibilita’ di fallimento di processi possibilita’ e tipo di fallimenti di comunicazione ipotesi sul numero massimo di processi falliti e/o di comunicazioni fallite tipo di sincronismo E’ cruciale essere chiari e precisi su questi aspetti poiche’ essi hanno una ricaduta essenziale su: § funzionamento dell’algoritmo § soluzione del problema computazionale Algoritmi Distribuiti 14
Modelli di sistemi distribuiti Modello sincrono Grafo orientato G = (V, E) I nodi v V rappresentano i processi, gli archi e E rappresentano le linee di comunicazione 1 2 3 distanza(i, j): lunghezza del distanza cammino minimo tra i e j in G 5 4 diametro(i, j): distanza massima diametro tra tutte le coppie di vertici (i, J) in G Algoritmi Distribuiti 15
Modelli di sistemi distribuiti Modello sincrono Processi Ogni processo e’ modellato da una quaterna: (start, states, msgs, trans) start insieme degli stati iniziali (sottoinsieme non vuoto di states) states msgs insieme di stati trans i funzione di generazione dei messaggi (ad ogni stato associa un insieme di messaggi in uscita) funzione di transizione (ad ogni coppia <stato, messaggi ricevuti> associa uno stato) Algoritmi Distribuiti 16
Modelli di sistemi distribuiti Modello sincrono Linee di comunicazione i m j Ogni arco rappresenta un canale, canale cioe’ un posto per un unico messaggio m M {null} (assenza di messaggio). Algoritmi Distribuiti 17
Modelli di sistemi distribuiti Modello sincrono Esecuzione Nel modello sincrono, l’esecuzione procede in fasi Inizialmente tutti i processi sono in uno stato iniziale e tutti i canali sono vuoti. Ogni fase e’ costituita da due step. Step 1. Ogni processo applica la propria funzione di generazione dei messaggi (msg) e invia i messaggi generati nei propri canali di uscita. Step 2. Si applica la funzione di transizione (trans) alla coppia <stato, messaggi in ingresso> per ottenere il nuovo stato; si rimuovono i messaggi dai canali. Algoritmi Distribuiti 18
Modelli di sistemi distribuiti Modello sincrono STEP 2 STEP 1 mi 2 mi 3 si mo 1 mi 1 mo 2 mi 2 mo 3 mi 3 mo 1 i SSi+1 mo 2 mo 3 L’assenza di messaggi sara’ implementata nei sistemi reali usando un timeout (nel modello con un messaggio null) Algoritmi Distribuiti 19
Modelli di sistemi distribuiti Modello sincrono § Malfunzionamento processi § Crash. Il processo si blocca prima o dopo lo step 1 oppure in un qualsiasi punto dello step 2 § Fallimento bizantino. Si generano messaggi e stati arbitrari (non secondo le funzioni trans e msgs) § Malfunzionamento comunicazioni § Canali. Perdita di messaggi Algoritmi Distribuiti 20
Modelli di sistemi distribuiti Modello sincrono Modello formale di esecuzione sincrona Una esecuzione sincrona di un sistema distribuito e’ definita da una sequenza infinita: C 0, M 1, N 1, C 1, M 2, N 2, C 2, …, Cr Mr Nr Mr Nr assegnamento di stati alla fase r, cioe’ dopo r fasi messaggi inviati alla fase r messaggi ricevuti alla fase r significa che ci sono state perdite di messaggi Algoritmi Distribuiti 21
Modelli di sistemi distribuiti Modello asincrono Grafo orientato G = (V, E) I nodi v V rappresentano i processi, gli archi e E rappresentano le linee di comunicazione 1 2 3 distanza(i, j): lunghezza del distanza cammino minimo tra i e j in G 5 4 diametro(i, j): distanza massima diametro tra tutte le coppie di vertici (i, J) in G Algoritmi Distribuiti 22
Modelli di sistemi distribuiti Modello asincrono Automa I/O Un automa A consiste di 5 componenti: § azioni (A): un insieme di azioni. Una azione puo’ essere interna, di input e di output, un’azione di output o interna e’ detta locale. § stati (A): insieme di stati § start (A): stati iniziali (sottoinsieme di stati(A)) § trans (A): relazione di transizione tra stati. Una transizione e’ data da una terna <si, , sj> § task (A): astrazione dei task interni, definita dalle azioni locali Algoritmi Distribuiti 23
Modelli di sistemi distribuiti Modello asincrono Un processo in un sistema distribuito puo’ essere modellato come una automa I/O: tra le azioni di output esiste anche l’azione send (m)i, j tra le azioni di input esiste anche l’azione receive (m)j, i (j e’ un processo d’uscita del nodo i e m e’ un messaggio) (j e’ un processo d’ entrata del nodo i e m e’ un messaggio) decide(v) init(v) receive(m) Pi Algoritmi Distribuiti send(m) 24
Modelli di sistemi distribuiti Modello asincrono Esempio Processo Pi (descritto da un I/O automa) V e’ un insieme di valori, azioni di input: init(v)i v V input receive(v)j, i azioni di output: decide(v)i output send(v)i, j stati val, un vettore [1, . . . , n] di elementi di V transizioni init(v)i v V val[i]: = v receive(v)j, i send(v)i, j decide(v)i val[j] : = v nessuna transizione, precond. val(i) : = v nessuna transizione, precond. v = val[1]+ …+ val[n] Algoritmi Distribuiti 25
Modelli di sistemi distribuiti Modello asincrono Linee di comunicazione ii Cij j Anche ilcanale, canale associato all’arco (i, j), puo’ essere definito come un automa I/O; con input della forma send (m)i, j e output della forma receive(m)i, j Il tipo di canale piu’ diffuso e’ il canale FIFO in cui ogni azione send (m) aggiunge un messaggio m alla fine della coda ed ogni azione receive(m) rimuove un messaggio m dall’inizio della coda. Algoritmi Distribuiti 26
Modelli di sistemi distribuiti Modello asincrono Canale Ci, j Esempio M e’ l’alfabeto dei messaggi azioni di input: input azioni di output: output send(m)i , j receive(m)j, i stati queue una coda FIFO di elementi di M, inizialmente vuota transizioni send(m)i , j receive(m)j, i task {receive(m)j, j: m M} m M aggiunge m alla coda rimuove il primo elemento della coda Algoritmi Distribuiti 27
Modelli di sistemi distribuiti Modello asincrono Esecuzioni e tracce Un frammento di esecuzione di un automa A e’ una sequenza finita s 0, 1, s 1, 1, s 2, 2, …, sr o infinita: s 0, 1, s 1, 1, s 2, 2, …, sr , …, di stati e azioni tali che ogni terna < si, i+1, si+1 > sia una transizione. Talvolta il comportamento di un automa A viene descritto solo dalle sequenze (finite o infinite) di azioni esterne; tali sequenze prendono il nome di tracce. Algoritmi Distribuiti 28
Modelli di sistemi distribuiti Modello asincrono Fairness Un frammento di esecuzione di un automa A e’ detto fair se valgono le seguenti condizioni: § Il frammento e’ finito e nello stato finale nessuna zione esterna e’ abilitata § Il frammento e’ infinito e contiene un numero infinito di ciascuna azione esterna oppure nessuna di tali azione e’ abilitata . . Algoritmi Distribuiti 29
Modelli di sistemi distribuiti Modello asincrono Esecuzioni del canale [ ], send (1)i, j, [1], receive (1)i, j, [ ], send (2)i, j, [2], receive(2)i, j, [ ], send (1)i, j, [1], receive (1)i, j, [ ], send (2)i, j , [2] [ ], send (1)i, j, [11], send (1) i, j, [111], …. La prima esecuzione e’ fair poiche’ nessuna receive e’ abilitata nello stato finale, La seconda esecuzione non e’ fair perche’ e’ finita e nello stato finale una azione receive e’ abilitata La terza esecuzione non e’ fair perche’ e’ infinita e in ogni punto della computazione l’azione receive e’ abilitata Algoritmi Distribuiti 30
Modelli di sistemi distribuiti Modello asincrono Consideriamo un sistema formato da due processi P 1 e P 2 e due canali C 1, 2 e C 2, 1. C 1, 2 P 1 P 2 C 2, 1 Traccia: init(2)1, init(1)2 , send(2)1 , 2 , receive(2)1, 2 , send(1)2, 1 , receive(1)2, 1 init(4)1 , , init(0)2 decide(5)1 , decide(2)1 Algoritmi Distribuiti 31
Modelli di sistemi distribuiti Modello asincrono § Malfunzionamento processi § Crash. Il crash e’ modellato includendo tra le azioni di input di un processo dell’azione di input stop § Fallimento bizantino. Il fallimento bizantino e’ modellato permettendo di sostituire l’automa P con un qualsiasi automa con la stessa interfaccia esterna. § Malfunzionamento comunicazioni § Canali. Perdita di messaggi Algoritmi Distribuiti 32
Modelli di sistemi distribuiti Modello asincrono § La programmazione di algoritmi distribuiti in sistemi asincroni e’ particolarmente complicata. § Tecniche per semplificare la programmazione nei sistemi asincroni: § § uso di sincronizzatori simulazione di memoria condivisa uso di orologici monitoraggio degli algoritmi a tempo di run Algoritmi Distribuiti 33
Modello asincrono con memoria comune § Un modello asincrono con memoria comune e’ un automa I/O con azioni di input e di output su un insieme di porte processi porte P 1 var. condivise P 2 : : Pn Algoritmi Distribuiti 34
Modello asincrono con memoria comune Esempio di modello shared memory § un insieme P di processi {1, 2, …, n} § una variabile condivisa x con valori in un insieme V § Azioni input: input init(v)i con i P e v V output: decide(v) output i interne: access intern i § Stati: definito dallo stato di ogni processo e dal valore della variabile § Transizioni: Transizioni insieme di terne <si, , sj> § Task: Task uno per ciascun processo, costituito dalle azioni di access e di decide : : Algoritmi Distribuiti 35
Modello asincrono con memoria comune Esempio di modello shared memory § § Stati {idle, access, decide, done} input V {#} output V {#} Transizioni init(v)i input : = v, se stato=idle allora stato: =access decide(v)i precond. stato= decide e output = v effetto: stato: = done accessi precond. stato= access : : effetto: se x = # allora x: = input output: = x stato: = decide Algoritmi Distribuiti 36
Modelli asincroni orologici § In un sistema distribuito spesso e’ necessario stabilire una relazione d’ordine tra eventi di nodi (processi) diversi: § un evento a di P 1 puo’ essere la causa di un evento b di P 2? § un evento a di P 1 puo’ non essere correlato a un evento b di P 2? § Per descrivere queste relazioni si e’ introdotto nell’insieme degli eventi del sistema distribuito, un ordine parziale indicato come la relazione ” happens before ” Algoritmi Distribuiti 37
Modelli asincroni orologici A B tempo Il re e’ morto lunga vita al re C 1. lunga vita al re 2. Il re e’ morto Algoritmi Distribuiti 38
Modelli asincroni orologici Ipotesi 1) I processi comunicano tramite messaggi 2) In ogni processo gli eventi sono un insieme totalmente ordinato: a b c tempo locale 3) L’invio e la ricezione di un messaggio sono eventi Algoritmi Distribuiti 39
Modelli asincroni orologici La relazione Happens Before: La relazione d’ordine sull’insieme degli eventi di un sistema distribuito soddisfa le seguenti tre condizioni: (i) se a e b sono eventi di uno stesso processo e a precede b, allora a b (ii) se a e’ l’evento di invio di un messaggio e b e’ l’evento di ricezione dello stesso, allora a b (iii) se a b e b c allora a c (transitivita’) Algoritmi Distribuiti a b 40
Modelli asincroni orologici Due eventi distinti a e b sono detti concorrenti (a || b) se a b eb a a b di b significa che e’ possibile che l’evento a possa essere causa Algoritmi Distribuiti 41
Modelli asincroni orologici Diagramma Spazio-Tempo P Q R p 1 r 4, q 4 r 3, p 2 p 4 q 3 || p 3, q 3 || r 2 r 4 p 4 q 5 p 3 r 3 q 4 p 2 q 3 q 2 p 1 tempo q 1 r 2 r 1 Algoritmi Distribuiti 42
Modelli asincroni orologici Orologi Logici § Un clock Ci per un processo Pi e’ una funzione che assegna ad ogni evento a di Pi un numero Ci (a) § Il clock del sistema distribuito e’ dato da una funzione C che assegna ad ogni evento b del sistema il numero C (b) dove § C (b) = Cj (b) se b e’ un evento del processo Pj § La funzione C deve soddisfare alla seguente condizione di clock: clock per ogni coppia di eventi a , b: a b C (a) < C (b) Algoritmi Distribuiti 43
Modelli asincroni orologici Condizione di clock La condizione di clock puo’ essere soddisfatta se valgono le due condizioni seguenti: § CL 1: se a e b sono eventi di Pi e a b, allora Ci (a) < Ci (b) § CL 2: se a e’ l’evento di invio di un messaggio da parte di Pi e b e’ l’evento di ricezione dello stesso messaggio da parte di Pj, allora Ci (a) < Cj (b) Algoritmi Distribuiti 44
Modelli asincroni orologici Implementazione orologici Ogni processo Pi ha un contatore Ci(a) e’ il valore contenuto in Ci quando l’evento a si verifica. Regole implementative IR 1 ogni processo Pi incrementa il proprio contatore Ci subito dopo ogni evento locale IR 2 (i) se a e’ l’evento dall’invio di un messaggio m da Pi a Pj allora m contiene anche il timestamp Tm = Ci(a) (ii) il processo Pj setta il clock dell’evento ricezione del messaggio m (evento b): Cj(b) : = max(Cj, Tm +1) Algoritmi Distribuiti 45
Modelli asincroni tempo virtuale p 1 valori (1) clock (1) p 2 (2) p 3 (3) p 4 p 5 (4) (5) (3) P (5) Q q 1 q 2 q 3 q 4 Il tempo virtuale e’ un tempo discreto; se non si verificano eventi il tempo virtuale e’ fermo! Algoritmi Distribuiti 46
Modelli asincroni Ordine Totale La relazione d’ordine totale Gli orologici stabiliscono una relazione d’ ordine parziale sull’insieme degli eventi. Per imporre un ordine totale si usa un ordine totale sulle identita’ dei processi. Se a e’ un evento di Pi e b e’ un evento di Pj, l’ordine totale a b e’ definita da: a b iff Ci(a) < Cj(b) oppure Ci(a) = Cj(b) & Pi < Pj Algoritmi Distribuiti 47
- Slides: 47