Questão nº 56
Questão de Tecnologia da Informação · FCC TRT-12 2023 (nº 56)
Durante a execução de processos em um sistema operacional, uma Analista observou que processos de maior prioridade apareciam sempre que um processo de menor prioridade ativo queria chamar o kernel. Nesse caso, estava ocorrendo o
- Astarvation, que é o mesmo que thread interference, mas uma forma de correção disso é a utilização da ordem de atendimento dos processos escritores por meio de uma fila do tipo último que entra, primeiro que sai (LIFO - last in, first out).
- Bdeadlock, que é o mesmo que intervention, pois um processo trava o outro mantendo o impasse. Para evitar isso utiliza-se o thread attempt para análise e correção.
- Cthread lock interference afetando a prioridade do fluxo de execução. Uma possível solução para essa interferência é priorizar as threads utilizando uma fila do tipo último que entra, primeiro que sai (LIFO - last in, first out).
- Dstarvation, mas é possível evitá-lo mantendo a ordem de atendimento dos processos escritores utilizando uma fila do tipo primeiro que entra, primeiro que sai (FIFO - first in, first out). (alternativa correta)
- Edeadlock, que é o mesmo que lock interference, pois um processo trava o outro mantendo o impasse. Para evitar isso utiliza-se o release lock para liberação.
Resposta comentada
Gabarito Alternativa D
O conceito-chave aqui é Starvation (Inanição), que acontece quando um processo de baixa prioridade nunca consegue executar ou acessar um recurso porque processos de maior prioridade ou outros processos sempre o "atropelam" ou pegam o recurso antes dele, deixando-o esperando indefinidamente.
(A) Incorreta: Starvation não é o mesmo que thread interference; thread interference é um termo mais amplo para problemas de concorrência. Usar uma fila LIFO (último que entra, primeiro que sai) para correção agravaria a starvation, pois processos mais antigos (e possivelmente de menor prioridade) nunca seriam atendidos.
(B) Incorreta: Deadlock ocorre quando dois ou mais processos estão bloqueados indefinidamente, cada um esperando por um recurso que o outro possui. O cenário descrito é de um processo sendo constantemente preterido, não bloqueado por um recurso alheio. "Intervention" e "thread attempt" não são termos padrão para isso.
(C) Incorreta: Thread lock interference refere-se a problemas de concorrência com bloqueios (locks), não diretamente à preempção por prioridade. Novamente, usar LIFO para priorizar threads pioraria a starvation.
(D) Correta: O cenário descrito é um exemplo clássico de starvation, onde um processo de menor prioridade é constantemente impedido de progredir por processos de maior prioridade. Uma forma eficaz de evitar a starvation é garantir uma ordem justa de atendimento, como o uso de uma fila FIFO (primeiro que entra, primeiro que sai), que assegura que todos os processos eventualmente terão sua vez, independentemente da prioridade inicial.
(E) Incorreta: Deadlock não se encaixa na descrição, como explicado em B. "Lock interference" e "release lock" estão relacionados a problemas de concorrência com bloqueios, não ao problema de um processo ser constantemente preterido por prioridade.
Fonte: FCC TRT-12 2023 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 003). Reproduzida para fins de estudo.