Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di...

47
Algoritmi Distribuiti 1 Modelli di sistemi Modelli di sistemi distribuiti distribuiti Quali tipi di problemi computazionali problemi computazionali si possono risolvere in un sistema distribuito? Dipende dalle caratteristiche del sistema caratteristiche del sistema: sincronia/asincronia di esecuzione e interazioni comportamento in caso di failure hardware e software... sistema di comunicazione

Transcript of Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di...

Page 1: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 2: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 3: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 4: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 5: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 6: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 7: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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)

Page 8: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 9: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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 )

Page 10: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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)

Page 11: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 12: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 13: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 14: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 15: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 16: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 17: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 18: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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.

Page 19: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 20: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 21: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 22: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 23: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 24: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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)

Page 25: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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]

Page 26: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 27: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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}

Page 28: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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..

Page 29: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

..

Page 30: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 31: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 32: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 33: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 34: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 35: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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::

Page 36: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

::

Page 37: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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 ” ”

Page 38: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 39: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 40: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 41: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 42: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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

Page 43: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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)

Page 44: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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)

Page 45: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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)

Page 46: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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!

Page 47: Algoritmi Distribuiti1 Modelli di sistemi distribuiti problemi computazionali zQuali tipi di problemi computazionali si possono risolvere in un sistema.

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