23
Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Embed Size (px)

Citation preview

Page 1: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF

Sincronizadores

Algoritmos DistribuídosProfessora: Lúcia Drummond

Page 2: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 2

Sincronizadores

Objetivo

Transmitir a todo nó a cada pulso a informação de que todos os vizinhos dos nós estão seguros em relação aquele pulso.

Page 3: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 3

Sincronizadores

Sincronizador Alpha

A informação de que todos os vizinhos dos nós estão seguros com relação ao pulso s ≥ 0 é transmitida diretamente pelos próprios vizinhos através de uma mensagem safe(s).

Page 4: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 4

Sincronizadores

Sincronizador Alpha

Um nó pode prosseguir para o pulso s+1 quando receber uma mensagem safe(s) de todos os seus vizinhos.

Como não é assumido que os canais sejam FIFO, as mensagens de computação e acks enviadas em conexão com o pulso s são enviadas como comp_msg(s) e acks(s).

Page 5: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 5

Sincronizadores

Sincronizador Alpha

Uma variável expected(s), inicialmente igual a zero, grava para todo s o número de acks esperados.

Esta variável é incrementada sempre que são enviadas mensagens de computação.

Page 6: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 6

Sincronizadores

Sincronizador Alpha

A mensagem startup é enviada pelos nós em N para todos os seus vizinhos quando eles iniciam a computação.

Esta mensagem ao atingir um nó que não está em N0 pela primeira vez o acorda e então é propagada por este para todos os outros nós.

Page 7: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 7

Sincronizadores

Sincronizador Alpha

Todos os nós somente executam o pulso s=0 da computação síncrona ao receber um startup de todos os vizinhos (controlado pela variável go).

Page 8: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 8

Algoritmo A_Alg(Alpha)

Variáveis

si:=0;

msgi(s):=0 para todo s;

initiadedi:=false;

goij:=false;

expectedi(s):=0 para todo s;

safeij(s):=false para todo nj viz e para todo s;

Page 9: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 9

Algoritmo A_Alg(Alpha)

Algoritmo

Input:msgi=nil;

Ação:initiatedi:=true;

Envie startup para todo nj viz;

Page 10: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 10

Algoritmo A_Alg(Alpha)

Algoritmo

Input:msgi=startup tal que origemi(msgi)=nj;

Ação:if not initiatedi then

begininitiatedi:=true;

Envie startup para todo nk viz;

end

Page 11: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 11

Algoritmo A_Alg(Alpha)

Algoritmo

goij:=true;

if goij para todo nj viz then

beginExecute alguma computação;Envie comp_msg(si) em cada aresta de

um subconjunto de viz;if expected(si)=0 then

Envie safe(si) para todo nk viz;

end

Page 12: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 12

Algoritmo A_Alg(Alpha)

Algoritmo

Input:msgi=comp_msg(s) tal que origemi(msgi)=nj;

Ação:MSGi(s+1):=MSGi(s+1) {msgi};

Envie ack(s) para nj;

Page 13: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 13

Algoritmo A_Alg(Alpha)

Algoritmo

Input:msgi=ack(s);

Ação:expectedi(s):=expectedi(s)-1;

if expectedi(s)=0 then

Envie safe(s) para todo nj viz;

Page 14: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 14

Algoritmo A_Alg(Alpha)

Algoritmo

Input:msgi=safe(s) tal que origemi(msgi)=nj;

Ação:safei

j(s)=true;

if safeij(si) para todo nk viz then

beginsi:=si +1;

Execute alguma computação;Envie uma comp_msg(si) em cada aresta

do subconjunto de viz;

Page 15: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 15

Algoritmo A_Alg(Alpha)

Algoritmo

if expectedi(si)=0 then

envie safe(si) para todo nk viz;

end

Page 16: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 16

Sincronizadores

Sincronizador Beta

O sincronizador Beta exige uma spanning tree já estabelecida em G.

A função do líder do sincronizador Beta é reunir de todos os outros nós a informação de segurança necessária para prosseguir para futuros pulsos e então propagar esta informação para todos eles.

Page 17: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 17

Sincronizador Beta

Os detalhes deste procedimento são os seguintes: Quando um nó que não é um líder

se torna seguro com relação a um certo pulso, e

recebe uma mensagem de safe de todos exceto de um do seus vizinhos na árvore,

Então este envia uma mensagem de safe para o

único vizinho do qual ele não recebeu uma mensagem de safe (aresta da árvore conectando a este vizinho leva ao líder).

Page 18: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 18

Sincronizador Beta

O líder ao receber mensagens safe sobre todas as arestas da árvore que são incidentes a ele, e estando seguro com relação ao pulso, propaga um mensagem sobre a árvore, indicando que a computação de um novo pulso pode ser executada.

Esta mensagem pode ser também uma mensagem de safe, e então a regra para um nó prosseguir para o próximo pulso é ter recebido uma mensagem de safe de todas as arestas incidentes a ele.

Page 19: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 19

Sincronizador Beta

O líder ao receber mensagens safe sobre todas as arestas da árvore que são incidentes a ele, e estando seguro com relação ao pulso, propaga um mensagem sobre a árvore, indicando que a computação de um novo pulso pode ser executada.

Esta mensagem pode ser também uma mensagem de safe, e então a regra para um nó prosseguir para o próximo pulso é ter recebido uma mensagem de safe de todas as arestas incidentes a ele.

Page 20: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 20

Sincronizador Beta

O líder ao receber mensagens safe sobre todas as arestas da árvore que são incidentes a ele, e estando seguro com relação ao pulso, propaga um mensagem sobre a árvore, indicando que a computação de um novo pulso pode ser executada.

Esta mensagem pode ser também uma mensagem de safe, e então a regra para um nó prosseguir para o próximo pulso é ter recebido uma mensagem de safe de todas as arestas incidentes a ele.

Page 21: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 21

Sincronizador Beta

O líder ao receber mensagens safe sobre todas as arestas da árvore que são incidentes a ele, e estando seguro com relação ao pulso, propaga um mensagem sobre a árvore, indicando que a computação de um novo pulso pode ser executada.

Esta mensagem pode ser também uma mensagem de safe, e então a regra para um nó prosseguir para o próximo pulso é ter recebido uma mensagem de safe de todas as arestas incidentes a ele.

Page 22: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 22

Sincronizador Beta

O líder ao receber mensagens safe sobre todas as arestas da árvore que são incidentes a ele, e estando seguro com relação ao pulso, propaga um mensagem sobre a árvore, indicando que a computação de um novo pulso pode ser executada.

Esta mensagem pode ser também uma mensagem de safe, e então a regra para um nó prosseguir para o próximo pulso é ter recebido uma mensagem de safe de todas as arestas incidentes a ele.

Page 23: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

Instituto de Computação - UFF 23

Sincronizadores

Sincronizador Gama

O sincronizador Gama é uma combinação dos outros dois sincronizadores.

Dentro dos clusters, o sincronizador Gama opera como sincronizador Alpha.

Os nós são agrupados em clusters.

Entre os clusters, como sincronizador Beta.