Pular para o conteúdo principal

Questão de Sistemas Operacionais — Threads — FGV 2024

Sistemas OperacionaisThreads
Código
fg099945
Banca
FGV
Órgão
TJ-RR
Ano
2024
Nível
Superior
Cargo
Analista Judiciário - Desenvolvimento de Sistemas
A função CreateThread do Windows inicia um thread paralelo em relação a um thread em execução. Um programa principal roda:Imagem associada para resolução da questãoO número total de threads descendentes do programa principal (incluindo ele) é igual a
  1. A5.
  2. B10.
  3. C8.
  4. D4.
  5. E7.
Revelar gabarito e comentário

GabaritoB — 10.

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”.

Resolução

Gabarito: letra B — a conta chega a 10 threads — alternativa B.

A ideia por trás

Thread é a menor unidade de execução dentro de um processo. Um processo começa com uma thread principal e pode criar outras threads, que rodam concorrentemente e compartilham o mesmo espaço de memória. No Windows, a função CreateThread é a chamada de sistema que cria uma nova thread dentro do processo atual.

Cada chamada a CreateThread cria exatamente uma nova thread. A thread principal é a que executa o programa desde o início. O total de threads descendentes é a soma da thread principal com todas as threads criadas por ela (e, se houver, pelas filhas, mas aqui só a principal cria). A contagem é direta: número de chamadas a CreateThread + 1.

A questão pede explicitamente para incluir a thread principal na contagem. O erro comum é contar apenas as threads criadas, esquecendo de somar a principal.

O que a questão dá

  • programa principal (thread inicial)

  • função CreateThread do Windows

  • figura com chamadas a CreateThread

O que queremos: o número total de threads descendentes do programa principal, incluindo ele

Passo 1 — Contar as chamadas a CreateThread

Cada chamada a CreateThread no código cria uma nova thread. Para saber quantas threads filhas existem, precisamos contar quantas vezes essa função é chamada no programa principal.

9 threads filhas

NÃO CAIA NESSA!

Contar errado o número de chamadas na figura, por exemplo, esquecendo alguma chamada dentro de um loop ou condição.

Passo 2 — Somar a thread principal

O enunciado pede o total de threads descendentes incluindo a principal. A thread principal é a que executa o programa desde o início, então ela deve ser contada.

Por que esta fórmula: Total = threads criadas + 1 (a principal).

Total=Ncriadas+1Total = N_{criadas} + 1

De onde vem cada valor: NcriadasN_{criadas} = passo 1: 9

Total=9+1=10 threadsTotal = 9 + 1 = \boxed{10\ \text{threads}}
NÃO CAIA NESSA!

Esquecer de somar a thread principal e responder 9, que é uma alternativa distratora.

Resposta: 10 threads — alternativa B

Link permanente: /questoes/fg099945