A programação com memória compartilhada refere-se a um model...
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
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a alternativa C - semáforos ou acesso atômico.
A questão aborda conceitos importantes de programação com memória compartilhada, focando na necessidade de evitar condições de corrida. Para resolver essa questão, é fundamental entender que em sistemas multicore ou multiprocessadores, múltiplos threads ou processos podem acessar simultaneamente a memória principal. Isso pode causar problemas se dois ou mais threads tentarem modificar o mesmo dado ao mesmo tempo.
Para evitar essas condições de corrida e garantir que apenas um thread ou processo possa acessar o recurso compartilhado de cada vez, utilizamos mecanismos de exclusão mútua. Vamos analisar cada uma das alternativas para entender melhor:
Alternativa A - semáforos ou versioning: A primeira parte desta alternativa está correta, pois semáforos são mecanismos clássicos de exclusão mútua, frequentemente utilizados para controlar o acesso a recursos compartilhados. No entanto, a técnica de versioning não se encaixa como uma solução para exclusão mútua, sendo mais relacionada a controle de versões em sistemas de armazenamento de dados.
Alternativa B - transações ou algoritmos wait-free: As transações são usadas em sistemas de banco de dados e em algumas implementações de memória transacional para garantir a atomicidade das operações, o que não se aplica diretamente a exclusão mútua em programação com memória compartilhada. Já os algoritmos wait-free são uma classe de algoritmos que garantem a conclusão de uma operação em um número finito de passos, sem bloqueios, mas não são comumente categorizados como mecanismos de exclusão mútua.
Alternativa C - semáforos ou acesso atômico: Esta é a alternativa correta. Semáforos são amplamente utilizados para garantir que apenas um thread ou processo acesse um recurso compartilhado por vez. Acesso atômico refere-se a operações indivisíveis que são concluídas em um único passo de hardware, garantindo que nenhuma outra operação interfira durante a execução.
Alternativa D - lazy synchronization ou transações: A lazy synchronization é uma técnica de sincronização que adia a sincronização até que seja realmente necessária, mas não é um método clássico de exclusão mútua. As transações, como mencionado anteriormente, estão mais relacionadas a bancos de dados que à exclusão mútua na programação com memória compartilhada.
Alternativa E - acesso atômico ou algoritmos wait-free: Embora acesso atômico seja uma parte correta, os algoritmos wait-free não são um mecanismo de exclusão mútua tradicional, mas sim uma abordagem para evitar bloqueios e garantir a conclusão de operações de maneira independente.
Portanto, a alternativa C é a que melhor corresponde aos mecanismos tradicionais de exclusão mútua utilizados para evitar condições de corrida em programação com memória compartilhada.
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
Para evitar condições de corrida em programação com memória compartilhada, onde múltiplos threads ou processos acessam e modificam os mesmos dados na memória, são utilizados mecanismos de exclusão mútua. Entre os mecanismos mais comuns estão:
**C. Semáforos ou acesso atômico.**
Explicação:
- **Semáforos:** São variáveis especiais que são utilizadas para controlar o acesso concorrente aos recursos compartilhados. Eles garantem que apenas um thread por vez execute uma seção crítica do código.
- **Acesso atômico:** Refere-se à operação que é executada como uma única unidade indivisível. Em sistemas com suporte a operações atômicas, uma operação de leitura ou escrita é garantida de ser concluída sem ser interrompida por outra operação concorrente.
Portanto, a resposta correta é **semáforos ou acesso atômico** para garantir exclusão mútua e evitar condições de corrida na programação com memória compartilhada.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo