Questão de Sistemas Operacionais — Threads — FGV 2024
Sistemas Operacionais›Threads
Código
fg085501
Banca
FGV
Órgão
INPE
Ano
2024
Nível
Superior
Cargo
Tecnologista Júnior I - Desenvolvimento de Software Embarcado
Um conceito fundamental para o melhor aproveitamento de recursos por um sistema operacional é o de multithreading.Para o emprego eficaz de multithreading em um sistema operacional, é fundamental a existência de mecanismos de sincronização eficientes. Nesse contexto, analise as afirmativas a seguir.I. Por definição, semáforos possuem um contador, cujos valores podem ser 0,1 ou 2.II. Mutexes são projetados para garantir que apenas uma thread possa acessar um recurso compartilhado por vez.III. Mutexes podem ser considerados uma generalização de semáforos, por conta da maior flexibilidade do contador de um mutex.Está correto o que se afirma em
AI, apenas.
BII, apenas.
CIII, apenas.
DII e III, apenas.
EI, II e III.
Revelar gabarito e comentário▾
GabaritoB — II, apenas.
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”.
Sincronização em Sistemas Operacionais: Semáforos e Mutexes
Gabarito: letra B — apenas a afirmativa II está correta. Semáforos possuem contador que pode assumir qualquer valor inteiro não negativo, não apenas 0, 1 ou 2 (afirmativa I falsa). Mutexes garantem exclusão mútua (II verdadeira). Mutexes não são uma generalização de semáforos; na verdade, semáforos são mais gerais (III falsa).
A banca testa o conhecimento sobre as características básicas de semáforos e mutexes, dois mecanismos clássicos de sincronização. É comum haver confusão sobre os tipos de semáforo e a relação entre eles.
Afirmativa I — ❌ Incorreta
Semáforos são variáveis inteiras que suportam as operações wait (P) e signal (V). O contador de um semáforo pode assumir qualquer valor inteiro não negativo (em semáforos contadores) ou apenas 0 e 1 (semáforos binários). A afirmativa erra ao limitar os valores a 0, 1 ou 2 — isso não corresponde à definição clássica. Um semáforo contador pode, por exemplo, ter valor 5 para controlar o acesso a 5 instâncias de um recurso.
Afirmativa II — ✅ Correta
Mutexes (abreviação de mutual exclusion) são projetados exatamente para garantir que apenas uma thread por vez acesse um recurso compartilhado. Eles possuem os estados locked e unlocked, e a thread que adquire o lock deve ser a mesma que o libera (propriedade de ownership). A afirmativa descreve corretamente o propósito fundamental de um mutex.
Afirmativa III — ❌ Incorreta
A afirmativa inverte a relação de generalização. Na verdade, semáforos são uma generalização de mutexes: um semáforo binário (valores 0 e 1) pode ser usado para exclusão mútua, mas um mutex tem características adicionais como ownership e recursividade. Semáforos contadores permitem controlar acesso a múltiplos recursos, o que os torna mais flexíveis. Portanto, mutexes não são uma generalização de semáforos; o contrário é que é verdadeiro.
NÃO CAIA NESSA!
A banca inverte o sentido da generalização. Muitos candidatos, por associação, pensam que mutex é mais avançado ou geral, mas o correto é que semáforos (especialmente os contadores) são mais abrangentes. Lembre-se: todo mutex pode ser implementado com um semáforo binário, mas nem todo semáforo é um mutex.
PEGA ESSA DICA!
Para fixar: semáforo = contador + operações P/V; mutex = lock binário com ownership. Na prova, se a afirmação disser que mutex generaliza semáforo, desconfie imediatamente.
Conclusão: Apenas a afirmativa II está correta. Portanto, o gabarito é a letra B.