A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Algoritmos Distribuídos Professora: Lúcia Drummond

Apresentações semelhantes


Apresentação em tema: "Algoritmos Distribuídos Professora: Lúcia Drummond"— Transcrição da apresentação:

1 Algoritmos Distribuídos Professora: Lúcia Drummond
Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond

2 Instituto de Computação - UFF
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. Instituto de Computação - UFF

3 Instituto de Computação - UFF
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). Instituto de Computação - UFF

4 Instituto de Computação - UFF
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). Instituto de Computação - UFF

5 Instituto de Computação - UFF
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. Instituto de Computação - UFF

6 Instituto de Computação - UFF
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. Todos os nós somente executam o pulso s=0 da computação síncrona ao receber um startup de todos os vizinhos. Instituto de Computação - UFF

7 Instituto de Computação - UFF
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). Todos os nós somente executam o pulso s=0 da computação síncrona ao receber um startup de todos os vizinhos. 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; Instituto de Computação - UFF

9 Algoritmo A_Alg(Alpha)
Input: msgi=nil; Ação: initiatedi:=true; Envie startup para todo nj viz; Instituto de Computação - UFF

10 Algoritmo A_Alg(Alpha)
Input: msgi=startup tal que origemi(msgi)=nj; Ação: if not initiatedi then begin initiatedi:=true; Envie startup para todo nk viz; end Instituto de Computação - UFF

11 Algoritmo A_Alg(Alpha)
goij:=true; if goij para todo nj viz then begin Execute 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 Instituto de Computação - UFF

12 Algoritmo A_Alg(Alpha)
Input: msgi=comp_msg(s) tal que origemi(msgi)=nj; Ação: MSGi(s+1):=MSGi(s+1) {msgi}; Envie ack(s) para nj; Instituto de Computação - UFF

13 Algoritmo A_Alg(Alpha)
Input: msgi=ack(s); Ação: expectedi(s):=expectedi(s)-1; if expectedi(s)=0 then Envie safe(s) para todo nj viz; Instituto de Computação - UFF

14 Algoritmo A_Alg(Alpha)
Input: msgi=safe(s) tal que origemi(msgi)=nj; Ação: safeij(s)=true; if safeij(si) para todo nk viz then begin si:=si +1; Execute alguma computação; Envie uma comp_msg(si) em cada aresta do subconjunto de viz; Instituto de Computação - UFF

15 Algoritmo A_Alg(Alpha)
if expectedi(si)=0 then envie safe(si) para todo nk viz; end Instituto de Computação - UFF

16 Instituto de Computação - UFF
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. Instituto de Computação - UFF

17 Instituto de Computação - UFF
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). Instituto de Computação - UFF

18 Instituto de Computação - UFF
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. Instituto de Computação - UFF

19 Instituto de Computação - UFF
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. Instituto de Computação - UFF

20 Instituto de Computação - UFF
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. Instituto de Computação - UFF

21 Instituto de Computação - UFF
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. Instituto de Computação - UFF

22 Instituto de Computação - UFF
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. Instituto de Computação - UFF

23 Instituto de Computação - UFF
Sincronizadores Sincronizador Gama O sincronizador Gama é uma combinação dos outros dois sincronizadores. Os nós são agrupados em clusters. Dentro dos clusters, o sincronizador Gama opera como sincronizador Alpha. Entre os clusters, como sincronizador Beta. Instituto de Computação - UFF


Carregar ppt "Algoritmos Distribuídos Professora: Lúcia Drummond"

Apresentações semelhantes


Anúncios Google