資料紹介: オペレーティング システムおよび PAE のサポート

確かにこれはすごかった.一部現在では成り立たない記述もありますが*1,教科書的な資料としては全く色あせず.
Windows で Large Page は「使える」か? - NyaRuRuの日記』で Large Page のページアウトをサポートすべきかどうかという話がありましたが,その辺の設計戦略に関係する記述もありました.やはりこの資料のオリジナルは,自分たちの選択の責任を自覚している中の人が書いているっぽいですね.

ページング

PAE をサポートする大半のオペレーティング システムは、4 GB を超える物理メモリに対して、何らかの仮想メモリ ページングをサポートします。これは通常、ブート/システム ページング ファイルを 4 GB に制限したり、ページング ファイルを複数のオペレーティング システム構成のボリューム (必ずしも物理スピンドルではない) に展開したりするなど、いくつかの制限付きで実現します。

これにより仮想メモリの明白な利点が得られますが、欠点は、下記の 1 つ以上の特性を持つアプリケーションへのパフォーマンスの影響です。

  • 大量の物理メモリを独自のデータ セットに使用している
  • 多くの I/O 処理が行われる
  • 大きな実行可能ワーキング セットがある

最後に、ページング サポートには通常、API セットの増加や、開発とバージョン移行の遅延という犠牲が伴います。

ページ サイズ

4 GB を超える物理メモリをアプリケーションに提供する場合、PAE をサポートするほぼすべてのオペレーティング システムは、さまざまなページ サイズを使用します。その主な例外は、Windows です。Windows は、IA32 プラットフォームで、4 KB ページしかアプリケーションに提供しません (これは Itanium ベースのプラットフォームでは異なります)。

さまざまなページ サイズをアプリケーションで使用する場合の問題点は、さまざまなメモリ割り当てサイズでアプリケーションが正しく機能するため必要な、追加の複雑さと関連しています。また、ほぼすべてのアプリケーションがページ サイズに関して行う基礎的な仮定によって生じる、微妙な影響とも関連しています。調査によると、少数のアプリケーションは、2 MB や 4 MB など、ページ サイズが大きいと利点があることが示されていますが、各 TLB エントリはより大きなアドレス範囲にわたっているので、一般的にアプリケーションにとって、大きなページ サイズによる利点はありません。

*1:この資料ではデスクトップ OS で Large Page Support はサポートされていないことになっていますが,これは Vista の登場で変わりました.