Os semáforos são usados em programação concorrente para evit...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: A - a exclusão mútua, onde cada processo deverá sinalizar imediatamente antes e, imediatamente após, usar um recurso comum a ambos.
Para entender por que a alternativa A é a correta, precisamos discutir o conceito de semáforos no contexto de programação concorrente. Os semáforos são uma técnica de sincronização utilizada para controlar o acesso a recursos compartilhados em um ambiente onde múltiplas threads ou processos estão sendo executados simultaneamente. O principal objetivo do uso de semáforos é garantir a exclusão mútua, o que significa que apenas um processo ou thread pode acessar um recurso compartilhado - a seção crítica - por vez.
A exclusão mútua é essencial para prevenir condições de corrida (race conditions), onde os resultados da execução dependem da ordem não determinística na qual as instruções são executadas. Se dois processos tentassem acessar e modificar um recurso compartilhado ao mesmo tempo sem exclusão mútua, isso poderia levar a inconsistências e erros.
A operação de um semáforo geralmente envolve duas ações principais: wait (ou P, do holandês "proberen", que significa testar) e signal (ou V, de "verhogen", que significa incrementar). Um processo deve executar a operação wait para entrar em sua seção crítica e a operação signal ao sair. A operação wait verifica se o semáforo permite o acesso à seção crítica, potencialmente fazendo o processo esperar se o acesso não for permitido. A operação signal libera o semáforo, permitindo que outro processo entre em sua seção crítica, se estiver esperando.
As demais alternativas não são apropriadas porque:
- B - Os pipes são mecanismos de comunicação entre processos e não têm relação direta com semáforos ou exclusão mútua.
- C - O PID é a identificação única do processo e não está relacionado ao controle de acesso a recursos compartilhados.
- D - Semáforos não garantem por si só que não haverá deadlock, pois isso depende de como são usados.
- E - A gestão de processos por uma máquina virtual é um conceito distinto do controle de acesso a recursos compartilhados em programação concorrente.
Portanto, a exclusão mútua é precisamente o que os semáforos buscam assegurar, e é por isso que a alternativa A está correta.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Semáforos:
- Forneçem um mecanismo eficaz para a sincronização de processos;
- Usá-los incorretamente pode resultar em erros de timing difíceis de detectar.
- Um semáforo é uma variável inteira que, exceto na inicialização, é acessada apenas por meio de duas operações atômicas padrão: wait e signal
- É uma solução de Exclusão Mútua com Bloqueio
- Os semáforos podem ser classificados como: binários e contadores.
Alternativa: A
Semáforo é um ecanismo de sincronização que permite implementar a exclusão mútua sem a deficiência da espera ocupada é o "semáforo". Especificamente, um semáforo binário (ou semáforo mutex) é um tipo de semáforo que pode ter apenas dois valores: 0 e 1. Ele é usado para garantir que apenas um processo ou thread possa acessar uma seção crítica de código por vez.
a-
In concurrent programming, semaphores are a synchronization mechanism used to control access to shared resources and coordinate the execution of multiple threads or processes. They provide a way to enforce mutual exclu
https://en.wikipedia.org/wiki/Semaphore_(programming)
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo