スワップイン【swap-in】ページイン
概要

仮想記憶を採用するコンピュータでは、物理メモリの容量を超えるデータを扱うため、ストレージの一部をメモリの延長として利用する仕組みが用いられている。このストレージ上に確保された専用の記憶領域がスワップ領域である。
物理メモリの空き容量が少なくなると、オペレーティングシステム(OS)は直近で利用されていないメモリ領域の内容をスワップ領域に書き出し、物理メモリ上に空き領域を作り出す。この退避操作を「スワップアウト」(swap-out)と呼び、退避によって他のプログラムやデータが物理メモリを利用できるようになる。
スワップアウトによってストレージへ退避された内容に、実行中のプログラムが再びアクセスしようとすると、物理メモリ上に存在しないデータへのアクセスであるとして「ページフォールト」(page fault)と呼ばれる例外が発生する。これを契機にOSは物理メモリ上に空き領域を確保し、該当するデータをスワップ領域から読み込んで、プログラムが利用できる状態に戻す。この読み戻し操作がスワップインである。
ストレージへのアクセス速度は物理メモリに比べて大幅に遅いため、スワップインが発生すると処理に遅延が生じる。物理メモリの不足が慢性的に続くと、スワップインとスワップアウトが繰り返され、CPUが実際の処理よりもデータの入れ替えに多くの時間を費やすようになる。この現象は「スラッシング」(thrashing)と呼ばれ、システム全体の動作が著しく低下する原因となる。
かつてスワップ先として一般的だったハードディスク装置(HDD)は入出力速度が遅く、スワップイン発生時の性能低下が顕著だったが、近年ではSSDなど高速なストレージの普及により、その影響は緩和されている。それでも物理メモリとの速度差は大きく残るため、OSに組み込まれたメモリ管理アルゴリズムにより利用頻度の高いデータを物理メモリ上に保持し、不要なスワップインの発生を抑えている。