Linuxは、物理メモリの領域をページという単位に分割して処理する。スワップ処理とは、ハードディスク上にあらかじめ設定した空間(これをスワップ空間と呼ぶ)にページ単位でメモリ上のデータをコピーし、そのページのメモリ領域を解放する処理をいう。物理メモリとスワップ空間を合わせた容量が、仮想メモリとして利用可能になる。
スワップ処理が必要になる主な理由は2つある。1つは、物理的に使えるメモリ容量以上の領域がシステムで必要になった場合に、あまり使われていないページをメモリからハードディスクに移動(スワップアウト)させ、メモリを直ちに必要とする実行中のアプリケーション(プロセス)にそのメモリ領域を与える、というカーネルでの対処を可能にするためだ。もう1つは、アプリケーションの起動時に初期化のために使用された大量のページがその後まったく使われない場合で、システムはそうしたページをスワップアウトしてメモリを解放し、その領域をほかのアプリケーション、場合によってはディスクキャッシュに割り当てることが可能になる。
しかし、スワップ処理には1つ弱点がある。メモリに比べ、ディスクの読み書きが非常に遅いことだ。物理メモリのアクセス速度の測定がナノ秒単位で行われるのに対し、ディスクはミリ秒単位なので、ディスクへのアクセスには物理メモリの何万倍もの時間がかかっていることになる。スワップ処理の発生が増えるほど、システムの速度が低下するわけだ。同じページのスワップアウトとスワップイン(ハードディスクに移したデータを再びメモリに戻すこと)が短時間のうちに繰り返されると、過剰なスワップ処理、つまりスラッシングが起こることがある。そうした状況では、システムが空いているメモリ領域を探しつつアプリケーションの実行を続けようとするため、相当な負荷がかかる。この問題を回避するには、物理メモリを増やすしかない。
Linuxには、スワップパーティションとスワップファイルという2つの形態のスワップ空間がある。スワップパーティションは、スワップ処理のためだけに使用されるハードディスク上の独立したセクションである。よって、それ以外のファイルをそこに置くことはできない。スワップファイルはLinuxファイルシステム上の特別なファイルで、システムファイルおよびデータファイルと同じような形で存在する。