仮想記憶
macOSではUnix系をベースとしたことで仮想メモリは常に使用するようになっており、複数のスワップファイルを使用できる。デフォルト(かつアップルの推奨)ではルートパーティションに配置されるが、他のパーティションやデバイスに置くこともできる。
コンピュータの起動時から64MBのスワップファイルが1つ作成されている。場所は/private/var/vm/以下で、swapfilenという名前がつけられている(nは0からの数字)。容量が不足するとスワップファイルは自動的に追加される。swapfile1までは64MB、以降のスワップファイルのサイズは128MB、256MB...と8の倍数で増えるのが基本だが、メモリの最大容量・ハードディスクの空き容量の1/4・1GBのいずれか小さい方を選択し容量が決定する。ひとつのスワップファイルが大きくなるのではなく複数のファイルが作成される。すなわちスワップファイルが4つなら64+64+128+256で合計512MBとなる。スワップファイルの場所はコマンドライン操作などで他のデバイスに変更できる。
スワップファイルを削除するアプリケーションも存在し、これを用いなくとも削除できる(ただし、削除後は再起動するのが望ましい)。また、一旦ログアウトしてからログインしなおすと再起動することなく削除できる。
macOSでは多重仮想記憶がサポートされ、仮想空間はプロセス毎に資源が分離されている。この違いが、Classic Mac OSとmacOSでの仮想記憶に対する信頼性の違いとなって現れている。
仮想記憶は、必須ではないものの通常ページング方式を使って実装される。ページングでは仮想アドレスを表すビット列の下位ビット列部分はそのまま物理アドレスの下位ビット列部分として使われる。上位ビット列部分はアドレス変換テーブル(群)のキーとして使用され、それによって実際の物理アドレスの上位ビット部分を得る。
このため、サイズが2の冪乗の仮想アドレス空間の連続したアドレス範囲が、対応する連続な物理アドレス範囲に変換される。そのような範囲で参照されるメモリをページと呼ぶ。ページサイズは512バイトから8192バイトが一般的であり、特に4096バイトが最もよく使われるが、特殊用途として4Mバイトやそれ以上のサイズのページも使われることがある。
オペレーティングシステムは、ページテーブルと呼ばれるデータ構造にアドレス変換テーブル、つまり仮想ページ番号と物理ページ番号のマッピング情報を格納する。
あるページが使用不可とされている場合(物理メモリに対応しておらず、スワップ領域に内容がある場合など)、CPUがそのページ内のメモリ位置を参照しようとしたとき、ハードウェアの機構がオペレーティングシステムに、一般にページフォールトと呼ばれる例外を通知する。これにより実行コンテキストはオペレーティングシステム内の例外処理ルーチンにジャンプする。