Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia...
Transcript of Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia...
![Page 1: Instituto de Computação - UFF Sincronizadores Algoritmos Distribuídos Professora: Lúcia Drummond.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/1.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/2.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/3.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/4.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/5.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/6.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/7.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/8.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/9.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/10.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/11.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/12.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/13.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/14.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/15.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/16.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/17.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/18.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/19.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/20.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/21.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/22.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062623/552fc10b497959413d8c1721/html5/thumbnails/23.jpg)
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.