Questão nº 55
Questão de Sistemas Operacionais · FCC TRE-PR 2017 (nº 55)
Consider the figure below showing a hypothetical situation.

A criminal holds an hostage and against that, a cop (policeman) also holds an hostage who is a friend of the criminal. In this case, criminal is not going to let the hostage go if cop won't let his friend to let go. Also the cop is not going to let the friend of criminal let go, unless the criminal releases the hostage.
Analysing the situation from an Operational System´s point of view, a correct conclusion is
- Aa starvation occurs when multiple processes try to access the same resource at the same time.
- Bwhen two threads need two different resources and each of them has the lock of the resource that the other need, it is a deadlock. (alternativa correta)
- Ca lock occurs when one thread is still holding on to another resource that the second thread wants after it finishes.
- Da starvation occurs when the waiting process is no more still holding on to another resource that the first needs before it can finish.
- Edeadlocks will only occur when two or more threads can be acquired in different times and they are grabbing no resources.
Resposta comentada
Gabarito Alternativa B
Deadlock (ou impasse) acontece quando dois ou mais processos ficam parados indefinidamente, cada um esperando por um recurso que está sendo segurado por outro processo, formando um ciclo. Já a starvation (ou inanição) ocorre quando um processo é repetidamente impedido de acessar um recurso ou a CPU, mesmo que o recurso esteja disponível, geralmente por causa de políticas de agendamento que favorecem outros processos.
- (A) Incorreta: Esta alternativa descreve uma situação de concorrência por um recurso, que pode levar à starvation se um processo for consistentemente preterido, mas não é a definição de starvation em si. Starvation é a consequência de ser repetidamente negado, não apenas a tentativa simultânea de acesso.
- (B) Correta: Esta é a definição clássica de um deadlock. No cenário, o criminoso (thread 1) segura o refém (recurso 1) e precisa do amigo (recurso 2). O policial (thread 2) segura o amigo (recurso 2) e precisa do refém (recurso 1). Ambos estão em um ciclo de espera mútua, cada um segurando o que o outro precisa, e nenhum liberará seu recurso primeiro.
- (C) Incorreta: A frase é confusa e não descreve um conceito padrão de sistemas operacionais. Um "lock" é um mecanismo de controle de acesso, não uma situação de espera como descrita. A ideia de um thread segurar um recurso "depois que ele termina" geralmente indica um erro de programação ou vazamento de recurso, não um tipo de impasse.
- (D) Incorreta: Esta alternativa é extremamente mal formulada e gramaticalmente confusa, não apresentando uma definição coerente de starvation ou qualquer outro conceito relevante em sistemas operacionais.
- (E) Incorreta: Deadlocks exigem que os processos estejam segurando recursos e esperando por outros. A condição "grabbing no resources" (não pegando recursos) contradiz diretamente uma das condições fundamentais para a ocorrência de deadlock (Hold and Wait - segurar e esperar).
Fonte: FCC TRE-PR 2017 Analista Judiciário - Área Apoio Especializado - Especialidade Análise de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.