O que é um thread de usuário e um thread de kernel?

13

Eu sei o que é um thread e sei como eles funcionam, mas estou bastante confuso quanto ao que um thread de usuário e um thread de kernel são em termos do que eles podem fazer.

Você pode esclarecer o que um thread de usuário pode fazer e o que um thread de kernel pode fazer?

Fasih Khatib
fonte
1
Esta questão já foi respondida no SO: stackoverflow.com/questions/5957570/kernel-space-vs-user-space
Shadok:
Bem, a pergunta foi feita, mas não foi respondida corretamente. Tudo o que foi respondido pelas 5 ou 6 coisas que a pessoa perguntou foi sobre espaço do usuário e espaço do kernel.
Fasih Khatib
1
Eu acho que a definição de Dave Rager é conciso e preciso: "espaço Kernel e espaço do usuário é a separação das funções do sistema operacional privilegiados e os aplicativos de usuário restrito."
Shadok

Respostas:

13

Um encadeamento do kernel, às vezes chamado de LWP (Lightweight Process), é criado e agendado pelo kernel. Os threads do kernel geralmente são mais caros de criar do que os threads do usuário e as chamadas do sistema para criar diretamente os threads do kernel são muito específicas da plataforma.

Um encadeamento do usuário é normalmente criado por uma biblioteca de encadeamento e o planejamento é gerenciado pela própria biblioteca de encadeamento (que é executada no modo de usuário). Todos os threads do usuário pertencem ao processo que os criou. A vantagem dos threads do usuário é que eles são portáteis. A principal diferença pode ser vista ao usar sistemas multiprocessadores, os threads do usuário gerenciados completamente pela biblioteca de threading não podem ser executados em paralelo nas diferentes CPUs, embora isso signifique que eles funcionem bem em sistemas uniprocessadores. Como os threads do kernel usam o agendador do kernel, diferentes threads do kernel podem ser executados em diferentes CPUs. Muitos sistemas implementam threading de maneira diferente,

Um modelo de encadeamento muitos para um mapeia muitos processos do usuário diretamente para um encadeamento do kernel, o encadeamento do kernel pode ser considerado o processo principal. Um modelo de encadeamento um a um mapeia cada encadeamento do usuário diretamente em um encadeamento do kernel; esse modelo permite o processamento paralelo nos sistemas multiprocessadores. Cada encadeamento do kernel pode ser pensado como um VP (processo virtual), gerenciado pelo planejador.

Fonte: Respostas

Além disso, você pode encontrar informações na wikipedia, capítulo 3 - 3 Processos, threads do kernel, threads do usuário e fibras:

Fio

Jason Paddle
fonte
Não acho que seja uma boa ideia copiar aparentemente sem saber exatamente do que se trata o argumento e sem saber completamente a resposta. Um LWP geralmente não é criado no topo de um thread do kernel como uma ponte entre este último e o thread do usuário? Além disso, esta resposta é muito confuso porque mantém a mudança de terminologia, e no final você não entender, se, por exemplo, um thread do kernel é um processo, etc.
nbro