
Existem variantes do UNIX ou outro sistema operacional que tornam os threads de nível de usuário visíveis para o kernel do sistema operacional?
Responder1
Acho que o que você está perguntando é se os threads de usuário são entidades agendáveis no kernel. Se o thread do usuário está "visível" para o kernel depende do mapeamento entre usuário -> kernel, que depende do modelo usado. Existem vários modelos de rosqueamento -
- mx1 - todos os threads do usuário são mapeados para 1 thread do kernel
- mxn - m threads são mapeados para n threads do kernel.
- 1x1 - 1 thread de usuário mapeia para 1 thread de kernel
[https://www.kernel.org/doc/ols/2002/ols2002-pages-330-337.pdf][1]para obter informações sobre modelos de threading.
O modelo de threading padrão no Linux (<glibc 2.4)
éLinuxThreadsque usou 1x1. Cada thread tem um pid diferente aqui. LinuxThreads não era compatível com posix, então um novo modelo de threading foi implementado -NPTL (man pthreads(7) for more info)
. EmNPTL(1x1), todos os threads de usuário em um processo têm o mesmo pid, mas possuem IDs de thread exclusivos. Eles podem ser vistos usando o sinalizador -L no ps(man ps(1))
bom artigo sobre NPTL - [https://www.redhat.com/whitepapers/developer/POSIX_Linux_Threading.pdf][2]