Sistemas Operacionais
Aula 9: Deadlocks
Deadlocks
Propriedade (indesejável) de um conjunto de processos que estão bloqueados indefinidamente esperando uns pelos outros.
Deadlock
Outro exemplo:
P1() {
lock(A);
lock(B);
mutex();
unlock(B);
unlock(A);
}
P2() {
lock(B);
lock(A);
mutex();
unlock(A);
unlock(B);
}
Condições para Deadlock
Condições necessárias (mas não suficientes):
Grafo de Dependências
Grafo direcionado que representa as dependências entre os processos no sistema:
Deadlocks existem se e somente se existem ciclos no grafo de dependências.
Métodos de Tratamento
Qual o método é mais usado ?
Fingir que o problema não existe! Usado pela maioria dos sistemas, inclusive Unix.
Prevenção de Deadlock
Uma maneira de evitar deadlocks é impedir que ao menos uma das condições para sua existência ocorra:
Prevenção de Deadlock
Algoritmo do Banqueiro
Usado para determinar se um processo pode executar de maneira segura ou não:
Recursos requisitados =
Detecção de Deadlock
Difícil: por isto muitos preferem ignorar o problema.
Por causa disto deve-se chamar o algoritmo de detecção de dealocks infrequentemente:
Recuperação de Deadlock
Manual: manda o operador ``se virar''.
Automática: aborta-se processos
Automática: tomar o recurso de volta do processo:
Last Modified: 07:00pm , March 26, 1998