Sobes.tech
Junior — Middle

O que é um deadlock de recursos e em que situações ele ocorre nos sistemas?

sobes.tech IA

Resposta da IA

O deadlock (interbloqueio) é uma situação em sistemas multitarefa em que dois ou mais processos (ou threads) bloqueiam-se mutuamente para sempre, esperando liberar recursos ocupados pelo outro.

Acontece quando todas as quatro condições são atendidas simultaneamente:

  1. Exclusão mútua — um recurso pode ser tomado por apenas um processo de cada vez.
  2. Retenção e espera — um processo mantém um recurso e espera por outro.
  3. Impossibilidade de liberação forçada — um recurso não pode ser retirado de um processo até que este o libere voluntariamente.
  4. Espera cíclica — existe um ciclo de processos, cada um esperando por um recurso que está sendo usado pelo próximo no ciclo.

Exemplo: o processo A tomou o recurso 1 e espera pelo recurso 2, enquanto o processo B tomou o recurso 2 e espera pelo recurso 1 — ambos estão bloqueados para sempre.

Em iOS e outros sistemas, deadlocks frequentemente ocorrem devido ao uso incorreto de sincronização, por exemplo, ao adquirir múltiplos bloqueios em ordens diferentes.

Para evitar deadlocks, usam-se:

  • ordenação na aquisição de recursos;
  • tempos limite de espera;
  • evitar manter recursos enquanto espera por outros;
  • uso de mecanismos de sincronização especializados.