Sistemas operacionais i
Deadlock:
Um deadlock ocorre quando um processo está esperando alguma evento que nunca ocorrerá. Isto se da por conseqüência do compartilhamento de recursos do sistema entre vários processos, cada processo deve ter acesso a um recurso de forma exclusiva.
Ex. o Processo A possui o Recurso 2, este mesmo processo solicita um outro recurso (Recurso 2) que foi atribuído ao Processo B e este solicita o Recurso 2 que é do Processo 1. O recurso fica atribuído ao processo até que ele acabe, formando assim uma espera circular.
Condições para que ocorra um deadlock:
· Cada recurso seja alocada a um único processo em um determinado instante;
· O processo (que já possui um recurso locado) deve estar esperando por outros recursos;
· O recurso não pode ser liberado do processo;
· Um processo pode ter que esperar um recurso alocado a um outro processo (espera circular).
Prevenção de um deadlock
· Ausência de exclusão múltipla (nenhum processo terá que esperar para ter acesso a um recurso;
· Evitar que processos que já possuam recursos garantidos solicitem um outro recurso(todos os recursos necessários são requisitados antes de começar a execução);
- desperdício de recursos do sistema;
- dificuldade para prever todos os recursos a serem solicitados;
- pode ocorrer starvation(todos os recursos necessários jamais estejam disponíveis no mesmo tempo.
· Permitir que recursos sejam retirados do processo, caso outro processo esteja solicitando;
- o processo pode perder todo o processamento;
- starvation (o processo garante os recursos necessários para a execução e o sistema libera em seguida.
· Excluir a possibilidade de espera circular(forçar o processo a ter apenas um recurso por vez e quando solicitar outro deve liberar o primeiro).
Detecção do deadlock
A detecção do deadlock permite identificar quais os processos e recursos envolvidos no problema.
O sistema deve manter estruturas de dados capazes de identificar cada recurso do