Ir para o conteúdo principal

O que é um Deadlock?

O que é um impasse (deadlock)?

Um deadlock ocorre quando dois ou mais processos estão aguardando um ao outro para liberar os recursos de que precisam para continuar. Isso resulta em uma situação em que nenhum dos processos pode prosseguir e eles acabam esperando indefinidamente.

Condições de Coffman

As condições de Coffman, em homenagem a Edward G. Coffman Jr., que as descreveu pela primeira vez em 1971, descrevem quatro condições necessárias que devem estar presentes para que ocorra um impasse:

  • Exclusão mútua: os recursos não podem ser compartilhados simultaneamente.
  • Hold and Wait: Os processos retêm recursos enquanto aguardam outros.
  • Sem preempção: os recursos não podem ser retirados à força.
  • Espera circular: Uma cadeia circular de processos, cada um esperando por um recurso mantido pelo próximo.

Prevenção de deadlock

  • Ordenação de recursos: exija que os processos solicitem recursos em uma ordem específica.
  • Tempos limite: defina limites de tempo para o uso de recursos para evitar retenções indefinidas.
  • Algoritmo do banqueiro: Um método que verifica se a concessão de uma solicitação de recurso levaria a um estado seguro.

Recuperação de deadlock

  • Selecionando uma vítima: escolha um ou mais processos para encerrar ou reverter.
  • Reversão: Desfaça as ações do(s) processo(s) selecionado(s) para liberar recursos.

image.png

Origem: Linkedin: Sahn Lam - Coauthor of the Bestselling 'System Design Interview' Series | Cofounder at ByteByteGo