Pular para o conteúdo principal

Questão de Sistemas Operacionais — Threads (SO) — INSTITUTO AOCP 2024

Sistemas OperacionaisThreads (SO)
Código
qa632927
Banca
INSTITUTO AOCP
Órgão
DPE MS
Ano
2024
Cargo
Ana Def ( )

Levando em consideração conceitos sobre a utilização de threads e que a sua implementação pode ser feita de várias maneiras, assinale a alternativa INCORRETA.

  1. AO agrupamento de funções, dentro do nível de aplicação, que pode ser compartilhado por todas as aplicações é denominado biblioteca de threads.
  2. BUma das vantagens da implementação do tipo ULT (User-level threads) é que o chaveamento das threads não requer privilégios do kernel, uma vez que todo o gerenciamento das estruturas de dados das threads é feito dentro do espaço de um processo usuário.
  3. CDentro da implementação do tipo KLT (Kernel-level threads), a transferência de controle entre as threads de um mesmo processo requer chaveamento para o modo usuário.
  4. DO gerenciamento de uma implementação de threads do tipo KLT (Kernel-level threads) é feito pelo kernel.
  5. EO gerenciamento de uma implementação de threads do tipo ULT (User-level threads) é feito no espaço de endereçamento do usuário.
Revelar gabarito e comentário

GabaritoC — Dentro da implementação do tipo KLT (Kernel-level threads), a transferência de controle entre as threads de um mesmo processo requer chaveamento para o modo usuário.

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: modelos de implementação ULT e KLT

Gabarito: letra C. A alternativa C está INCORRETA porque afirma que, na implementação KLT (Kernel-Level Threads), a transferência de controle entre threads de um mesmo processo requer chaveamento para o modo usuário — quando, na verdade, o chaveamento ocorre no modo kernel, pois o gerenciamento das threads é feito pelo núcleo do sistema operacional. As demais alternativas descrevem corretamente os conceitos de biblioteca de threads, ULT e KLT.

O conceito central desta questão é a distinção entre os dois principais modelos de implementação de threads: ULT (User-Level Threads) e KLT (Kernel-Level Threads). Essa distinção é fundamental em sistemas operacionais e aparece com frequência em provas de concursos da área de TI.

O que são threads? Uma thread é um fluxo de execução independente dentro de um processo. Um processo pode conter uma ou mais threads, que compartilham o mesmo espaço de endereçamento, arquivos abertos e outros recursos, mas cada uma possui seu próprio contexto de execução (registradores e pilha). As threads permitem que um programa realize múltiplas tarefas concorrentemente, melhorando o desempenho e a responsividade.

Modelo ULT (User-Level Threads): Nesse modelo, as threads são gerenciadas inteiramente no espaço do usuário, por meio de uma biblioteca de threads (como GNU Portable Threads, Green Threads do Java, ou UMS da Microsoft). O kernel não tem conhecimento da existência dessas threads — ele enxerga apenas um fluxo de execução por processo (modelo N:1). O chaveamento entre threads é feito pela própria biblioteca, sem necessidade de chamadas de sistema, o que o torna muito rápido. Vantagens: baixo custo de criação e chaveamento, e possibilidade de algoritmos de escalonamento customizados. Desvantagens: uma chamada de sistema bloqueante de uma thread bloqueia todo o processo, e não há paralelismo real em múltiplos núcleos.

Modelo KLT (Kernel-Level Threads): Nesse modelo, as threads são gerenciadas diretamente pelo kernel do sistema operacional. Cada thread é conhecida pelo núcleo, que realiza o escalonamento e o chaveamento entre elas. O chaveamento de contexto entre threads KLT exige a mudança para o modo kernel, o que é mais custoso que no modelo ULT, mas permite que uma thread bloqueada não bloqueie as demais do mesmo processo e possibilita o uso de múltiplos processadores. O modelo 1:1 (uma thread de usuário para uma thread de kernel) é o mais comum em sistemas modernos como Linux e Windows.

Modelo híbrido: Combina ULT e KLT, mapeando várias threads de usuário para um número menor de threads de kernel (modelo M:N). Busca aliar a eficiência do ULT com a capacidade de paralelismo do KLT.

A pegadinha desta questão está na inversão do modo de chaveamento: a banca troca o modo kernel pelo modo usuário na alternativa C. É uma armadilha clássica para confundir quem não domina a diferença entre os dois modelos.

Guarde a fronteira: ULT = gerenciamento no espaço do usuário, chaveamento sem privilégios do kernel; KLT = gerenciamento pelo kernel, chaveamento no modo kernel. É exatamente nessa fronteira que as alternativas se dividem.

Modelo

Gerenciamento

Chaveamento de contexto

Conhecimento pelo kernel

ULT (User-Level Threads)

Biblioteca de threads no espaço do usuário

Sem privilégios do kernel (modo usuário)

Não (kernel vê apenas o processo)

KLT (Kernel-Level Threads)

Kernel do sistema operacional

Requer chaveamento para o modo kernel

Sim (cada thread é conhecida)

Modelos de threads
  • 1ULT (nível de usuário)
    • Gerenciamento no espaço do usuário
    • Chaveamento sem privilégio do kernel
    • Biblioteca de threads
  • 2KLT (nível de kernel)
    • Gerenciamento pelo kernel
    • Chaveamento no modo kernel
    • Transferência de controle exige modo kernel
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta

A alternativa A afirma que o agrupamento de funções, dentro do nível de aplicação, que pode ser compartilhado por todas as aplicações é denominado biblioteca de threads. Isso está correto. Uma biblioteca de threads é um conjunto de funções que permite a criação, o gerenciamento e a sincronização de threads no espaço do usuário. Ela é compartilhada pelas aplicações que a utilizam, fornecendo as rotinas necessárias para a implementação de threads ULT.

Alternativa B — ✅ Correta

A alternativa B afirma que uma das vantagens da implementação ULT é que o chaveamento das threads não requer privilégios do kernel, pois todo o gerenciamento das estruturas de dados é feito dentro do espaço de um processo usuário. Isso está correto. No modelo ULT, a biblioteca de threads realiza o chaveamento diretamente no espaço do usuário, sem necessidade de chamadas de sistema ou mudança para o modo kernel. Isso torna o chaveamento mais rápido e eficiente.

Alternativa C — ❌ Incorreta ⟵ GABARITO

A alternativa C afirma que, na implementação KLT, a transferência de controle entre threads de um mesmo processo requer chaveamento para o modo usuário. Isso está incorreto. No modelo KLT, o gerenciamento das threads é feito pelo kernel, e o chaveamento entre threads envolve a mudança para o modo kernel, pois é o núcleo que realiza o escalonamento e a troca de contexto. A alternativa inverte o modo: o correto é que o chaveamento requer o modo kernel, não o modo usuário.

Alternativa D — ✅ Correta

A alternativa D afirma que o gerenciamento de uma implementação de threads do tipo KLT é feito pelo kernel. Isso está correto. No modelo KLT, o kernel é responsável por criar, escalonar e gerenciar as threads, mantendo uma tabela de threads no núcleo. Cada thread de usuário é mapeada para uma thread de kernel (modelo 1:1), e o kernel realiza o chaveamento entre elas.

Alternativa E — ✅ Correta

A alternativa E afirma que o gerenciamento de uma implementação de threads do tipo ULT é feito no espaço de endereçamento do usuário. Isso está correto. No modelo ULT, a biblioteca de threads opera inteiramente no espaço do usuário, sem intervenção do kernel. As estruturas de dados das threads (como tabelas de threads e pilhas) são mantidas no espaço de endereçamento do processo, e o escalonamento é feito pela própria biblioteca.

Conclusão: A alternativa C é a única incorreta, pois inverte o modo de chaveamento no modelo KLT. As demais alternativas estão corretas e descrevem adequadamente os conceitos de biblioteca de threads, ULT e KLT.

Gabarito: letra C

Link permanente: /questoes/qa632927