ユーザーレベルのスレッドをオペレーティングシステムカーネルに表示する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]