Deadlock em Sistemas Distribuídos
Gabarito: letra D. Apenas as assertivas I e III estão corretas. A assertiva I descreve corretamente a condição de exclusão mútua, uma das quatro condições necessárias para deadlock. A assertiva II está errada, pois existem outras formas de resolver deadlock, como prevenção, avoidance, detecção e recuperação (que pode incluir preempção de recursos, rollback, etc.), não sendo a morte de processos a única maneira. A assertiva III define corretamente o problema de starvation (inanição), que é relacionado, mas distinto do deadlock.
Item I — ✅ Correto
A exclusão mútua é uma das quatro condições de Coffman para deadlock: "cada recurso pode ser alocado a no máximo um processo ou está disponível". A descrição está correta.
Item II — ❌ Incorreto
A afirmação de que "a única forma de resolver um deadlock é matando os processos envolvidos" é falsa. Há diversas abordagens:
Prevenção: garantir que ao menos uma condição nunca ocorra.
Avoidance: escalonar recursos de forma segura (ex.: algoritmo do banqueiro).
Detecção e recuperação: identificar o deadlock e então agir (matar processos, preemptar recursos, rollback, etc.).
Portanto, matar processos é uma opção, mas não a única.
Item III — ✅ Correto
Starvation (inanição) ocorre quando um processo nunca recebe o recurso necessário devido a políticas de escalonamento que favorecem outros processos. É um problema relacionado ao deadlock, mas distinto. A definição do enunciado está precisa.
Conclusão: Corretos apenas os itens I e III, sendo o gabarito a letra D.