Eleição de leader e Exclusão Mútua
November 27, 2009
Sumário
Leader Election
Leader Election
O problema muitos algoritmos distribuídos pressupõem que um determinado processo desempenha um papel especial
Por exemplo, o algoritmo centralizado que garante exclusão mútua.
Solução proceder à eleição de um leader /coordenador:
I Uma vez concluída a eleição todos os processos activos sabem qual é o leader /coordenador.
I Este problema não tem solução em sistemas assíncronos com avarias. Porquê?
Leader Election: Pressupostos
1. Cada processo que participa na eleição tem um identificador que o distingue dos restantes
I P.ex. o endereço IP do computador onde executa.
2. Cada processo conhece o identificador dos restantes processos.
I O que cada processo desconhece são os processos
Bully Algorithm de Garcia-Molina (1/2)
I Quando um processo P detecta que o coordenador está inactivo, inicia uma eleição:
1. P envia uma mensagem ELECTION a todos os processos cujo identificador é maior do que o seu.
2. Se nenhum processo responde, P ganha a eleição.
3. Se um processo, cujo identificador é maior do que o de P responde ao desafio, P desiste.
I Sempre que um processo recebe uma mensagem
ELECTION dum processo cujo identificador é menor do que o seu, aceita o desafio:
1. responde ao processo que lhe enviou a mensagem;
2. “inicia” ele mesmo nova eleição, a menos que já tenha uma em curso.
I Sempre que um processo é reactivado, inicia uma eleição.
Bully Algorithm de Garcia-Molina (2/2)
I Eventualmente, todos os processos desistem, menos um -o n-ov-o c-o-ordenad-or. 1 2 4 0 5 6 3 7 1 2 4 0 5 6 3 7 1 2 4 0 5 6 3 7 1 2 4 0 5 6 3 7 Election Election Election Election OK OK Previous coordinator has crashed Election Election 1 2 4 0 5 6 3 7 OK Coordinator (a) (b) (c) (d) (e)
Leader Election in a Ring(1/2)
I Assume-se que os processos estão dispostos, fisica ou
logicamente, em anel.
I Um processo inicia uma eleição, construindo uma mensagem ELECTION, que inclui a sua identidade, e passa-a ao seu sucessor.
I Um processo que recebe uma mensagem ELECTION acrescenta a sua identidade à mensagem,
candidatando-se.
I Eventualmente a mensagem dá a volta regressando ao processo que a criou, o qual a altera para uma mensagem COORDINATOR que circula de novo ao longo do anel. I O leader é o processo listado na mensagem
COORDINATOR com o maior identificador.
Leader Election in a Ring(2/2)
I O algoritmo funciona mesmo no caso de execuções concorrentes: 1 0 5 4 7 6 3 2 [2] [2,3] [5,6] [5,6,0] [5] Election message No response Previous coordinator has crashed
I Alguns pormenores por apresentar: I Como se forma o anel?
I Como se mantém o anel na presença de avarias ou
Exclusão Mútua
O problema garantir exclusão mútua na execução duma secção crítica por processos num sistema distribuído
i.e., sem partilha de memória.
Solução várias:
I algoritmo centralizado; I algoritmo distribuído; I algoritmo em aneis.
Exclusão Mútua: Algoritmo Centralizado (1/3)
I Um processo, o coordenador, mantém o estado das secções críticas dum mesmo conjunto:
I pode ser eleito usando um dos algoritmos acima. I Um processo:
I antes de entrar numa secção crítica:
I envia um pedido de autorização ao coordenador;
I espera pela autorização.
I depois de sair duma secção crítica, notifica o coordenador
Exclusão Mútua: Algoritmo Centralizado (2/3)
(a) (b) (c) 0 1 0 1 0 1 3 3 3 2 2 2 2Request OK Request Release
OK Coordinator Queue is empty No reply I O coordenador:
I Quando recebe um pedido de autorização:
I Responde imediatamente, se conjunto livre.
I Insere o pedido numa fila, caso contrário.
I Quando recebe uma notificação:
I Actualiza o estado do conjunto, se não houver qualquer
processo à espera.
I Responde ao primeiro processo na fila, caso contrário.
Exclusão Mútua: Algoritmo Centralizado (3/3)
+ Simples: fácil de provar correcção.
+ Fácil de implementar.
? Justo: todos processos tratados da mesma maneira.
- Depende dum coordenador:
I E se o coordenador falha? I Impossibilidades teóricas.
Exclusão Mútua: Algoritmo Distribuído (1/3)
I De Lamport, e optimizado por Ricar e Agrawala.
I Assume:
I que há uma ordem total dos eventos no sistema:
I Usar par (Lamport timestamp, process id).
I que a comunicacão é fiável.
I Um processo que quer entrar numa secção crítica difunde uma mensagem especificando:
I a identidade do processo; I a secção crítica;
I a Lamport timestamp.
Exclusão Mútua: Algoritmo Distribuído (2/3)
I Quando um processo recebe uma mensagem de outro a sua acção depende do estado em que se encontra:
dentro duma secção crítica coloca a mensagem numa fila para posterior processamento;
a tentar entrar numa secção crítica compara a timestamp da mensagem recebida com aquela da mensagem que transmitiu:
I se menor, responde OK ;
I senão, coloca a mensagem numa fila para posterior
processamento.
caso contrário (não está numa secção crítica nem pretende entrar) responde OK.
I Um processo só pode entrar na secção crítica depois de receber uma mensagem OK dos restantes processos. I Quando um processo sai da sua secção crítica, envia uma
Exclusão Mútua: Algoritmo Distribuído (3/3)
0 0 0 1 2 1 2 1 2 8 8 8 12 12 12 OK OK OK OK Accesses resource Accesses resource (a) (b) (c)I O algoritmo assegura que a entrada nas secções críticas é feita por ordem das Lamport timestamps modificadas:
I estas timestamps têm uma ordem total;
I Em comparação com o algoritmo centralizado este algoritmo é:
I menos tolerante a falhas; I menos eficiente;
I mais complicado.
Exclusão Mútua: Token Ring (1/2)
1 0 0 2 3 4 5 6 7 2 4 3 7 1 6 5 (a) (b) I A ideia é:
I formar um anel de processos (físico ou lógico);
I fazer circular uma mensagem especial, o token, neste anel; I quando um processo recebe o token:
I se pretende entrar na secção crítica, entra e quando sair
passa o token ao processo seguinte;
Exclusão Mútua: Token Ring (2/2)
I Se o token se perder há que o regenerar:
I Detectar a perda do token nem sempre é fácil.
I Avaria dum processo pode também conduzir à perda do token, a menos que:
I haja confirmação da recepção do token;
I a configuração do anel seja conhecida de todos os seus
membros.
I É o algoritmo básico por trás dos algoritmos de controlo de acesso ao meio baseados em tokens:
I estes algoritmos são usados para garantir o acesso ao
meio em exclusão mútua.
Exclusão Mútua: Comparação dos Algoritmos
Algorithm Messages per
entry/exit
Delay before entry (in message times)
Problems
Centralized 3 2 Coordinator crash
Distributed 2(n − 1) 2(n − 1) Crash of any pro-cess
Token ring 1 to ∞ 0 to n − 1 Lost token, process crash
I Assume-se canais de comunicação ponto-a-ponto. I O algoritmo centralizado é não só mais simples, mas
também mais eficiente.
I O atraso assume que não há conflito.
I Qualquer dos algoritmos é pouco robusto em relação a avarias.
Leitura Adicional
I Capítulo 6 de Tanenbaum e van Steen, Distributed Systems, 2nd Ed.
I Secção 6.5: Election Algorithms I Secção 6.3: Mutual Exclusion