スレッド オブジェクトの概要
ユーザー モード スレッド オブジェクトは、現在のプロセス内での実行パスを表します。 すべてのユーザー モード スレッド オブジェクトは、埋め込まれたカーネル モード スレッド オブジェクトを使用して実装されます。
カーネル モード スレッド オブジェクトは、カーネルで定義されたディスパッチャー オブジェクト型のインスタンスです。 スレッド オブジェクトが表すスレッドは、オペレーティング システムのスケジューリング可能な基本エンティティです。
スレッド オブジェクトは
実行のためににカーネルによってディスパッチされます。
任意の時点で次のプロパティを持ちます。
dispatch state
priority
context
実行モード (kernel または user)
アフィニティ
プロセス オブジェクトによって "所有" されますが、別のプロセスのアドレス空間に自身をアタッチできます。
通常、ほとんどのドライバーは、現在実行中のスレッドのコンテキスト、つまり任意のスレッド コンテキストで実行されます。 ファイル システム ドライバーは、それ自身のデバイス専用スレッドの独立したプロセスを作成できますが、ファイル システムは通常、システム メモリを節約し、コンテキスト スイッチのオーバーヘッドを回避するために、ドライバーによって作成されたプロセスとスレッドの設定を避けます。
FS (およびその他のドライバー) は、実行するドライバー固有のスレッド コンテキストが必要な場合は、デバイス専用 (システム プロセス) スレッドを設定でき、また、システム ワーカー スレッドを使用することもできます。 ドライバーは、カーネル モード PsXxx ルーチンを使用して、プロセスやデバイス専用のスレッドを作成します。 FS は、ExXxx ルーチンを呼び出して、システム ワーカー スレッドを使用します。