Pular para o conteúdo principal

Questão de Programação — Conceitos básicos de programação — FGV 2024

ProgramaçãoConceitos 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
  1. Asemáforos ou versioning.
  2. Btransações ou algoritmos wait-free.
  3. Csemáforos ou acesso atômico.
  4. Dlazy synchronization ou transações.
  5. 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.

Gabarito: letra C.

Link permanente: /questoes/fg085323