第3回: プロセスとジョブ

はじめに

第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 の実行モデルの中核である 「スレッド」 とスケジューリング機構を詳しく解説します。

コメント

タイトルとURLをコピーしました