No que concerne ao gerenciamento de memória, julgue o item a seguir, relativo a threads, processos, segmentação e swap.
Threads são unidades de execução independentes dentro de um processo, cada uma com seu próprio contador de programa, sua própria pilha e seu próprio espaço de endereços.
CCerto
EErrado
Revelar gabarito e comentário▾
GabaritoE — Errado
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”.
Threads: unidades de execução dentro de um processo
Gabarito: letra E (ERRADO). A afirmação está incorreta porque, embora cada thread possua seu próprio contador de programa, seus próprios registradores e sua própria pilha, todas as threads de um processo compartilham o mesmo espaço de endereçamento — e não um espaço de endereços próprio para cada uma. Esse é o conceito central que distingue threads de processos: processos têm espaços de endereçamento independentes; threads, não.
Para entender por que a afirmação erra, é preciso dominar a diferença entre processo e thread. Um processo é a unidade de gerenciamento de recursos do sistema operacional: ele possui seu próprio espaço de endereçamento (código, dados, heap), arquivos abertos, sinais, etc. Uma thread, por sua vez, é a unidade de escalonamento — um fluxo de execução dentro do processo. Quando um processo é criado, ele começa com uma única thread (a thread principal), e essa thread pode criar outras. O ponto crucial é que todas as threads de um mesmo processo compartilham o espaço de endereçamento do processo: elas enxergam as mesmas variáveis globais, os mesmos arquivos abertos e a mesma área de memória. Se cada thread tivesse seu próprio espaço de endereçamento, ela seria, na prática, um processo separado — e não uma thread.
O que é, então, exclusivo de cada thread? O contexto de execução: o contador de programa (que indica a próxima instrução a ser executada), os registradores da CPU e a pilha (stack). A pilha é individual porque cada thread tem sua própria história de chamadas de função — se a rotina X chama Y e Y chama Z, as estruturas de X, Y e Z ficam na pilha daquela thread específica. Como cada thread executa um código diferente, cada uma precisa de sua própria pilha para armazenar variáveis locais e endereços de retorno. Mas isso não cria um espaço de endereçamento separado: a pilha de cada thread é apenas uma região dentro do espaço de endereçamento compartilhado do processo.
A confusão que a banca explora é justamente essa: misturar o que é compartilhado (espaço de endereçamento, variáveis globais, arquivos abertos) com o que é exclusivo (contador de programa, registradores, pilha). A afirmação diz que cada thread tem "seu próprio espaço de endereços" — isso é falso. Na verdade, o espaço de endereçamento é um item por processo, não por thread. Se cada thread tivesse seu próprio espaço de endereçamento, não haveria compartilhamento de memória entre threads, e o conceito de thread perderia seu principal benefício: a comunicação eficiente via memória compartilhada.
Para fixar, veja a comparação:
Item
Por processo
Por thread
Espaço de endereçamento
✅
❌ (compartilhado)
Variáveis globais
✅
❌ (compartilhadas)
Arquivos abertos
✅
❌ (compartilhados)
Contador de programa
❌
✅
Registradores
❌
✅
Pilha
❌
✅
A pegadinha está em trocar o que é individual pelo que é coletivo: a banca atribui às threads um espaço de endereçamento próprio, quando na verdade ele é compartilhado entre todas as threads do mesmo processo. É exatamente essa inversão que torna a afirmação incorreta.
Thread
1Compartilhado (por processo)
Espaço de endereçamento
Variáveis globais
Arquivos abertos
2Exclusivo (por thread)
Contador de programa
Registradores
Pilha
LEVEL · soulevel.com.br
Item — ❌ ERRADO
A afirmação está errada porque atribui a cada thread um "próprio espaço de endereços". Isso é incorreto: todas as threads de um processo compartilham o mesmo espaço de endereçamento do processo. O que é próprio de cada thread é apenas o contador de programa, os registradores e a pilha. Se cada thread tivesse seu próprio espaço de endereçamento, ela seria um processo independente, não uma thread. O compartilhamento do espaço de endereçamento é justamente o que permite que threads cooperem entre si acessando as mesmas variáveis globais e estruturas de dados.
NÃO CAIA NESSA!
Na prova, memorize a tabela: espaço de endereçamento, variáveis globais e arquivos abertos são POR PROCESSO; contador de programa, registradores e pilha são POR THREAD. Quando a banca disser que thread tem "espaço de endereçamento próprio", marque errado — é a pegadinha clássica.