仮想記憶
ハードウェアの動作としては、まずキャッシュメモリをアクセスし、さらに必要ならキャッシュメモリと主記憶とのやり取りを行う。
多くのアプリケーションは、情報(実行ファイルの命令列やデータ)がなるべく物理メモリ上に格納された状態でアクセスできることを要求する。これは特に見かけ上並列に複数のプロセス/アプリケーションを同時実行するオペレーティングシステムでは重要となる。全実行中プログラムが必要とする物理メモリ量が実装されている物理メモリ量より大きい場合、当然の結果として情報の一部をディスクに退避し、必要に応じてその内容を物理メモリに戻して使用することになる。しかし、これを実現する手法は様々である。
ひとつの方法として、アプリケーション自身が物理メモリ上に置くべき情報の範囲を決定し、補助記憶装置との情報のやりとりも制御することが考えられる。プログラマはプログラム(およびデータ)のどの部分が現時点で必要か不必要かを判断し、それらの領域の物理メモリへのロード(あるいはアンロード)を必要に応じて行わなければならないだろう。この手法の欠点は、各アプリケーションのプログラマがそのような設計/実装/デバッグに時間を費やす必要がある点であり、アプリケーションそのものに集中できなくなってプログラミング効率が低下する。また、あるプログラマがある時点で物理メモリ上に置くべきデータなどを決定しても、それが例えば、どうしても全物理メモリが必要となった場合など、他のプログラマの決定と衝突してしまう危険がある。
積極的なクリーニングは仮想記憶を実装するページ置換アルゴリズムの一つで、CPUの余剰時間を使ってページ内容をディスクに書き出しクリーンな状態にしておき、ページが必要になった時に短時間でページを再利用する手法である。勿論クリーンな状態のページ内容そのものが必要になった時には、ページファイル上のページ内容を無視するだけで良いので、オーバーヘッドは発生しない。
Windows XP以降ではページファイルを使用しないオプションが選択できる。もちろんこれは物理メモリの容量が十分に足りている場合(かつ、ページファイル必須アプリケーション運用を必要としない場合)にのみ選択すべきオプションである。ページファイルを使用しない場合、ほとんど使用されない常駐ソフトなどのデータをスワップアウトすることができなくなるので、キャッシュとして使える物理メモリの空き領域が減ってパフォーマンスが低下することがある。いくつかのアプリケーションが動作しなくなったり、システム機能が効率的に動作しなくなったり、といったことも発生しうる。しかし、ファイルを読み書きするI/Oアクセスが起こらないため、パフォーマンスを落とさないというメリットがある。
32ビット版Windowsでは、バージョンおよびエディションにも左右されるが、ページングファイルのサイズは最大36ビットのアドレス空間すなわち64GiBまでサポートされる。
仮想アドレスから物理アドレスへの変換はメモリ管理ユニット (MMU) というハードウェア装置によって実装されている。これはCPUに内蔵されたモジュールの場合もあるし、外付けでCPUに密結合された別のチップの場合もある。これを動的アドレス変換機構 (DAT : Dynamic Address Translation) と呼ぶ。
OSは、プログラムの仮想アドレス空間のどの部分を物理メモリに保持するかを決定する。OSは、MMUが使用する仮想アドレスから物理アドレスへの変換テーブルも管理する。さらに仮想メモリ例外が発生したら、OSはそれを解決するために物理メモリ領域を確保し、必要なら元の内容をディスクに追い出した上で新たに必要とされている情報をディスクから持ってきて、変換テーブルを更新し、例外発生したソフトウェアの実行を再開する。
多くのコンピュータでは、この変換テーブルは物理メモリに格納されている。従って仮想メモリを参照すると、本来の参照以外に変換テーブルの参照が(変換テーブルの構成によっては複数回)発生する。このアドレス変換による性能低下を低減するため、ほとんどのMMUはよく使われる仮想ページに高速にアクセスできるよう、最近使われた仮想アドレスとそれに対応する物理アドレスを保持しておくテーブルを持っている。これをトランスレーション・ルックアサイド・バッファ(TLB)と呼ぶ。