
是否有 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)
是Linux執行緒其中使用了 1x1。這裡每個線程都有不同的pid。 LinuxThreads 與 posix 不相容,因此實作了新的線程模型 -NPTL (man pthreads(7) for more info)
。在NPTL(1x1),進程中的所有使用者執行緒都具有相同的 pid,但具有唯一的執行緒 id。這些可以使用 ps 中的 -L 標誌來查看(man ps(1))
關於 NPTL 的好文章 -- [https://www.redhat.com/whitepapers/developer/POSIX_Linux_Threading.pdf][2]