Deadlocks
• Deadlocks ocorrem quando …
– garante-se aos processos acesso exclusivo aos dispositivos – esses dispositivos são normalmente chamados de recursos • Recursos preemptíveis
– podem ser retirados de um processo sem quaisquer efeitos prejudiciais
• Recursos não preemptíveis
– vão induzir o processo a falhar se forem retirados
Recursos (2)
• Seqüência de eventos necessários ao uso de um recurso
1. solicitar o recurso
2. usar o recurso
3. liberar o recurso
• Deve esperar se solicitação é negada
– processo solicitante pode ser bloqueado
– pode falhar resultando em um código de erro
Introdução aos Deadlocks
• Definição formal:
Um conjunto de processos está em situação de deadlock se todo processo pertencente ao conjunto estiver esperando por um evento que somente um outro processo desse mesmo conjunto poderá fazer acontecer
• Normalmente o evento é a liberação de um recurso atualmente retido
• Nenhum dos processos pode...
– executar
– liberar recursos
– ser acordado
Quatro Condições para Deadlock
1. Condição de exclusão mútua
• todo recurso está ou associado a um processo ou disponível 2. Condição de posse e espera
• processos que retêm recursos podem solicitar novos recursos 3. Condição de não preempção
• recursos concedidos previamente não podem ser forçosamente tomados
4. Condição de espera circular
• deve ser uma cadeia circular de 2 ou mais processos
• cada um está à espera de recurso retido pelo membro seguinte dessa cadeia
Modelagem de Deadlock (3)
Estratégias para tratar Deadlocks
1. ignorar por completo o problema
2. detecção e recuperação
3. evitação dinâmica
• alocação cuidadosa de recursos
4. prevenção
• negação de uma das quatro condições necessárias Algoritmo do Avestruz
• Finge que o problema não existe
• Razoável se
– deadlocks ocorrem muito raramente
– custo da prevenção é alto
• UNIX e Windows seguem esta abordagem • É uma ponderação entre
– conveniência
–