Deadlock e Terminação: Considere as afirmações abaixo e selecione a alternativa correta. I. Coleta de lixo distribuída: um objeto é considerado lixo se não houver mais quaisquer funções específicas que ele possa desempenhar. II. Detecção de deadlock distribuída: um deadlock distribuído ocorre quando um processo "A" aguarda até que outro processo envie uma mensagem comunicando que foi finalizado, e em que há um relacionamento de "espera" até que a conclusão do processo que está interagindo com o processo "A". III. Detecção de terminação distribuída: o problema aqui é como detectar que um algoritmo foi finalizado.
Considere as afirmações abaixo e selecione a alternativa correta.
I. Coleta de lixo distribuída: um objeto é considerado lixo se não houver mais quaisquer funções específicas que ele possa desempenhar.
II. Detecção de deadlock distribuída: um deadlock distribuído ocorre quando um processo "A" aguarda até que outro processo envie uma mensagem comunicando que foi finalizado, e em que há um relacionamento de "espera" até que a conclusão do processo que está interagindo com o processo "A".
III. Detecção de terminação distribuída: o problema aqui é como detectar que um algoritmo foi finalizado.
a) Somente as afirmações I e II são corretas.
b) Somente as afirmações II e III são corretas.
c) Somente as afirmações I e III são corretas.
d) Todas as afirmações são incorretas.
e) Todas as afirmações são corretas.
Vamos analisar cada afirmação.
I. Coleta de lixo distribuída Em coleta de lixo (inclusive no contexto distribuído), a ideia central é identificar objetos inatingíveis (não mais referenciados/alcansáveis a partir de um conjunto de raízes), ou seja, objetos que não podem mais ser usados por nenhum processo/parte do sistema. A frase “não houver mais quaisquer funções específicas que ele possa desempenhar” é uma forma informal de dizer que o objeto não tem mais utilidade/uso (não será mais acessado). Apesar de não ser a definição técnica mais precisa (que é baseada em alcance/referência), ela está conceitualmente alinhada ao que caracteriza “lixo”: algo que não será mais utilizado. Logo, I é correta no sentido conceitual.
II. Detecção de deadlock distribuída Deadlock distribuído é caracterizado por um ciclo de espera (wait-for) envolvendo processos (e/ou recursos) em diferentes nós: cada processo no ciclo espera por um evento/condição que somente outro processo do ciclo pode causar, e assim nenhum progride. A afirmação II descreve um caso específico (“A espera mensagem dizendo que outro finalizou”), mas não define adequadamente deadlock e mistura a noção de “esperar término” com “relacionamento de espera” de forma imprecisa. Deadlock não é, por definição, “esperar mensagem de finalização”; é a existência de dependências circulares de espera. Portanto, II é incorreta.
III. Detecção de terminação distribuída O problema de detecção de terminação distribuída é justamente determinar, em um sistema distribuído, quando um algoritmo computacional terminou globalmente (por exemplo, todos os processos estão passivos e não há mensagens em trânsito, dependendo do modelo). A afirmação diz: “o problema aqui é como detectar que um algoritmo foi finalizado”, o que corresponde ao enunciado do problema. Logo, III é correta.
Conclusão: corretas I e III בלבד.
Alternativa correta: (c).