Sistemas Distribuídos
Aula 09 – Sincronismo e Deadlock
Prof. Hélio de Sousa Lima Filho
(helio.filho@gmail.com)
Algoritmos
para Eleição
• Muitos processos distribuídos requerem
um processo para agir como coordenador,
inicializador ou alguma outra atividade em
especial
• O objetivo do algoritmo de eleição é
garantir a democracia.
– Quando uma eleição termina, todos os
processos concordam com a decisão de
quem é o novo coordenador.
Sistemas Distribuídos
2
Algoritmos
para Eleição
• Se todos os processos são exatamente do
mesmo tipo, sem nenhuma característica que
os distingam dos demais, não existe
nenhuma forma de selecionar um deles em
especial.
• Assume-se que cada processo possui um
endereço único (por exemplo seu endereço
de rede), e os algoritmos de eleição tentam
localizar o processo com o maior número e
designá-lo como coordenador
Sistemas Distribuídos
3
Algoritmos para Eleição
Algoritmo Bully
• Quando um processo (P) nota que o
coordenador não está mais respondendo
a uma requisição, ele inicia uma eleição:
– P envia uma mensagem de ELECTION para
todos os processos com números maiores
que o seu;
– Se nenhum responde, P ganha a eleição e se
torna coordenador
– Se um processo com um número maior
responde, ele assume o processo de eleição
Sistemas Distribuídos
4
Algoritmos para Eleição
Algoritmo Bully
• Esse procedimento termina com um
processo vencedor, o qual avisa a todos
os outros que ele é o novo coordenador
• Se o processo que era coordenador e
havia falhado retornar, ele inicia uma nova
eleição.
– Se acontecer de seu número ser maior, ele
irá vencer a eleição e retornará a ser o
coordenador
Sistemas Distribuídos
5
Algoritmos para Eleição
Algoritmo Bully
2
0
7
Election
4
1
5
Sistemas Distribuídos
6
3
6
Algoritmos para Eleição
Algoritmo Bully
2
0
7
6
4
1
5
Sistemas Distribuídos
3
7
Algoritmos para Eleição
Algoritmo Bully
2
0
7
6
4
1
5
Sistemas Distribuídos
3
8
Algoritmos para Eleição
Algoritmo Bully
2
0
7
6
4
1
5
Sistemas Distribuídos
3
9
Algoritmos para Eleição
Algoritmo Bully
2
0
7
6
4
1
5
Sistemas Distribuídos
3
10
Algoritmos para Eleição
Algoritmo em Anel
• Algoritmo baseado na utilização de anel, porém
sem token
• É assumido que os processos estão fisicamente
ou logicamente ordenados, isto é, cada processo
sabe quem é o seu sucessor
• Quando um processo percebe que o coordenador
não está funcionando, ele constrói uma
mensagem ELECTION contendo seu número e
envia essa mensagem para o seu sucessor
• Se o sucessor estiver desativado, o emissor salta
para o próximo sucessor
Sistemas Distribuídos
11
Algoritmos para Eleição
Algoritmo em Anel
• A cada passo o emissor adiciona o número
dos processos na lista de mensagem
• Quando a mensagem dá a volta no anel e
retorna ao processo que iniciou a eleição, o
novo coordenador é determinado (o processo
com mais alto número na lista) e esta
mensagem é retirada do anel
• Uma nova mensagem denominada
COORDINATOR é gerada informando quem
é o novo coordenador
Sistemas Distribuídos
12
Algoritmos para Eleição
Algoritmo em Anel
6
5
7
0
4
3
2
2
Sistemas Distribuídos
1
13
Algoritmos para Eleição
Algoritmo em Anel
6
5
7
0
4
2, 3
3
2
2
Sistemas Distribuídos
1
14
Algoritmos para Eleição
Algoritmo em Anel
6
5
7
2, 3, 4
0
4
2, 3
3
2
2
Sistemas Distribuídos
1
15
Algoritmos para Eleição
Algoritmo em Anel
6
5
7
2, 3, 4, 5
2, 3, 4
0
4
2, 3
3
2
2
Sistemas Distribuídos
1
16
Algoritmos para Eleição
Algoritmo em Anel
6
5
7
2, 3, 4, 5
2, 3, 4
Não
responde
0
4
2, 3
3
2
2
Sistemas Distribuídos
1
17
Algoritmos para Eleição
Algoritmo em Anel
6
5
7
2, 3, 4, 5
2, 3, 4
2, 3, 4, 5, 6
0
4
2, 3
3
2
2
Sistemas Distribuídos
1
18
Algoritmos para Eleição
Algoritmo em Anel
6
5
7
2, 3, 4, 5
2, 3, 4
2, 3, 4, 5, 6
0
4
2, 3, 4, 5, 6, 0
2, 3
3
2
2
Sistemas Distribuídos
1
19
Algoritmos para Eleição
Algoritmo em Anel
6
5
7
2, 3, 4, 5
2, 3, 4
2, 3, 4, 5, 6
0
4
2, 3, 4, 5, 6, 0
2, 3
3
2, 3, 4, 5, 6, 0, 1
2
2
Sistemas Distribuídos
1
20
Algoritmos para Eleição
Algoritmo em Anel
6
5
7
6
6
6
0
4
6
6
3
6
2
6
Sistemas Distribuídos
1
21
Deadlock
• Um conjunto de processos está em
deadlock se cada processo do conjunto
está aguardando por um evento que
somente um outro processo do mesmo
conjunto pode causar
Sistemas Distribuídos
22
Deadlock
• Exemplo:
– dois processos querendo imprimir um arquivo
grande armazenado num DVD
– O processo A requisita permissão para utilizar a
impressora e recebe autorização
– O processo B, em seguida, requisita utilizar o
DVD e também consegue permissão
– O processo A pede para utilizar o DVD mas a
requisição é negada até que B libere
– O processo B pede para utilizar a impressora
mas a requisição é negada até que A libere
Sistemas Distribuídos
23
Deadlock
• Recursos
– Um recurso é qualquer dispositivo de hardware ou
informação que pode ser utilizado por somente um
único processo em um determinado instante de
tempo
– Podem ser:
• Preemptivos
– Podem ser retirados dos processos sem prejuízos
– Exemplo: memória
• Não-preemptivos
– Não pode ser retirado do processo sem causar falhas no
processamento
• Normalmente, tem-se deadlocks com recursos
não-preemptíveis.
Sistemas Distribuídos
24
Deadlocks
Condições de ocorrência
• Exclusão mútua
– Cada recurso só pode estar associado a um
processo em um determinado instante
• Posse e espera
– Processo de posse de recursos podem
requisitar por novos recursos
Sistemas Distribuídos
25
Deadlocks
Condições de ocorrência
• Não-preempção
– Recursos previamente garantidos não podem
ser retirados de um processo
• Espera circular
– Deve existir uma cadeia circular de 2 ou mais
processos, cada um aguardando por recursos
que estão alocados para membros de cada
cadeia
Sistemas Distribuídos
26
Deadlocks
Abordagens para tratamento
•
•
•
•
•
Algoritmo do Avestruz
Prevenção de deadlock
Impedimento de deadlock
Detecção de deadlock
Recuperação de deadlock
Sistemas Distribuídos
27
Deadlocks
Abordagens para tratamento
• O algoritmo do Avestruz é uma boa
abordagem para a maioria dos sistemas
gerais, tais como automação de
escritórios, controle de processos, etc.
• A detecção e recuperação também são
abordagens bastante utilizadas,
principalmente porque prevenir e evitar
são abordagens mais complexas
Sistemas Distribuídos
28
Deadlocks
Abordagens para tratamento
• A prevenção também é possível, embora
mais complexa do que as formas de
prevenção utilizadas em sistemas com um
único processador
• As abordagens de impedimento, em
geral, não são utilizadas em sist.
distribuídos, principalmente porque é
muito difícil saber quais recursos que cada
processo irá eventualmente precisar
Sistemas Distribuídos
29
Download

Sistemas Distribuídos Aula 09 – Sincronismo e Deadlock