Pular para o conteúdo principal

Questão de Sistemas Operacionais — Threads (SO) — CESPE / CEBRASPE 2025

Sistemas OperacionaisThreads (SO)
Código
ce418265
Banca
CESPE / CEBRASPE
Órgão
TRF 6
Ano
2025
Cargo
TJ TRF6

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.

  1. CCerto
  2. 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.

Gabarito: letra E (ERRADO).

Link permanente: /questoes/ce418265