表 1–1 では、このマニュアルで使用する用語の一部について解説します。
表 1–1 マルチスレッドに関する用語の定義
用語 |
定義 |
---|---|
プロセス |
fork(2) システムコールで生成される UNIX 環境 (ファイル記述子やユーザー ID などのコンテキスト) で、プログラムを実行するために設定されます。 |
スレッド |
プロセスのコンテキスト内で実行されるひとまとまりの命令。 |
POSIX pthreads |
POSIX スレッドに準拠したスレッドインタフェース。詳細については、「Solaris のマルチスレッドライブラリと標準」を参照してください。 |
Solaris スレッド |
POSIX スレッドに準拠しない、Sun Microsystems のスレッドインタフェース。pthread の祖先。 |
1 プロセス 1 スレッドで動作させること。実行は逐次処理で行われ、制御スレッドが 1 つに制限されます。 |
|
1 プロセス複数スレッドで動作させること。実行は複数の制御スレッドで行われ、並列または並行処理が使用されます。 |
|
(カーネル空間に対応する) ユーザー空間のスレッドルーチンによって管理されるスレッド。ユーザースレッドの作成および処理には、POSIX pthread や Solaris スレッドの API が使用されます。このマニュアルでは (また一般にも)、スレッドとはユーザーレベルのスレッドを指します。 注 – このマニュアルはアプリケーションプログラマ向けであるため、カーネルスレッドのプログラミングについては触れません。 |
|
カーネルコードとシステムコールを実行するカーネルスレッド (LWP)。LWP はシステムスレッドのスケジューラによって管理され、アプリケーションプログラマが直接制御することはできません。Solaris 9 以降、ユーザーレベルのすべてのスレッドに専用の LWP が用意されるようになりました。これは 1:1 スレッドモデルとも呼ばれます。 |
|
Solaris 9 より前の、単一の LWP に永続的に結合されたユーザーレベルのスレッド。Solaris 9 以降は、すべてのスレッドに専用の LWP が用意されるようになったため、すべてのスレッドが結合スレッドです。非結合スレッドの概念は存在しなくなりました。 |
|
Solaris 9 より前の、単一の LWP に結合されているとは限らないユーザーレベルのスレッド。Solaris 9 以降は、すべてのスレッドに専用の LWP が用意されるようになったため、非結合スレッドの概念は存在しなくなりました。 |
|
属性オブジェクト |
不透明なデータ型と関連操作のための関数が含まれます。これらのデータ型および関数は、POSIX スレッド、相互排他ロック (mutex)、条件変数の調整可能な部分を共通化するために使用されます。 |
共有データへのアクセスをロック / ロック解除するために使用されるオブジェクト。このようなオブジェクトは mutex とも呼ばれます。 |
|
条件変数 |
状態が変化するまでスレッドをブロックするために使用されるオブジェクト。 |
読み取り/書き込みロック |
共有データに対して複数の読み取り専用アクセスを許可するが、共有データを変更する場合は排他的アクセスを許可するために使用されるオブジェクト。 |
複数のスレッドからの共有リソースへのアクセスを調整するために 0 以上の整数カウントが使用される、メモリーベースの同期機構。 |
|
並列性 |
2 つ以上のスレッドが同時に実行されている状態を表す概念。 |
並行性 |
2 つ以上のスレッドが進行過程にある状態を表す概念。仮想的な並列性としてタイムスライスを包含する、一般化された形の並列性。 |