第5回: メモリ管理

はじめに

第5回では、Windows NT 3.1 の メモリ管理機構 を解説します。NT の仮想メモリ設計は、安定性・性能・拡張性のバランスを強く意識したものであり、現代 Windows の基礎となっています。


1. 仮想メモリという前提

Windows NT は、すべてのプロセスが 仮想アドレス空間 上で動作することを前提に設計されています。

  • プロセスごとに独立したアドレス空間
  • 物理メモリの存在をアプリケーションから隠蔽

これにより、

  • メモリ破壊による OS 全体のクラッシュ防止
  • マルチタスク環境での安全な並行実行

が実現されました。


2. 仮想アドレス空間の構成

2.1 4GB 仮想アドレス空間

32bit NT では、1 プロセスあたり 4GB の仮想アドレス空間 が割り当てられます。

  • 下位 2GB:ユーザーモード
  • 上位 2GB:カーネルモード

この分割により、

  • カーネルの常駐
  • ユーザープロセスからの保護

が可能になります。

2.2 カーネル空間の共有

カーネル空間は、すべてのプロセス間で共通です。

  • コンテキストスイッチ時もマッピング維持
  • 高速なカーネル呼び出しを実現

3. ページングとワーキングセット

3.1 ページ単位管理

  • ページサイズ:4KB
  • 仮想ページと物理ページの対応管理

3.2 ワーキングセット

ワーキングセットとは、

プロセスが現在物理メモリ上に保持しているページ集合

を指します。

  • 最小・最大ワーキングセットサイズ
  • メモリ圧迫時のページトリミング

4. ページフォールト処理

4.1 ソフトフォールト

  • ページは既に物理メモリ上に存在
  • ページテーブル更新のみで解決

4.2 ハードフォールト

  • ディスク(ページファイル)からの読み込みが必要
  • 性能に大きく影響

NT はフォールト種別を厳密に管理し、無駄な I/O を最小化します。


5. セクションオブジェクト

5.1 メモリマップトファイル

NT では、ファイルは セクションオブジェクト を通じてメモリにマップされます。

  • 実行ファイル(EXE / DLL)のロード
  • 複数プロセス間でのコード共有

5.2 Copy-on-Write

  • 書き込み時のみページを複製
  • メモリ使用量を最小化

6. 第5回のまとめ

Windows NT 3.1 のメモリ管理は、

  • 仮想メモリ前提の堅牢設計
  • ワーキングセットによる動的制御
  • セクションオブジェクトによる効率的共有

という特徴を持っています。

次回は、これらのメモリ機構と密接に関わる 「I/O システム」 を解説します。

コメント

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