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:
- Exclusão mútua — um recurso pode ser tomado por apenas um processo de cada vez.
- Retenção e espera — um processo mantém um recurso e espera por outro.
- Impossibilidade de liberação forçada — um recurso não pode ser retirado de um processo até que este o libere voluntariamente.
- 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.