Вы находитесь на странице: 1из 49

Sistemas Distribuídos –

Deadlock
Profa. Dra. Renata Spolon Lobato
renata@ibilce.unesp.br

1
•  Bibliografia básica
–  Tanenbaum
–  Coulouris
–  Kshemkalyani, A. D., Singhal, M. Distributed Computing – Principles,
Algorithms, and Systems. Cambridge University Press, 2008
–  Ahmed K. Elmagarmid .A SURVEY OF DISTRIBUTED DEADLOCK
DETECTION ALGORITHMS, SIGMOD RECORD, Vol. 15, No. 3,
September 1986
–  Deadlock Detection in Distributed Databases. EDGAR KNAPP, ACM
Computing Surveys, Vol. 19, No. 4, December 1987

2
Deadlock em Sistemas
Distribuídos
•  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

3
Deadlock em Sistemas
Distribuídos
•  Exemplo
–  Dois processos que querem imprimir um arquivo
gravado em um DVD
•  O processo A requisita a impressora e recebe
permissão para usá-la
•  O processo B requisita o DVD e recebe permissão
para usá-lo
•  O processo A pede o DVD, mas sua requisição é
negada até que B libere o recurso
•  O Processo B pede para usar a impressora, mas a sua
requisição é negada, até que A a libere

4
Deadlock em Sistemas
Distribuídos
•  Recurso
–  Um recurso é qualquer dispositivo de hardware ou
informação que pode ser utilizado por somente um único
processo em um determinado instante de tempo
–  Recursos podem ser
•  Preemptivos
–  Podem ser retirados dos processo sem prejuízo
–  Exemplo: memória
•  Não preemptivos
–  Não pode ser retirado do processo sem provocar falhas no
processamento

5
Deadlock em Sistemas
Distribuídos
•  Condições para que o deadlock
aconteça
–  Exclusão mútua
•  Cada recurso só pode estar associado a um
processo em um determinado instante
–  Posse e espera
•  Processo que tem a posse de um recurso
pode solicitar a posse de outro recurso

6
Deadlock em Sistemas
Distribuídos
•  Condições para que o deadlock aconteça
–  Não-preempção
•  Recursos que já são posse de um processo não podem
ser retirados
–  Espera circular
•  Deve existir uma cadeia circular de 2 ou mais
processos, sendo que cada um aguarda por recursos
que estão alocados para membros de uma cadeia

7
Deadlock em Sistemas
Distribuídos
•  Abordagens para o tratamento de
deadlocks
–  Algoritmo do avestruz
–  Prevenção
–  Impedimento
–  Detecção e Recuperação

8
Deadlock em Sistemas
Distribuídos
•  Todas as estratégias para se lidar com deadlocks
em sistemas monoprocessados podem ser usadas
em sistemas distribuídos
•  Algoritmo do avestruz
–  Abordagem para sistemas em geral (automação de
escritório, controle de processos, etc)
–  Tais sistemas não possuem mecanismos para tratamento
de deadlock
–  Porém, aplicações individuais, como por exemplo um banco
de dados distribuído, podem implementar seu próprio
mecanismo

9
Deadlock em Sistemas
Distribuídos
•  A prevenção é obtida ou fazendo-se com que um
processo tenha todos os recursos necessários
ANTES de executar ou através de preempção de
um processo que tem a posse do recurso
necessário

•  Faz com que o deadlock não aconteça

•  Ineficiente em SD, não recomendável

•  Projetar o sistema de tal maneira que os


deadlocks sejam impossíveis

10
Deadlock em Sistemas
Distribuídos
•  Detecção e recuperação são abordagens
bastante utilizadas, principalmente porque
prevenir e evitar são abordagens mais complexas
•  Permite que o deadlock ocorra, detecta e tenta
recuperar
•  Detecção exige um exame do grafo para verificar
a presença de um ciclo
•  A detecção parece ser a melhor técnica para
manipular deadlocks em sistemas distribuídos

11
Deadlock em Sistemas
Distribuídos
•  Na abordagem impedimento, um recurso é
atribuído para um processo SE o estado
global resultante do sistema é seguro
•  Ou seja, evita deadlock alocando recursos
cuidadosamente
•  Impraticável em sistemas distribuídos pois
precisa de conhecimento prévio sobre o
comportamento dos processos

12
Deadlock em Sistemas
Distribuídos
•  Métodos para prevenir deadlocks
–  Garantir que ao menos uma das 4
condições não seja satisfeita
–  Métodos
•  Collective requests
•  Ordered requests
•  Preempção

13
Deadlock em Sistemas
Distribuídos
•  Métodos para prevenir deadlocks
–  Collective requests
•  Evita que a condição de posse e espera possa
acontecer
•  Políticas
–  Requisitar todos os recursos necessários antes de
executar; se não tiver todos, espera
–  Um processo pode requisitar recursos durante
sua execução se também liberar recursos
•  Processo pode ter vários recursos mas não
utilizá-los por um período de tempo

14
Deadlock em Sistemas
Distribuídos
•  Métodos para prevenir deadlocks
–  Preempção
•  Recurso pode sofrer preempção
–  O seu estado é salvo e depois pode ser
restaurado (UCP, memória)
•  Se um processo requisita um recurso que
está de posse de um processo bloqueado,
ocorre preempção e o recurso é passado
para o primeiro processo

15
Deadlock em Sistemas
Distribuídos
•  Métodos para prevenir deadlocks
–  Ordered requests
•  Evita que aconteça espera circular
•  Associa um número a cada recurso
•  Os processos só podem alocar os recursos
em uma ordem determinada

16
Deadlock em Sistemas
Distribuídos
•  Detecção
–  Quando acontece um deadlock em um SO
convencional, resolve-se o problema encerrando
um ou mais processos envolvidos
–  Quando é detectado um deadlock em um
sistema baseado em transações atômicas, ele é
resolvido abortando uma ou mais transações

17
Deadlock em Sistemas
Distribuídos
•  Detecção
–  Quando uma transação é abortada porque ela
contribuiu para um deadlock, o sistema é
restaurado para o estado em que estava antes
da transação iniciar (rollback)
–  A transação pode então recomeçar e pode ter
sucesso na segunda vez
–  A diferença é que as conseqüências de abortar
um processo em sistemas que usam transações
atômicas são menos severas do que em sistemas
que não as utilizam
18
Deadlock em Sistemas
Distribuídos
•  Detecção
–  Não evita nem previne, deixa que aconteça e
depois detecta para corrigir
–  Algoritmo examina estado do sistema para
detectar deadlock
–  Se sim, corrige
–  Técnica equivalente ao sistema centralizado
–  Mantém informação sobre alocação de recursos
– grafo de alocação de recursos – e procura
ciclos nesse grafo – grafo Wait For (WFG)

19
Deadlock em Sistemas
Distribuídos
•  Detecção centralizada
–  Cada máquina possui um grafo de alocação de
recursos para os seus processos e recursos, e
um coordenador central mantém um grafo de
recursos para as entradas no sistema, que é a
união de todos os grafos individuais
–  Quando o coordenador detecta um deadlock,
ele mata um dos processos

20
21
•  Exemplo de um grafo wait-for

22
Deadlock em Sistemas
Distribuídos
•  Detecção centralizada
–  Ao contrário do sistema centralizado, no qual
todas as informações estão automaticamente
disponíveis em um mesmo local, em um sistema
distribuído estas informações devem ser
enviadas explicitamente
–  Cada máquina mantém o grafo para os seus
processos e recursos e diversas possibilidades
podem ser implementadas objetivando a
atualização do grafo centralizado

23
Deadlock em Sistemas
Distribuídos
•  Detecção centralizada
–  Primeira
•  Sempre que um arco é adicionado ou removido do
grafo de alocação de recursos, uma mensagem pode
ser enviada para o coordenador providenciar a
atualização

24
Deadlock em Sistemas
Distribuídos
•  Detecção centralizada
–  Segunda
•  Periodicamente, todo processo pode enviar uma lista
de arcos adicionados ou removidos desde a última
atualização
•  Menos mensagens que a primeira abordagem

25
Deadlock em Sistemas
Distribuídos
•  Detecção centralizada
–  Terceira
•  O coordenador pede informação quando ele precisar

26
Deadlock em Sistemas
Distribuídos
•  Detecção centralizada
–  Porém, nenhuma das três abordagens tem bons
resultados
–  Exemplo
•  Sistema com os processos A e B executando na
máquina 0 e o processo C executando na máquina 1
•  Três recursos R, S e T

27
Deadlock em Sistemas
Distribuídos
•  Detecção centralizada
–  Porém, nenhuma das três abordagens tem bons
resultados
–  Exemplo
•  Sistema com os processos A e B executando na
máquina 0 e o processo C executando na máquina 1
•  Três recursos R, S e T

28
Deadlock em Sistemas
Distribuídos
•  Detecção centralizada
–  Inicialmente
•  O processo A tem o recurso S e deseja R
•  O processo B tem o recurso R
•  O processo C tem o curso T e deseja S

29
Deadlock em Sistemas
Distribuídos
•  Detecção centralizada
–  Execução segura, pois não existe ciclo
•  Quando B encerrar, o processo A obtém R e pode terminar sua
execução, liberando o recurso S para o processo C
–  Após um tempo B libera R e requisita T, uma operação
perfeitamente segura

30
Deadlock em Sistemas
Distribuídos
•  Detecção centralizada
–  A máquina 0 envia uma mensagem para o coordenador,
anunciando a liberação de R, e a máquina 1 envia uma
mensagem para o coordenador anunciando que B está
esperando pelo recurso T

31
Deadlock em Sistemas
Distribuídos
•  Detecção centralizada
–  Porém, a mensagem da máquina 1 chega primeiro, levando
o coordenador a construir o grafo abaixo, levando a um
falso deadlock

32
Deadlock em Sistemas
Distribuídos
•  Detecção centralizada
–  Solução para este problema: usar o algoritmo
de Lamport para criar um relógio global
•  Uma vez que a mensagem da máquina 1 foi disparada
por uma mensagem da máquina 0 (a requisição de T
por B), a mensagem da máquina 1 possuirá um
timestamp maior do que o timestamp da máquina 0
para o coordenador

33
Deadlock em Sistemas
Distribuídos
•  Detecção centralizada
–  Quando o coordenador recebe a mensagem da
máquina 1 que sinaliza um deadlock suspeito, ele
pode enviar uma mensagem para todas as
máquinas do sistema, informando que recebeu
uma mensagem com timestamp T que sinaliza
um deadlock, se alguém possuir uma mensagem
para mim com timestamp menor, favor enviar
imediatamente

34
Deadlock em Sistemas
Distribuídos
•  Detecção centralizada
–  Quando todas as máquinas responderem (sim ou
não) o coordenador irá verificar que a aresta
de R para B foi removida, e concluirá que o
estado do sistema ainda é seguro
Coordenador

A S C

R T

B
35
Deadlock em Sistemas
Distribuídos
•  Detecção centralizada – comentários
–  Depende de um único servidor, ou seja, sofre dos
problemas comuns associados às soluções centralizadas
em sistemas distribuídos
•  Disponibilidade deficiente
•  Falta de tolerância a faltas
•  Nenhuma escalabilidade
–  Além disso, o custo da transmissão frequente dos grafos
WFG locais é alto
–  Se o grafo global for montado com menos freqüência, os
deadlocks poderão demorar para serem detectados

36
Deadlock em Sistemas
Distribuídos
•  Detecção distribuída
–  Chandy-Misra-Hass
–  Nesse algoritmo, os processos estão
autorizados a solicitar vários recursos de uma
vez, ao invés de um
–  Com essa alteração, os processos podem
aguardar por dois ou mais recursos
simultaneamente

37
Deadlock em Sistemas
Distribuídos
•  Detecção distribuída
–  Modificação no grafo, onde somente os
processos são apresentados
•  Cada arco passa por um ou mais recursos, mas para
simplificar a notação esse recurso foi omitido
•  O processo D está esperado por 2 recursos, um de
posse do processo E e outro de posse do processo f
•  Alguns processos estão aguardando por recursos
locais (processo B, máquina 0) enquanto outros estão
aguardando por recursos alocados em outras máquinas
(processo C, máquina 0)

38
Deadlock em Sistemas
Distribuídos
•  Detecção distribuída

Máquina 0 Máquina 1 Máquina 2

E G I
A B C D
F H

39
Deadlock em Sistemas
Distribuídos
•  Detecção distribuída
–  O algoritmo de Chandy-Misra-Hass é invocado
quando um processo deve aguardar por algum
recurso
–  Uma mensagem de investigação é gerada e
enviada para o processo (ou processos) que
mantêm os recursos necessários

40
Deadlock em Sistemas
Distribuídos
•  Detecção distribuída
–  A mensagem consiste de 3 números
•  O processo que está bloqueado
•  O processo que está enviando a mensagem
•  O processo para quem a mensagem se destina
–  A mensagem inicial do processo A para o
processo B contém a tupla (A,A,B)

41
Deadlock em Sistemas
Distribuídos
•  Detecção distribuída

Máquina 0 Máquina 1 Máquina 2


P(A, A, B) E G I
A B C D
F H

42
Deadlock em Sistemas
Distribuídos
•  Detecção distribuída
–  Quando uma mensagem chega, o receptor
verifica se está aguardando por algum recurso
–  Se estiver, a mensagem é atualizada,
mantendo-se o primeiro campo, mas alterando o
segundo para o número do processo receptor e
o terceiro para o número do processo que o
processo receptor está aguardando
Máquina 0 Máquina 1 Máquina 2
P(A, B, C) E G I
A B C D
F H 43
Deadlock em Sistemas
Distribuídos
•  Detecção distribuída
–  Quando uma mensagem chega, o receptor
verifica se está aguardando por algum recurso
–  Se estiver, a mensagem é atualizada,
mantendo-se o primeiro campo, mas alterando o
segundo para o número do processo receptor e
o terceiro para o número do processo que o
processo receptor está aguardando
Máquina 0 Máquina 1 Máquina 2
P(A, C, D) E G I
A B C D
F H 44
Deadlock em Sistemas
Distribuídos
•  Detecção distribuída
–  Quando uma mensagem chega, o receptor
verifica se está aguardando por algum recurso
–  Se estiver, a mensagem é atualizada,
mantendo-se o primeiro campo, mas alterando o
segundo para o número do processo receptor e
o terceiro para o número do processo que o
processo receptor está aguardando
Máquina 0 Máquina 1 Máquina 2 P(?, ?, ?)
(A, E, G)
E G I
A B C D (A, F, H)
F H 45
Deadlock em Sistemas
Distribuídos
•  Detecção distribuída
–  Quando uma mensagem chega, o receptor verifica se
está aguardando por algum recurso
–  Se estiver, a mensagem é atualizada, mantendo-se o
primeiro campo, mas alterando o segundo para o número
do processo receptor e o terceiro para o número do
processo que o processo receptor está aguardando
–  Se voltar, deadlock

Máquina 0 Máquina 1 Máquina 2


(A, E, G)
E G I
A B C D (A, F, H)
F H
46

P(A, I, A)
Deadlock em Sistemas
Distribuídos
•  Detecção distribuída
–  Se o processo aguarda vários recursos, ele
envia mensagens para cada um dos processos
que detém os recursos desejados
–  Se a mensagem retornar ao processo que iniciou
o procedimento, o ciclo estará detectado e,
consequentemente, o deadlock

47
Deadlock em Sistemas
Distribuídos
•  Detecção distribuída
–  Várias formas de quebrar o deadlock
•  O processo que iniciou a detecção comete suicídio
–  Problema: vários processos iniciarem a investigação ao mesmo
tempo, e todos cometerem o suicídio, quando não seria
necessário
•  Acrescentar a sua identidade na mensagem de
investigação e depois verificar qual possui a maior
identificação e matá-lo

48
Deadlock em Sistemas
Distribuídos
•  Detecção centralizada x detecção distribuída
–  Centralizada: o coordenador é o gargalo; e se ele falhar? Usar eleição
de líder

49

Вам также может понравиться