
Существуют ли варианты UNIX или других ОС, которые делают потоки пользовательского уровня видимыми для ядра ОС?
решение1
Я думаю, вы спрашиваете, являются ли пользовательские потоки планируемыми сущностями в ядре. Является ли пользовательский поток "видимым" для ядра, зависит от отображения между пользователем -> ядром, которое зависит от используемой модели. Существуют различные модели потоков -
- mx1 — все пользовательские потоки отображаются в 1 поток ядра
- mxn - m потоков сопоставляются с n потоками ядра.
- 1x1 — 1 пользовательский поток соответствует 1 потоку ядра
[https://www.kernel.org/doc/ols/2002/ols2002-pages-330-337.pdf][1]для получения информации о моделях резьбы.
Модель потоков по умолчанию в Linux (<glibc 2.4)
:LinuxThreadsкоторый использовал 1x1. У каждого потока здесь свой pid. LinuxThreads не был совместим с posix, поэтому была реализована новая модель потоков -НПТЛ (man pthreads(7) for more info)
. ВНПТЛ(1x1), все пользовательские потоки в процессе имеют одинаковый pid, но уникальные идентификаторы потоков. Их можно увидеть с помощью флага -L в ps(man ps(1))
хорошая статья о NPTL -- [https://www.redhat.com/whitepapers/developer/POSIX_Linux_Threading.pdf][2]