Questão de Programação — Conceitos básicos de programação — FGV 2024
Programação›Conceitos básicos de programação
Código
fg085323
Banca
FGV
Órgão
INPE
Ano
2024
Nível
Superior
Cargo
Tecnologista Júnior I - Ambiente de Supercomputação e HPC (High-Performance Computing)
A programação com memória compartilhada refere-se a um modelo de programação em que múltiplos threads ou processos compartilham o mesmo espaço de memória, permitindo que eles acessem e modifiquem os mesmos dados. Isso geralmente é implementado em sistemas multicore ou multiprocessadores, onde várias unidades de processamento têm acesso simultâneo à memória principal.Para evitar condições de corrida, isto é, uma situação em que o resultado depende do tempo preciso de acessos de leitura e escrita ao mesmo local na memória principal, ao trabalhar com memória compartilhada, podem ser utilizados mecanismos de exclusão mútua, como o uso de
Asemáforos ou versioning.
Btransações ou algoritmos wait-free.
Csemáforos ou acesso atômico.
Dlazy synchronization ou transações.
Eacesso atômico ou algoritmos wait-free.
Revelar gabarito e comentário▾
GabaritoC — semáforos ou acesso atômico.
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”.
Programação concorrente: exclusão mútua
Gabarito: letra C. Para evitar condições de corrida em ambientes de memória compartilhada, os mecanismos clássicos de exclusão mútua são os semáforos e as operações atômicas (acesso atômico). As demais alternativas misturam conceitos que não se enquadram como mecanismos diretos de exclusão mútua.
Exclusão mútua (memória compartilhada)
1Mecanismos clássicos
Semáforos (P e V)
Acesso atômico (CAS)
2Conceitos que NÃO são exclusão mútua
Versioning (controle de versão)
Transações
Algoritmos wait-free
Lazy synchronization
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Embora semáforos sejam corretos, versioning (controle de versão) é uma técnica de concorrência otimista, não um mecanismo de exclusão mútua. Ele não impede o acesso simultâneo, apenas resolve conflitos posteriormente.
Alternativa B — ❌ Incorreta
Transações são usadas em bancos de dados e sistemas transacionais, não são mecanismos de exclusão mútua tradicionais. Algoritmos wait-free garantem progresso sem espera, mas são uma classe avançada de sincronização, não um mecanismo básico de exclusão mútua.
Alternativa C — ✅ Correta ⟵ GABARITO
Semáforos controlam o acesso a recursos compartilhados através de operações P e V. Acesso atômico (operações atômicas como compare-and-swap) impede que múltiplos threads interfiram uns nos outros ao modificar a mesma variável. Ambos são mecanismos diretos e amplamente utilizados para exclusão mútua.
Alternativa D — ❌ Incorreta
Lazy synchronization é uma técnica de sincronização otimista aplicada a estruturas de dados, não um mecanismo de exclusão mútua. Transações novamente não se encaixam como mecanismo básico.
Alternativa E — ❌ Incorreta
Acesso atômico está correto, mas algoritmos wait-free não são mecanismos de exclusão mútua; são uma propriedade de algoritmos concorrentes que garantem progresso individual, não um controle de acesso direto.
NÃO CAIA NESSA!
A banca troca mecanismos clássicos de exclusão mútua (semáforos, atômicos) por conceitos relacionados como versioning, transações e wait-free, que não são primariamente usados para esse fim. Fique atento: sempre que a questão pedir exclusão mútua, pense em semáforos, mutex, locks e operações atômicas.