web-dev-qa-db-ja.com

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

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

ユーザースレッドが実行できることとカーネルスレッドが実行できることを明確にしていただけませんか?

13
Fasih Khatib

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

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

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

出典: 回答

また、Wikipediaの第3章から第3章のプロセス、カーネルスレッド、ユーザースレッド、ファイバーにも情報があります。

スレッド

13
Jason Paddle