Deadlock ou Impasses
“Um conjunto de processos está em estado de deadlock quando todos os processos no conjunto estão esperando por um evento que só pode ser causado por outro processo do conjunto.”
A idéia de impasse ou deadlock pode ser mais facilmente entendida se fizermos uma analogia com uma escada de um prédio utilizada para casos de incêndio. Apesar de ter sido construída como uma opção de fuga em caso de incêndio, as pessoas que trabalham no prédio muitas vezes preferem utilizar a escada ao invés dos elevadores. No entanto, há espaço apenas para uma pessoa em cada degrau. Logo, o tráfego pela escada vai bem até que 2 pessoas se cruzam. Por outro lado, existe uma plataforma em cada um dos andares que suporta várias pessoas. Os problemas acontecem no momento em que uma pessoa que está subindo a escada encontra outra que está descendo e ambas se recusam a retroceder até a plataforma. Esta situação permanecerá gerando um impasse ou deadlock Um deadlock acontece quando duas ou mais tarefas bloqueiam uma à outra permanentemente, sendo que cada uma tem o bloqueio de um recurso, que a outra tarefa está tentando bloquear. Por exemplo:
• A transação A adquire um bloqueio compartilhado da linha 1.
• A transação B adquire um bloqueio compartilhado da linha 2.
• A transação A agora solicita um bloqueio exclusivo na linha 2 e é bloqueado até que a transação B termine e libere o bloqueio compartilhado que tem na linha 2.
• A transação B agora solicita um bloqueio exclusivo na linha 1 e é bloqueado até que a