Академический Документы
Профессиональный Документы
Культура Документы
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
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
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
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
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