カーネル・スレッドとユーザー・スレッド
カーネル・スレッドはスケジュール可能なエンティティーで、 これは、システム・スケジューラーがカーネル・スレッドを扱うということを意味します。
これらのスレッドはシステム・スケジューラーが知っており、 インプリメンテーションに強く依存しています。 移植性のあるプログラムの作成を容易にするために、 ライブラリーではユーザー・スレッドが提供されています。
カーネル・スレッド は、 プロセスや割り込みハンドラーと同様にカーネル・エンティティーであり、 システム・スケジューラーによって処理されるエンティティーです。 カーネル・スレッドは、プロセス内で実行しますが、 システム内の他のどのスレッドからも参照できます。 カーネル・エクステンションまたはデバイス・ドライバーの作成中でなければ、プログラマーは、これらのスレッドを直接制御することはできません。 カーネル・プログラミングについて詳しくは、「 カーネル・エクステンション機能とデバイス・サポート・プログラミングの概念」を参照してください。
ユーザー・スレッド は、 プログラマーが 1 つのプログラム内で複数の制御の流れを処理するために使用するエンティティーです。 ユーザー・スレッドを処理するための API は、スレッド・ライブラリー によって提供されます。 ユーザー・スレッドはプロセス内にのみ存在します。プロセス A 内のユーザー・スレッドは、プロセス B内のユーザー・スレッドを参照できません。 ライブラリは独自のインタフェースを使用して、ユーザー・スレッドを実行するためのカーネル・スレッドを処理します。 ユーザー・スレッド API は、カーネル・スレッド・インターフェースと異なり、POSIX 標準に準拠した移植可能プログラミング・モデルの一部です。 したがって、AIX®システムで開発されたマルチスレッドプログラムは、他のシステムに簡単に移植することができる。
他のシステムでは、ユーザー・スレッドは単にスレッド と呼ばれ、 軽量プロセス はカーネル・スレッドを示します。