Questão de Sistemas Operacionais — Threads (SO) — INSTITUTO AOCP 2024
Sistemas Operacionais›Threads (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.
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.
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.
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.
DO gerenciamento de uma implementação de threads do tipo KLT (Kernel-level threads) é feito pelo kernel.
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.