Algoritmi Distribuiti 1
Modelli di sistemi distribuitiModelli di sistemi distribuiti
Quali tipi di problemi computazionaliproblemi computazionali si possono risolvere in un sistema distribuito?
Dipende dalle caratteristiche del sistemacaratteristiche del sistema: sincronia/asincronia di esecuzione e interazioni comportamento in caso di failure hardware e software...
sistema di comunicazione
Algoritmi Distribuiti 2
Modelli di sistemi distribuitiModelli di sistemi distribuitifissare un appuntamentofissare un appuntamento
Roberto e Maria vogliono vedersi a pranzoRoberto e Maria vogliono vedersi a pranzo
e comunicano via e-maile comunicano via e-mail
ore 10.00
ore 11.15
ore 12.10
ore 10.40
ore 11.40
Incontriamoci a mezzogiorno
OK
Ack “OK”
Ack “Ack OK”
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
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 3
Modelli di sistemi distribuitiModelli di sistemi distribuitifissare un appuntamentofissare un appuntamento
Roberto e Maria vogliono vedersi a pranzoRoberto e Maria vogliono vedersi a pranzoe comunicano per telefonoe comunicano per telefono
caratteristiche del sistema: non esiste memoria comune ognuno dei due sente le parole dell’altro con un ritardo noto e limitatose la comunicazione cade entrambi ne vengono a conoscenza
caratteristiche del sistema: non esiste memoria comune ognuno dei due sente le parole dell’altro con un ritardo noto e limitatose la comunicazione cade entrambi ne vengono a conoscenza
Vediamoci a mezzogiorno OK. A presto
Algoritmi Distribuiti 4
Modelli di sistemi distribuitiModelli di sistemi distribuiti
Occorre considerare tre dimensioni:
tipo di failuresc
hem
a d
i com
un
icaz
ion
e
sincronismo
Algoritmi Distribuiti 5
Modelli di sistemi distribuitiModelli di sistemi distribuiti
Schemi di comunicazioneSchemi di comunicazione
rete a scambio di messaggirete a scambio di messaggi connessioni punto-a-punto topologie specifiche (anello, stella,
broadcast,..)
memoria condivisamemoria condivisa
Algoritmi Distribuiti 6
Modelli di sistemi distribuiti:Modelli di sistemi distribuiti:reti punto-a-puntoreti punto-a-punto
Reti punto-a-punto si possono modellare come grafigrafi, i cui nodinodi rappresentano i processiprocessi e gli archiarchi le linee di linee di comunicazione 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
Outbuffer
send
QInbuffer
recv
Algoritmi Distribuiti 7
Modelli di sistemi distribuiti:Modelli di sistemi distribuiti:reti punto-a-puntoreti punto-a-punto
Caratteristiche delle Caratteristiche delle reti punto-a-punto reti punto-a-punto failure failure freefree
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 8
Modelli di sistemi distribuitiModelli di sistemi distribuitiTipi di malfunzionamentiTipi di malfunzionamenti
Malfunzionamento di processi : CRASH
...un processo si blocca prima di raggiungere lo stato finale….
Processo fallito non soddisfa la proprieta’ di liveness dei processi
Processo corretto soddisfa la liveness dei processi
Malfunzionamento di comunicazione: PERDITA DI MESSAGGI
..un messaggio inviato non viene ricevuto…
Linea fallita non soddisfa la liveness della comunicazione
Linea corretta soddisfa la liveness della comunicazione
Algoritmi Distribuiti 9
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello SincronoModello Sincrono
Modello SincronoModello Sincrono E’ noto un limite di tempo massimolimite di tempo massimo per l’esecuzione di uno step localestep locale da parte di un processo
E’ noto un limite di tempo massimolimite di tempo massimo di ritardo di ritardo di trasmissionetrasmissione
Si puo’ supporre che i processi abbiano orologi fisiciorologi fisici perfettamente sincronizzatisincronizzati (o approssimativamente sincronizzati, cioe’ all’interno di un intervallo di tempo )
Algoritmi Distribuiti 10
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello sincronoModello sincrono
Modello sincrono- Modello sincrono- ConseguenzeConseguenze
Si possono usare timeouttimeout per scoprire malfunzionamenti di comunicazione
tP
Q
send(Q,m)
recv(m)
t1
send(P,m’)
t2
recv(m’)
t3
Wait for timeout > max(t1 + t2 + t3)
Algoritmi Distribuiti 11
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello sincronoModello sincrono
Modello sincrono Modello sincrono ConseguenzeConseguenze
Si puo’ organizzare la computazione in fasifasi: invio di messaggi a un insieme di processi P ricezione di messaggi della fase da parte dei processi di P cambio di stato
tP
Q
R
m2m1
m3
fase1 fase3fase2
Algoritmi Distribuiti 12
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello asincronoModello asincrono
Modello AsincronoModello Asincrono
• anche se il tempo d’esecuzione di uno step locale e’ anche se il tempo d’esecuzione di uno step locale e’ finitofinito,, non e’ noto non e’ noto nessun limite di tempo massimonessun limite di tempo massimo per la sua per la sua esecuzioneesecuzione• non e’ noto non e’ noto nessun limite di tempo massimonessun limite di tempo massimo per la trasmissione per la trasmissione del messaggiodel messaggio• non si puo’ supporre l’esistenza di non si puo’ supporre l’esistenza di orologi fisici sincronizzatiorologi fisici sincronizzati
Il modello asincrono e’ il piu’ generale: un algoritmo progettato per sistemi asincroni funziona anche in sistemi sincroniIl modello asincrono e’ il piu’ generale: un algoritmo progettato per sistemi asincroni funziona anche in sistemi sincroni
Algoritmi Distribuiti 13
Modelli di sistemi distribuitiModelli di sistemi distribuitisincrono/ asincronosincrono/ asincrono
Sfortunatamente:Sfortunatamente:
alcuni problemi computazionali non hanno soluzione in alcuni problemi computazionali non hanno soluzione in sistemi asincronisistemi asincroni
se si desidera una soluzione se si desidera una soluzione fault tolerantfault tolerant se si vuole usare un se si vuole usare un algoritmo deterministicoalgoritmo deterministico
quindiquindi per alcuni problemi di deve ricorrere aper alcuni problemi di deve ricorrere a
sistemi sincronisistemi sincroni algoritmi probabilisticialgoritmi probabilistici
Algoritmi Distribuiti 14
Modelli di sistemi distribuitiModelli di sistemi distribuitisincrono/ asincronosincrono/ asincrono
Per descrivere un sistema distribuito, occorre specificare:
grafo di comunicazionegrafo di comunicazione (completo,anello, ecc…) possibilita’ di fallimento di processifallimento di processi possibilita’ e tipo di fallimenti di comunicazionefallimenti di comunicazione ipotesi sul numero massimonumero massimo di processi falliti e/o di comunicazioni fallite tipo di sincronismosincronismo
E’ cruciale essere chiari e precisi su questi aspetti poiche’ essihanno una ricaduta essenziale su:
funzionamento dell’algoritmo soluzione del problema computazionale
Algoritmi Distribuiti 15
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello sincronoModello sincrono
Grafo orientato G = (G = (V,EV,E))I nodi v v VV rappresentano i
processi, gli archi e e EE rappresentano le linee di comunicazione
distanzadistanza(i,j): lunghezza del cammino minimo tra i e j in GG
diametrodiametro(i,j): distanza massima tra tutte le coppie di vertici (i,J) in G
12
3
5
4
Algoritmi Distribuiti 16
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello sincronoModello sincrono
ProcessiProcessiOgni processo e’ modellato da una quaterna:
(start, states, msgs, trans)
startstart insieme degli stati iniziali(sottoinsieme non vuoto di states)
statesstates insieme di stati
msgsmsgs funzione di generazione dei messaggi(ad ogni stato associa un insieme di messaggi in uscita)
transtrans funzione di transizione(ad ogni coppia <stato, messaggi ricevuti> associa uno
stato)
i
Algoritmi Distribuiti 17
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello sincronoModello sincrono
Linee di comunicazioneLinee di comunicazione
Ogni arco rappresenta un canalecanale, cioe’ un posto per un unico messaggio m MM {null} (assenza di messaggio).
mi j
Algoritmi Distribuiti 18
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello sincronoModello sincrono
EsecuzioneEsecuzioneNel modello sincrono, l’esecuzione procede in fasifasi. Inizialmente tutti i processi sono in uno stato iniziale e tutti i canali sono vuoti. Ogni fase e’ costituita da due step.step.
Step1.Step1. Ogni processo applica la propria funzione di generazione dei messaggi (msg) e invia i messaggi generati nei propri canali di uscita. Step2.Step2. 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 19
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello sincronoModello sincrono
si
STEP1STEP1STEP2STEP2
L’assenza di messaggi sara’ implementata nei sistemi reali usando un timeout (nel modello con un messaggio null)
mi1
mi2
mi3
mo1
mo2
mo3
mi1 mo1
mi3
mi2
mo3
mo2SiSi+1
Algoritmi Distribuiti 20
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello sincronoModello sincrono
Malfunzionamento processi Crash. Il processo si blocca prima o dopo lo step1
oppure in un qualsiasi punto dello step2 Fallimento bizantino. Si generano messaggi e stati
arbitrari(non secondo le funzioni trans e msgs)
Malfunzionamento comunicazioni Canali.Perdita di messaggi
Algoritmi Distribuiti 21
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello sincronoModello sincrono
Modello formale di esecuzione sincronaModello formale di esecuzione sincronaUna esecuzione sincrona di un sistema distribuito e’ definita Una esecuzione sincrona di un sistema distribuito e’ definita da una sequenza infinita:da una sequenza infinita:
CC00,M,M11,N,N11,C,C11,M,M22,N,N22,C,C22,…,,…,
CCrr assegnamento di stati alla fase rr, cioe’ dopo r fasi
MMrr messaggi inviati alla fase rr
NNrr messaggi ricevuti alla fase r
MMrr NNrr significa che ci sono state perdite di messaggi
Algoritmi Distribuiti 22
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello asincronoModello asincrono
Grafo orientato G = (G = (V,EV,E))I nodi v v VV rappresentano i
processi, gli archi e e EE rappresentano le linee di comunicazione
distanzadistanza(i,j): lunghezza del cammino minimo tra i e j in GG
diametrodiametro(i,j): distanza massima tra tutte le coppie di vertici (i,J) in G
12
3
5
4
Algoritmi Distribuiti 23
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello asincronoModello asincrono
Automa I/OAutoma I/OUn 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 24
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello asincronoModello 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)send (m)i,ji,j
(j e’ un processo d’uscita del nodo i e m e’ un messaggio)
tra le azioni di input esiste anche l’azione receive (m)receive (m)j,ij,i
(j e’ un processo d’ entrata del nodo i e m e’ un messaggio)
Pi
decide(v)
init(v)
receive(m)
send(m)
Algoritmi Distribuiti 25
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello asincronoModello asincrono
EsempioEsempioProcesso PProcesso Pi i (descritto da un I/O automa)(descritto da un I/O automa)V e’ un insieme di valori,
azioni di inputazioni di input: init(v)i v V
receive(v)j,i
azioni di outputazioni di output: decide(v)i
send(v)i,j
statistati val, un vettore [1, . . .,n] di elementi di V
transizionitransizioniinit(v)i v V val[i]:= v
receive(v)j,i val[j] := v
send(v)i,j nessuna transizione, precond. val(i) := v
decide(v)i nessuna transizione, precond.
v = val[1]+ …+ val[n]
Algoritmi Distribuiti 26
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello asincronoModello asincrono
Linee di comunicazioneLinee di comunicazione
Anche ilcanalecanale, associato all’arco (i,j), puo’ essere definito come un automa I/O; con input della forma send (m)send (m)i,ji,j e output della forma receive(m)receive(m)i,j i,j Il tipo di canale canale piu’ diffuso e’ il canale FIFO in cui ogni azione send (m)send (m) aggiunge un messaggio mm alla fine della coda ed ogni azione receive(m)receive(m) rimuove un messaggio mm dall’inizio della coda.
i jCiji
Algoritmi Distribuiti 27
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello asincronoModello asincrono
EsempioEsempioCanale CCanale Ci,ji,j
M e’ l’alfabeto dei messaggi
azioni di inputazioni di input: send(m)i ,j m Mazioni di outputazioni di output: receive(m)j,i
statistati queue una coda FIFO di elementi di M,inizialmente vuota
transizionitransizionisend(m)i ,j aggiunge m alla codareceive(m)j,i rimuove il primo elemento della coda
tasktask{receive(m)j,j: mM}
Algoritmi Distribuiti 28
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello asincronoModello asincrono
Esecuzioni e tracceEsecuzioni e tracceUn frammento di esecuzione di un automa A e’ una sequenza finita s0,1,s1,1,s2,2,…,sr o infinita:
s0,1,s1,1,s2,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 traccetracce..
Algoritmi Distribuiti 29
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello asincronoModello asincrono
FairnessFairnessUn frammento di esecuzione di un automa A e’ detto fairfair 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 30
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello asincronoModello asincrono
Esecuzioni del canaleEsecuzioni 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,[1], 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’ abilitataLa terza esecuzione non e’ fair perche’ e’ infinita e in ogni punto della
computazione l’azione receive e’ abilitata
Algoritmi Distribuiti 31
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello asincronoModello asincrono
Consideriamo un sistema formato da due processi P1 e P2
e due canali C1,2 e C 2,1.
P1P1 P2P2
C1,2C1,2
C2,1C2,1
Traccia:
init(2)1, init(1)2 ,send(2)1 ,2 , receive(2)1,2 ,send(1)2,1 , receive(1)2,1init(4)1 ,, init(0)2
decide(5)1 , decide(2)1
Algoritmi Distribuiti 32
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello asincronoModello 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 33
Modelli di sistemi distribuitiModelli di sistemi distribuitiModello asincronoModello 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 orologi logici monitoraggio degli algoritmi a tempo di run
Algoritmi Distribuiti 34
Modello asincrono con memoria Modello asincrono con memoria comunecomune
Un modello asincrono con memoria comune e’ un automa I/O con azioni di input e di output su un insieme di porte
P1
P2
Pn
::
porte
processi
var. condivise
Algoritmi Distribuiti 35
Modello asincrono con memoria Modello asincrono con memoria comunecomune
Esempio di modello shared memory un insieme P di processiprocessi {1, 2, …,n} una variabile condivisavariabile condivisa x con valori in un insieme V Azioni Azioni inputinput: init(v)i con iP e vV
outputoutput:decide(v)i
interninterne:accessi Stati:Stati: definito dallo stato di ogni processo e dal
valore della variabile TransizioniTransizioni: insieme di terne <si,,sj> TaskTask: uno per ciascun processo, costituito dalle
azioni di access e di decide::
Algoritmi Distribuiti 36
Modello asincrono con memoria Modello asincrono con memoria comunecomune
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 = veffetto: stato:= done
accessi precond. stato= accesseffetto: se x = # allora x:= inputoutput:= xstato:= decide
::
Algoritmi Distribuiti 37
Modelli asincroniModelli asincroniorologi logiciorologi logici
In un sistema distribuito spesso e’ necessario stabilire una relazione d’ordinerelazione d’ordine tra eventi di nodi (processi) diversi:
un evento a di P1 puo’ essere la causa di un evento b di P2?
un evento a di P1 puo’ non essere correlato a un evento b di P2?
Per descrivere queste relazioni si e’ introdotto nell’insieme degli eventi del sistema distribuito, un ordine parziale indicato come la relazione ” ” happens beforehappens before ” ”
Algoritmi Distribuiti 38
Modelli asincroniModelli asincroniorologi logiciorologi logici
A
tempo
B
C
Il re e’ morto
lunga vita al re
1. lunga vita al re
2. Il re e’ morto
Algoritmi Distribuiti 39
Modelli asincroniModelli asincroniorologi logiciorologi logici
IpotesiIpotesi
1)I processi comunicano tramite messaggi2)In ogni processo gli eventi sono un insieme
totalmente ordinato:
3) L’invio e la ricezione di un messaggio sono eventi
a cbtempo locale
Algoritmi Distribuiti 40
Modelli asincroniModelli asincroniorologi logiciorologi logici
La relazione La relazione Happens BeforeHappens 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’)
a b
a
b
Algoritmi Distribuiti 41
Modelli asincroniModelli asincroniorologi logiciorologi logici
Due eventi distinti a e b sono detti concorrenti (a || b) se a b e b a
a b significa che e’ possibile che l’evento a possa essere causa di b
Algoritmi Distribuiti 42
Modelli asincroniModelli asincroniorologi logiciorologi logici
Diagramma Spazio-Tempo
PP QQ RR
p4
p3
p2
p1q1
q2
q3
q4
q5
r4
r3
r2
r1
tempo
p1 r4, q4 r3, p2 p4
q3 || p3, q3 || r2
Algoritmi Distribuiti 43
Modelli asincroniModelli asincroniorologi logiciorologi logici
Orologi LogiciOrologi Logici
Un clock CCii per un processo PPii e’ una funzione che assegna ad ogni evento a di PPii un numero CCii (a)
Il clock del sistema distribuito e’ dato da una funzione C C che assegna ad ogni evento b del sistema il numero CC (b) dove
CC (b) = CCjj (b) se b e’ un evento del processo PPjj
La funzione CC deve soddisfare alla seguente condizione di condizione di clockclock:
per ogni coppia di eventi a ,b: a b CC (a) < CC (b)
Algoritmi Distribuiti 44
Modelli asincroniModelli asincroniorologi logiciorologi logici
Condizione di clockCondizione di clockLa condizione di clock puo’ essere soddisfatta se valgono le due condizioni seguenti:
CL1: se a e b sono eventi di PPi e a b, allora
CCii (a) < CCii (b)
CL2: se a e’ l’evento di invio di un messaggio da parte di PPi e b e’ l’evento di ricezione dello stesso messaggio da parte di PPj, allora
CCii (a) < CCjj (b)
Algoritmi Distribuiti 45
Modelli asincroniModelli asincroniorologi logiciorologi logici
Implementazione orologi logiciImplementazione orologi logiciOgni processo Pi ha un contatore Ci e Ci(a) e’ il valore contenuto in Ci quando l’evento a si verifica.
Regole implementativeRegole implementativeIR1 ogni processo Pi incrementa il proprio contatore Ci
subito dopo ogni evento locale IR2 (i) se a e’ l’evento dato dall’invio di un messaggio m da Pi a Pj allora m contiene anche il timestamp TmTm = Ci(a)
(ii) il processo Pj setta il clock dell’evento ricezione del messaggio m (evento b):
Cj(b) := max(Cj, TmTm +1)
Algoritmi Distribuiti 46
Modelli asincroniModelli asincronitempo virtualetempo virtuale
P
Q
p1 p2 p3 p4 p5
q1 q2 q3 q4
(1) (2) (3) (4) (5)
(1) (2) (3) (5)
valori
clock
Il tempo virtuale e’ un tempo discreto; se non si verificano eventi il tempo virtuale e’ fermo!
Algoritmi Distribuiti 47
Modelli asincroniModelli asincroniOrdine TotaleOrdine Totale
La relazione d’ordine totale La relazione d’ordine totale Gli orologi logici stabiliscono una relazione d’ordineordine parziale sull’insieme degli eventi. Per imporre un ordine totaleordine 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