マルチスレッドのプログラミング

軽量プロセス (LPW)

スレッドライブラリは、カーネルによってサポートされる軽量プロセス (LWP) と呼ばれる制御スレッドを基礎としています。 LWP は、コードまたはシステムコールを実行する仮想 CPU と見なすことができます。

通常、スレッドを使用するプログラミングで LWP を意識する必要はありません。以下に述べる LWP の説明は、プロセススコープ (非結合スレッド)で述べるスケジューリングスコープの違いを理解する際の参考にしてください。

fopen() や fread() などの stdio ライブラリルーチンが open() や read() などのシステムコールを使用するのと同じように、スレッドインタフェースも LWP インタフェースを使用します。

軽量プロセス (LWP) はユーザーレベルとカーネルレベルの橋渡しをします。各プロセスは、1 つ以上の LWP で構成されます。各 LWP は、1 つ以上のユーザースレッドを実行します (図 1–1 を参照)。

図 1–1 ユーザーレベルスレッドと軽量プロセス

軽量プロセス (LWP)、ユーザレベル、およびカーネルレベルの関係を示しています。

各 LWP はカーネルプールの中のカーネルリソースであり、スレッドに割り当てられ たり、割り当てを解除されたりします。