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