Deadlock
Deadlock
Deadlocks
Recursos: hardware ou informação
Preemptivo X não preemptivo
Uso do Recurso:
Uso
Pedido (Request ou Open)
Liberação
“Um conjunto de processos está em deadlock se cada processo no conjunto está esperando por um evento que somente um outro processo do conjunto pode causar.” Deadlocks
As seguintes condições podem levar a ocorrência de deadlock
Exclusão Mútua
Obtenção e Espera
Somente um processo usa um recurso de cada vez
Um processo aloca recursos enquanto espera por outros recursos Não preempção
Recursos não sofrem preempção
Deadlocks
As condições acima são necessárias mas não suficientes
Cadeia fechada recurso+processo
Deadlocks
Modelo - Grafo
Processos são círculos e recursos são quadrados.
O recurso R está alocado ao processo A:
arco de R para A
A
R
O processo A pede o recurso R
A
R
Deadlocks
Uma cadeia circular – não é um exemplo simples
1.
A pede R
2.
B pede S
3.
C pede T
4.
A pede S
5.
B pede T
6.
C pede R
deadlock
A
B
C
R
S
T
Deadlocks – Detecção e Recuperação
Prevenção de deadlocks pode ser conservativo
Não prover recursos para evitar deadlocks
Detecção de deadlock
SO executa algoritmos para detectar e prover recursos quando possível
Detectar a cadeia circular
Evitando Deadlocks
O que fazer?
•
Restrições aos processos ou pedidos de recursos para evitar uma das quatro condições
Evitar dinamicamente: as três condições podem acontecer, mas a quarta é evitada através de decisões dinâmicas. Duas alternativas são possíveis:
Não começar um processo se levar a deadlock
Não garantir a alocação de recurso se leva a deadlock Detecção e Recuperação
Detecção de Deadlocks
Recursos são