Questão de Sistemas Operacionais — Geral — VUNESP 2024
Sistemas Operacionais›Geral
Código
vu212433
Banca
VUNESP
Órgão
EsFCEx
Ano
2024
Cargo
CFO/QC ( )
Assinale a alternativa correta relacionada com semáforos utilizados em sistemas operacionais.
AA inicialização de qualquer tipo de semáforo tem a função de atribuir a ele o valor zero.
BQuando uma operação V (ou up) é realizada, se o semáforo estiver com valor zero e existir algum processo no estado bloqueado, um deles será retirado desse estado, estando pronto para execução.
CQuando uma operação P (ou down) é realizada, ela incrementa o valor do semáforo.
DQuando uma operação P (ou down) é realizada, se o semáforo estiver com valor diferente de zero, o processo é bloqueado.
EQuando uma operação V (ou up) é realizada, se o semáforo estiver com valor diferente de zero, o valor do semáforo é decrementado.
Revelar gabarito e comentário▾
GabaritoB — Quando uma operação V (ou up) é realizada, se o semáforo estiver com valor zero e existir algum processo no estado bloqueado, um deles será retirado desse estado, estando pronto para execução.
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”.
Semáforos em Sistemas Operacionais
Gabarito: letra B. A operação V (ou up) incrementa o valor do semáforo; se houver processos bloqueados aguardando esse semáforo, um deles é despertado e passa para o estado de pronto. Essa é a semântica clássica definida por Dijkstra, presente em qualquer livro de sistemas operacionais (Tanenbaum, Silberschatz, etc.).
Semáforo é uma variável inteira não negativa, utilizada para controle de concorrência entre processos ou threads. Ele suporta duas operações atômicas: P (do holandês Proberen, testar) e V (do holandês Verhogen, incrementar). Em inglês, são conhecidas como down e up, respectivamente. A atomicidade garante que não haja condição de corrida durante a verificação e atualização do valor.
A operação P (down) decrementa o valor do semáforo. Se o valor resultante for negativo, o processo que a executou é bloqueado e colocado na fila de espera daquele semáforo. Se o valor for maior ou igual a zero, o processo continua sua execução normalmente. Já a operação V (up) incrementa o valor do semáforo. Se houver processos bloqueados na fila, um deles é acordado e movido para a fila de prontos, podendo então ser escalonado.
Um exemplo clássico é o controle de vagas em um estacionamento: o semáforo é inicializado com o número total de vagas. Cada carro que entra executa down(vagas); se ainda houver vagas (valor > 0), ele entra; se não houver (valor = 0), o carro fica bloqueado até que outro carro saia e execute up(vagas), liberando uma vaga e acordando um dos carros esperando.
A pegadinha desta questão está em inverter os efeitos das operações: a banca troca incremento por decremento e bloqueio por liberação. O candidato que não domina a semântica exata de P e V acaba marcando uma alternativa que descreve o comportamento da operação oposta.
Guarde a regra de ouro: P decrementa e pode bloquear; V incrementa e pode desbloquear. É exatamente essa distinção que separa as alternativas corretas das incorretas.
Semáforo
1Variável inteira não negativa
2Controle de concorrência
3Operações atômicas
P (down)
Decrementa
Pode bloquear (valor = 0)
V (up)
Incrementa
Pode desbloquear (acorda processo)
4Inicialização
Valor conforme o problema
Ex.: nº de vagas
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
A inicialização de um semáforo não tem a função de atribuir valor zero. O valor inicial é definido conforme o problema: pode ser zero, mas também pode ser qualquer inteiro não negativo (por exemplo, o número de vagas de um estacionamento ou o número de recursos disponíveis). A afirmativa generaliza indevidamente.
Alternativa B — ✅ Correta ⟵ GABARITO
A operação V (up) incrementa o valor do semáforo. Se o valor era zero e há processos bloqueados, um deles é despertado e passa para o estado de pronto. Isso está exatamente de acordo com a semântica clássica: após o up, o semáforo continua com valor zero (pois o incremento é compensado pela liberação de um processo), mas há um processo a menos na fila de bloqueados.
Alternativa C — ❌ Incorreta
A operação P (down) decrementa o valor do semáforo, não o incrementa. Incrementar é função da operação V (up). A alternativa inverte o efeito da operação.
Alternativa D — ❌ Incorreta
Quando a operação P (down) é realizada e o semáforo está com valor diferente de zero (ou seja, positivo), o processo não é bloqueado; ele continua sua execução normalmente. O bloqueio ocorre apenas quando o valor é zero (ou negativo, dependendo da implementação). A alternativa descreve o comportamento contrário.
Alternativa E — ❌ Incorreta
A operação V (up) incrementa o valor do semáforo, não o decrementa. Decrementar é função da operação P (down). A alternativa inverte o efeito da operação.