ユーザースレッドとカーネルスレッドとは何ですか?


13

私はスレッドが何であるかを知っており、それらがどのように機能するかを知っていますが、ユーザースレッドカーネルスレッドが何を許可されているかという点で私はかなり混乱しています。

ユーザースレッドができることとカーネルスレッドができることを明確にしてください。


1
この質問は既にSOで回答されています:stackoverflow.com/questions/5957570/kernel-space-vs-user-space
Shadok

質問は尋ねられましたが、適切に回答されていません。ユーザーが尋ねた5つまたは6つのことから答えられたのは、ユーザー空間とカーネル空間に関することだけでした。
ファシィ・カティブ

1
Dave Ragerの定義は簡潔で正確だと思います。「カーネルスペースとユーザースペースは、特権オペレーティングシステムの機能と制限されたユーザーアプリケーションの分離です。」
Shadok

回答:


13

カーネルスレッドは、LWP(ライトウェイトプロセス)と呼ばれることもあり、カーネルによって作成およびスケジュールされます。カーネルスレッドは、多くの場合、ユーザースレッドよりも作成コストが高く、カーネルスレッドを直接作成するシステムコールは、プラットフォーム固有です。

通常、ユーザースレッドはスレッドライブラリによって作成され、スケジューリングはスレッドライブラリ自体によって管理されます(ユーザーモードで実行されます)。すべてのユーザースレッドは、それらを作成したプロセスに属します。ユーザースレッドの利点は、移植性があることです。主な違いは、マルチプロセッサシステムを使用する場合に見られます。スレッドライブラリによって完全に管理されるユーザースレッドは、異なるCPUで並列に実行できませんが、これは、ユニプロセッサシステムで正常に実行されることを意味します。カーネルスレッドはカーネルスケジューラを使用するため、異なるCPUで異なるカーネルスレッドを実行できます。多くのシステムでは、スレッドの実装方法が異なります。

多対1のスレッドモデルは、多くのユーザープロセスを1つのカーネルスレッドに直接マップします。カーネルスレッドはメインプロセスと考えることができます。1対1のスレッドモデルは、各ユーザースレッドを1つのカーネルスレッドに直接マップします。このモデルにより、マルチプロセッサシステムでの並列処理が可能になります。各カーネルスレッドは、スケジューラによって管理されるVP(仮想プロセス)と考えることができます。

ソース: 回答

また、ウィキペディアの第3章から第3章のプロセス、カーネルスレッド、ユーザースレッド、およびファイバーにも情報があります。


議論が実際に何であるかを正確に知らずに、答えを完全に知らずにコピーするのは良い考えではないと思います。LWPは通常、この最後のスレッドとユーザースレッドの間のブリッジとしてカーネルスレッドの上に作成されませんか?また、この答えは用語を切り替え続けているため、非常に混乱を招きます。最後に、たとえばカーネルスレッドがプロセスなどであるかどうかがわかりません
。– nbro
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.