ページング方式
仮想記憶のバッキングストアはRAMに比べると何十倍も遅い。しかも機械的可動部分があるとさらに遅延が生じ、ハードディスクでは数ミリ秒単位の遅延になることもある。したがってスワッピング(ページアウト)は発生させないに越したことはない。OSによってはカーネルのそのあたりの動作に影響する設定が可能なものもある。
Linuxでは /proc/sys/vm/swappiness というパラメータがあり、値を大きく設定するほど積極的なページアウト(空きページフレームを作る)を行う。
Windowsでは DisablePagingExecutive というレジストリ設定があり、カーネルモードのコードやデータをページアウトの対象外とするか否かを指定できる。
メインフレームでは、シーク時間を除去すべくトラック毎にヘッドのある磁気ディスクや磁気ドラムをページングに使用し、回転レイテンシを削減すべく同一デバイスに複数の要求を同時に発行する技法を使っている。
スワップ・プリフェッチとも呼ばれる技法で、(参照の局所性を利用して)近い将来参照されると予測したページを事前にロードしておく。プロセスが経験するページフォールト回数を減らす試みである。例えば、ある参照でページフォールトが発生したとき、連続する数ページにもすぐに参照するだろうと予測してまとめてロードしておく、といった戦略がある。また、ある大きなプログラムが終了して多くのメモリを解放したとき、ページアウトされていた他のプログラムがメモリを必要とするだろうと予測して、事前にページインしておくといった戦略もある。
UNIXでは、sync(英語版) を使って定期的に全ダーティページを書き戻してクリーンな状態にする。Windowsでは、"modified page writer" というスレッドが同じことを行っている。
事前クリーニングにより、プログラムの起動や新たなファイルのオープンが高速化される。
一部のオペレーティングシステムは、定期的に最近使われていないページを探し、それらをフリーページのキューに追加し、当該ページが更新されていたら(ダーティな場合)、ページアウト処理を行っておく。すると、ページフォールト時に空のページフレームがないということがなく、ページアウトを行う必要がなくなる。