
ユーザー レベルのスレッドを OS カーネルから見えるようにする UNIX バリアントまたはその他の OS はありますか?
答え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]