ページング機構は、メモリー管理方式の一種で、多くのCPUに採用されていて80系のCPUでは80386から採用されました。ページング機構は、オペレーティングシステムに密接に関係しており、仮想記憶、デマンドページング、コピーオンライトと言った機能を行うために不可欠な機能と言えるでしょう。
ページング機構は、メモリー管理方式の一種で、多くのCPUに採用されていて80系のCPUでは80386から採用されました。ページング機構は、オペレーティングシステムに密接に関係しており、仮想記憶、デマンドページング、コピーオンライトと言った機能を行うために不可欠な機能と言えるでしょう。
メモリー管理のもう一つの方式として、セグメント方式があります。セグメント方式では、物理メモリを任意の大きさに区切り管理する方法です。これとは異なり、ページング方式は物理メモリーを任意の固定サイズに区切り管理する方法です。
ページング方式では、物理ページをタスク(プロセス)単位の論理ページとして割り当てることができます。論理ページは、タスク(プロセス)毎に独立して設定することができ、設定したページはどのタスクからも0番地から始まるアドレスを占有しているように使うことが出来ます。また、割り当てる物理ページは連続している必要はなく、不連続な物理メモリーを連続した論理メモリーとしてアクセスする事が出来ます。
論理ページとして割り当てた場合、他のタスク(プロセス)のメモリをアクセスすることが出来ないので、タスク(プロセス)が暴走した時も、他のタスク(プロセス)のメモリに影響を与えることが無くなります。
デマンドページング [demand paging] とは、物理ページと論理ページの割り当てを、すぐには行わずに論理ページにアクセスが発生した時に物理ページの割当てを行う方式で、これを行うことにより物理メモリーの使用効率を効果的に行えます。
例えば、ヘルプだけを表示する為にコマンド実行した場合、全てのプログラムをメモリーに読込んでも実行されるコードは極僅かな範囲でしかありません。これではメモリとディスクからに読出しにかかる時間の無駄な消費です。デマンドページングでメモリを割当てを行った場合、実行する部分のページだけが物理メモリから割当てられる事になりますから、効率的にメモリを使用する事が出来ます。
デマンドページングは、アクセスが発生した時に物理ページの割当てを行うと言うことでしたが、これを行う為には「割当てを行っていないメモリにアクセスが発生した」事が検出、出来ないといけません。この検出を行うため、多くのCPUはページフォルトを通知する手段を何らかの形で持っています。
例えば、i386系のCPUでは、割当てを行っていないメモリにアクセスが発生した場合、ページフォルト例外と言う割込みが発生します。OSはこの割込みをトリガーに、ページの割当て処理を行うことになります。
デマンドページングの機能とディスク等の補助記憶装置を組み合わせる事により、実メモリ以上のメモリ空間を作ることが出来ます。これを仮想記憶と言います。
仮想記憶は次のような手順で実現することができます。
仮想記憶の実装はOSに依存するため、ページアウトの方法もOSにより異なりますが、「あまり使われない・将来使われる可能性が低いページ」を予測しページアウトするのが理想的です。これらを予測するアルゴリズムが幾つか存在します。