Pular para o conteúdo principal

Questão de Sistemas Operacionais — Deadlock (SO) — VUNESP 2023

Sistemas OperacionaisDeadlock (SO)
Código
vu196559
Banca
VUNESP
Órgão
TJ RS
Ano
2023
Cargo
ATI ( )

Em um sistema operacional existem algumas condições necessárias para que o deadlock possa ocorrer, dentre elas a condição de não-preempção, na qual

  1. Acada processo pode solicitar um dado recurso, tê-lo alocado para si e ficar bloqueado, esperando por algum outro recurso.
  2. Bcada processo tem direito a solicitar, por uma única vez, cada recurso disponível no sistema.
  3. Cdeve existir uma cadeia circular de dois ou mais processos, sendo que cada um dos processos aguarda por um recurso que se encontra com o próximo participante dessa cadeia.
  4. Drecursos alocados a processos são destes retirados após intervalos de tempo determinados pelo programador do processo.
  5. Erecursos já alocados a processos não podem ser deles retirados de maneira forçada.
Revelar gabarito e comentário

GabaritoE — recursos já alocados a processos não podem ser deles retirados de maneira forçada.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Deadlock: condições necessárias e a não-preempção

Gabarito: letra E. A condição de não-preempção é exatamente a que impede que recursos já alocados a um processo sejam retirados à força — eles só podem ser liberados pelo próprio processo que os detém. Essa é uma das quatro condições de Coffman (exclusão mútua, posse e espera, não-preempção e espera circular) que precisam estar simultaneamente presentes para que um deadlock ocorra.

O deadlock (ou impasse) é a situação em que dois ou mais processos ficam permanentemente bloqueados, cada um esperando por um recurso que está retido por outro processo do conjunto — e nenhum deles consegue avançar porque o recurso que precisa nunca é liberado. Para que isso aconteça, quatro condições precisam ser verdadeiras ao mesmo tempo. A primeira é a exclusão mútua: cada recurso só pode ser usado por um processo por vez. A segunda é a posse e espera: um processo pode segurar recursos já obtidos enquanto pede outros. A terceira é a não-preempção: os recursos não podem ser tomados à força de quem os detém. A quarta é a espera circular: existe uma cadeia fechada de processos, em que cada um espera por um recurso que está com o próximo da cadeia.

A não-preempção é o que torna o impasse possível: se o sistema pudesse simplesmente retirar um recurso de um processo e entregá-lo a outro, a espera nunca seria eterna — o processo que está bloqueado seria desbloqueado pela força. É por isso que a condição existe: ela garante que a liberação de um recurso depende exclusivamente da vontade (ou da conclusão) do processo que o detém. Na prática, isso acontece com recursos como impressoras, arquivos e semáforos: uma vez alocados, ficam com o processo até que ele os libere explicitamente.

Um exemplo clássico: dois processos, P1 e P2, precisam dos recursos R1 e R2. P1 obtém R1 e pede R2; P2 obtém R2 e pede R1. Como nenhum dos dois pode ser forçado a devolver o recurso que já tem (não-preempção), e cada um espera o recurso do outro (espera circular), ambos ficam bloqueados para sempre. Se o sistema pudesse retirar R1 de P1 à força, o impasse seria resolvido — mas a condição de não-preempção impede exatamente isso.

A banca explora aqui a confusão entre as quatro condições: cada alternativa descreve uma delas (ou uma ideia errada), e o candidato precisa identificar qual é a definição exata de não-preempção. Guarde o par: não-preempção = recurso não pode ser tomado à força; espera circular = cadeia fechada de esperas. É nessa fronteira que as alternativas se dividem.

Condições de Coffman (deadlock)
  • 1Exclusão mútua
    • Recurso usado por um processo por vez
  • 2Posse e espera
    • Segura recursos obtidos enquanto pede outros
  • 3Não-preempção
    • Recurso não pode ser retirado à força
    • Só o processo detentor libera
  • 4Espera circular
    • Cadeia fechada de processos
    • Cada um espera recurso do próximo
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Descreve a condição de posse e espera (hold-and-wait): o processo já detém um recurso e fica bloqueado esperando outro. Não é não-preempção, que trata da impossibilidade de retirada forçada do recurso, e não da espera por novos recursos.

Alternativa B — ❌ Incorreta

Afirma que cada processo pode solicitar cada recurso apenas uma vez — isso não corresponde a nenhuma das quatro condições de Coffman. A não-preempção nada tem a ver com limite de solicitações; um processo pode pedir recursos quantas vezes precisar, desde que respeite as demais condições.

Alternativa C — ❌ Incorreta

Descreve a condição de espera circular: uma cadeia de dois ou mais processos, cada um aguardando um recurso retido pelo próximo. É a quarta condição, não a não-preempção. A pegadinha está em confundir a definição de espera circular com a de não-preempção.

Alternativa D — ❌ Incorreta

Inverte o sentido da não-preempção: diz que os recursos são retirados após intervalos determinados pelo programador. Na verdade, a não-preempção significa justamente o oposto — os recursos não podem ser retirados à força, nem por tempo, nem por decisão externa. A retirada forçada seria preempção, que é o que a condição nega.

Alternativa E — ✅ Correta ⟵ GABARITO

É a definição literal da condição de não-preempção: recursos já alocados a processos não podem ser deles retirados de maneira forçada. Eles só são liberados quando o próprio processo os devolve explicitamente. É exatamente essa impossibilidade de retirada forçada que, combinada com as outras três condições, permite a formação do deadlock.

NÃO CAIA NESSA!

A banca troca as condições entre si. A alternativa C descreve a espera circular e a alternativa A descreve a posse e espera — ambas parecem plausíveis para quem não fixou a definição exata de cada uma. A chave é lembrar que a não-preempção é a única que fala em retirada forçada: se a frase menciona "tomar à força", "retirar à força" ou "não podem ser retirados", é ela. Com treino, você reconhece essas trocas de longe 💪.

Gabarito: letra E

Link permanente: /questoes/vu196559