はじめに
第3回では、Windows NT 3.1 における プロセス管理モデル を解説します。NT のプロセス設計は UNIX とは大きく異なり、以降の Windows 系 OS の挙動を理解するうえで非常に重要なポイントです。
1. Windows NT のプロセス観
Windows NT において、プロセスは単なる「実行単位」ではありません。プロセスは リソースの入れ物 として設計されています。
プロセスが保持する主な要素は以下です。
- 仮想アドレス空間
- ハンドルテーブル
- アクセストークン(セキュリティコンテキスト)
- スレッドの集合
実際の CPU 実行単位はスレッドであり、プロセス自体はスケジューリングされません。
2. プロセスオブジェクト(EPROCESS)
NT 内部では、プロセスは オブジェクトマネージャ によって管理されるカーネルオブジェクトです。
- 内部構造体:EPROCESS
- オブジェクト型:Process
EPROCESS には以下のような情報が格納されます。
- ページディレクトリベース(アドレス空間)
- プロセス ID(Client ID)
- ハンドルテーブル
- セキュリティトークンへの参照
この「オブジェクトとしてのプロセス」という考え方が、NT の一貫した設計思想です。
3. UNIX との決定的な違い
UNIX 系 OS では、プロセスは fork によって親子関係を形成しますが、Windows NT では以下の特徴があります。
- 明確な親子関係を持たない
- プロセス生成は CreateProcess による明示的操作
- 親終了後も子プロセスは独立して存続可能
この設計により、
- GUI アプリケーション
- サービスプロセス
を柔軟に扱うことができました。
4. ジョブという概念
4.1 ジョブオブジェクトの思想
ジョブオブジェクトは、複数プロセスを 論理的なグループ としてまとめ、リソース制御を行うための仕組みです。
- CPU 使用率制限
- メモリ使用制限
- プロセス終了の一括制御
4.2 NT 3.1 における位置づけ
NT 3.1 では、ジョブの仕組みはまだ限定的でしたが、
- サーバ用途
- バッチ処理
を見据えた設計思想として既に存在していました。
この概念は後の Windows 2000 以降で本格的に活用されます。
5. プロセスとスレッドの関係
- プロセスはリソース管理単位
- スレッドは実行単位
1つのプロセスに複数スレッドを持たせることで、
- GUI 応答性の向上
- 並列処理
が可能になりました。
6. 第3回のまとめ
Windows NT 3.1 のプロセス設計は、
- オブジェクト指向的管理
- スレッド中心の実行モデル
- UNIX とは異なる柔軟なライフサイクル
という特徴を持っています。
次回は、NT の実行モデルの中核である 「スレッド」 とスケジューリング機構を詳しく解説します。

コメント