私はスレッドが何であるかを知っており、それらがどのように機能するかを知っていますが、ユーザースレッドとカーネルスレッドが何を許可されているかという点で私はかなり混乱しています。
ユーザースレッドができることとカーネルスレッドができることを明確にしてください。
私はスレッドが何であるかを知っており、それらがどのように機能するかを知っていますが、ユーザースレッドとカーネルスレッドが何を許可されているかという点で私はかなり混乱しています。
ユーザースレッドができることとカーネルスレッドができることを明確にしてください。
回答:
カーネルスレッドは、LWP(ライトウェイトプロセス)と呼ばれることもあり、カーネルによって作成およびスケジュールされます。カーネルスレッドは、多くの場合、ユーザースレッドよりも作成コストが高く、カーネルスレッドを直接作成するシステムコールは、プラットフォーム固有です。
通常、ユーザースレッドはスレッドライブラリによって作成され、スケジューリングはスレッドライブラリ自体によって管理されます(ユーザーモードで実行されます)。すべてのユーザースレッドは、それらを作成したプロセスに属します。ユーザースレッドの利点は、移植性があることです。主な違いは、マルチプロセッサシステムを使用する場合に見られます。スレッドライブラリによって完全に管理されるユーザースレッドは、異なるCPUで並列に実行できませんが、これは、ユニプロセッサシステムで正常に実行されることを意味します。カーネルスレッドはカーネルスケジューラを使用するため、異なるCPUで異なるカーネルスレッドを実行できます。多くのシステムでは、スレッドの実装方法が異なります。
多対1のスレッドモデルは、多くのユーザープロセスを1つのカーネルスレッドに直接マップします。カーネルスレッドはメインプロセスと考えることができます。1対1のスレッドモデルは、各ユーザースレッドを1つのカーネルスレッドに直接マップします。このモデルにより、マルチプロセッサシステムでの並列処理が可能になります。各カーネルスレッドは、スケジューラによって管理されるVP(仮想プロセス)と考えることができます。
ソース: 回答
また、ウィキペディアの第3章から第3章のプロセス、カーネルスレッド、ユーザースレッド、およびファイバーにも情報があります。