技術的には、仮想記憶を使うことにより、ソフトウェアが動作するメモリアドレス空間のサイズとアドレス範囲は当該コンピュータの物理メモリ領域には必ずしも縛られなくなる。仮想記憶を適切に実装するには、CPU（あるいはそれに付随するデバイス）がOSに対して仮想メモリを物理メモリにマップする（対応付ける）手段を提供し、主記憶（物理メモリ）に対応していない仮想アドレスにアクセスしたことを検出する手段を提供して必要なデータをスワップインできるようにしなければならない。CPUの支援なしで仮想記憶を提供することも可能だが、その場合は上述の機能を提供するCPUをエミュレートするだけであって、本質的には同じことである。アドビの一部のアプリケーションのように、アプリケーションプログラムが自前で仮想記憶機構を持つ例もある。
背景.
まず、以下の議論の前提とする、簡略化した典型的な記憶装置の階層構造のモデルを述べる。
主記憶装置とキャッシュメモリのどちらを使用するかは、一般にハードウェアに任せられているため、プログラマからはどちらも同じ物理メモリとしてしか見えない（しかし性能への影響は大きいので、高性能計算など、キャッシュヒット率を考慮してコードを書くこともある）。ハードウェアの動作としては、まずキャッシュメモリをアクセスし、さらに必要ならキャッシュメモリと主記憶とのやり取りを行う。
多くのアプリケーションは、情報（実行ファイルの命令列やデータ）がなるべく物理メモリ上に格納された状態でアクセスできることを要求する。これは特に見かけ上並列に複数のプロセス/アプリケーションを同時実行するオペレーティングシステムでは重要となる。全実行中プログラムが必要とする物理メモリ量が実装されている物理メモリ量より大きい場合、当然の結果として情報の一部をディスクに退避し、必要に応じてその内容を物理メモリに戻して使用することになる。しかし、これを実現する手法は様々である。