Questão de Sistemas Operacionais — Threads — CESPE / CEBRASPE 2025
- Código
- ce217177
- Banca
- CESPE / CEBRASPE
- Órgão
- TJ-PA
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista Judiciário - Especialidade: Análise de Suporte
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: E (Errado). Em CUDA, blocks diferentes dentro de um mesmo grid não compartilham automaticamente sua memória local e registradores. Cada thread possui seus próprios registradores e memória local (privados), e blocks são executados independentemente, sem comunicação automática entre si. Apenas threads dentro de um mesmo block podem compartilhar memória via shared memory e sincronizar entre si.
A execução é organizada em três níveis:
Grid: conjunto de blocks que executam o mesmo kernel.
Block: conjunto de threads que podem cooperar via memória compartilhada e sincronização.
Thread: unidade básica de execução, com registradores e memória local privados.
A afirmação diz que "diferentes blocks dentro de um mesmo grid podem compartilhar automaticamente sua memória local e seus registradores". Isso é falso porque:
Memória local e registradores são privados por thread – não podem ser acessados por outras threads, mesmo dentro do mesmo block.
Memória compartilhada (shared memory) é acessível a todas as threads de um mesmo block, mas não a blocks diferentes.
Blocks diferentes são independentes: executam em qualquer ordem e não podem se comunicar diretamente. Para comunicação entre blocks, é necessário usar memória global ou operações atômicas, o que não é automático.
A banca tenta induzir o candidato a confundir o compartilhamento dentro de um block (via memória compartilhada) com um suposto compartilhamento entre blocks. Lembre-se: blocks são unidades independentes; a cooperação entre threads só ocorre no nível do block.
Na prova, lembre-se da regra de ouro: thread ↔ memória local e registradores (privados); block ↔ memória compartilhada e sincronização; grid ↔ independência entre blocks. A comunicação entre blocks requer mecanismos explícitos (memória global + barreira implícita no final do kernel, ou operações atômicas).
Conclusão: A afirmação é falsa porque blocks não compartilham automaticamente memória local nem registradores. Apenas threads dentro de um mesmo block podem compartilhar memória compartilhada, e mesmo assim não automaticamente – depende de código explícito.
Gabarito: E (Errado).
Link permanente: /questoes/ce217177