Существуют ли варианты UNIX или других ОС, которые делают потоки пользовательского уровня видимыми для ядра ОС?

Существуют ли варианты UNIX или других ОС, которые делают потоки пользовательского уровня видимыми для ядра ОС?

Существуют ли варианты 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]

Связанный контент