デマンドページング(デマンドページング)とは | 意味や読み方など丁寧でわかりやすい用語解説
デマンドページング(デマンドページング)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
デマンドページング (デマンドページング)
英語表記
demand paging (デマンドページング)
用語解説
デマンドページングは、コンピュータのオペレーティングシステム(OS)がプログラムを実行する際に、主記憶(RAM)を効率的に管理するための重要な仕組みの一つである。これは仮想記憶システムの一部として機能し、物理メモリの制約を超えてプログラムを実行可能にする技術である。
コンピュータは、プログラムやデータを一時的に保存するために主記憶(ランダムアクセスメモリ、RAM)を使用する。しかし、主記憶の容量には限りがあり、実行したい全てのプログラムやデータが主記憶に収まりきらない場合がある。また、プログラムの中には、その全てのコードやデータが実行中に常に必要とされるわけではないものも多い。そこで、仮想記憶システムが導入された。仮想記憶は、プログラムに対して、実際の物理メモリよりもはるかに大きな連続したメモリ空間が存在するかのように見せかける技術である。
仮想記憶を実現する方法の一つにページング方式がある。ページング方式では、プログラムの論理アドレス空間と物理メモリ空間の両方を、固定された小さなブロック(ページと呼ばれる)に分割する。通常、これらのページのサイズは数キロバイトである(例えば4KBや8KBなど)。プログラムが実行される際には、そのプログラムのページが物理メモリの空いているページフレームにロードされる。
デマンドページングは、このページング方式をさらに洗練させたものである。「デマンド(Demand)」という言葉が示す通り、「要求された時に」ページを主記憶に読み込む方式を指す。具体的には、プログラムが実行を開始する時点では、そのプログラムが使用する全てのページを主記憶に読み込むのではなく、最初に必要となる最小限のページ、あるいは全くページを読み込まずに実行を開始する。
プログラムが実行され、あるアドレスにあるデータや命令にアクセスしようとしたとする。その際、OSは「ページテーブル」と呼ばれる管理表を参照し、アクセスしようとしているページが現在主記憶内のどの物理アドレスにあるか、あるいは主記憶内に存在するかどうかを確認する。もし、そのページが現在主記憶内に存在しない場合、これを「ページフォールト(Page Fault)」と呼ぶ。
ページフォールトが発生すると、CPUは通常のプログラム実行を中断し、OSに制御が移る。OSは、ページテーブルから、どのページが必要とされているのか、そしてそのページが補助記憶装置(通常はハードディスクドライブやソリッドステートドライブなどのストレージ)のどこに保存されているのかを特定する。次に、OSはその必要なページを補助記憶装置から探し出し、主記憶の空いているページフレームに読み込む。このディスクからの読み込み処理は、主記憶へのアクセスに比べて非常に時間がかかる操作である。ページが主記憶に読み込まれた後、OSはページテーブルを更新し、そのページが主記憶のどこに存在するかという情報を記録する。最後に、OSは中断されていたプログラムの実行を、ページフォールトが発生した命令から再開させる。この一連の処理が、デマンドページングの核心部分である。
デマンドページングの大きな利点はいくつかある。第一に、主記憶の効率的な利用である。実際に使用されるページだけが主記憶に読み込まれるため、物理メモリを無駄なく使うことができる。これにより、限られた主記憶の容量で、より多くのプログラムを同時に実行したり、個々のプログラムが物理メモリのサイズを超える仮想アドレス空間を利用したりすることが可能になる。第二に、プログラムの起動時間の短縮である。プログラムの全ページを一度に読み込む必要がないため、起動時に必要な最小限のページだけを読み込むことで、プログラムの開始をより迅速に行える場合がある。第三に、システムの多重プログラミング能力の向上である。多くのプログラムが同時に稼働している環境でも、それぞれのプログラムが消費する主記憶量を抑えることで、より多くのプログラムをスムーズに切り替えながら実行できるようになる。
しかし、デマンドページングには課題も存在する。最大の課題は、ページフォールトが発生した際の性能オーバーヘッドである。ページフォールトが発生すると、補助記憶装置へのアクセスが発生するため、CPUの処理速度に比べて非常に遅いディスクI/Oが原因で、システム全体の処理が一時的に停止したり、大幅に遅延したりする。このようなディスクアクセスが頻繁に発生すると、システムは主記憶と補助記憶の間でページの入れ替えばかりを行うようになり、実質的な処理が進まない状態に陥ることがある。この現象を「スラッシング(Thrashing)」と呼ぶ。スラッシングが発生すると、CPU使用率は高くなるものの、実際の有用な処理はほとんど行われず、システムのパフォーマンスは著しく低下する。この問題を軽減するためには、OSはどのページを主記憶から追い出すかを決定する「ページ置換アルゴリズム」を適切に選択する必要がある。例えば、最近最も使われていないページを追い出すLRU(Least Recently Used)アルゴリズムや、将来最も使われないと予測されるページを追い出すアルゴリズムなどが存在する。
このように、デマンドページングは、主記憶を効率的に活用し、現代の多機能なコンピュータシステムにおいて、限られたリソースで多くのプログラムを快適に動作させるための基盤となる重要な技術である。その恩恵は大きいが、ページフォールトの発生頻度やページ置換アルゴリズムの選択がシステム全体のパフォーマンスに大きく影響するため、OSはこれらの要素を常に最適化するように設計されている。