ページング 【paging】
概要
ページング(paging)とは、仮想記憶(仮想メモリ)の方式の一つで、メモリ領域をページと呼ばれる一定の大きさの領域に分割し、物理的なアドレス(番地)とは別に仮想的なアドレスを割り当てて管理する方式。細切れのメモリ空間を連結して一つの連続した空間として利用したり、補助記憶装置(ハードディスクなど)上にも仮想的なメモリ領域を確保することで、物理メモリの容量を超えてメモリ空間を利用することができる。ページの大きさはOSやハードウェアによって異なるが、現代では多くのシステムが4KBのページを採用している。
各ページには物理メモリ上での所在地(物理アドレス、実アドレス)とは別に、OSによって仮想メモリ空間上でのアドレス(仮想アドレス、論理アドレス)が与えられ、プログラム(プロセス)へのメモリの割当も仮想メモリ空間上でページ単位で行われる。こうすることで物理メモリ上で細切れの領域を集めて一つの大きな仮想メモリ領域を確保することが可能で、また、プログラムの側で物理メモリを管理する必要がなくなる。
また、ハードディスクやSSDなどのストレージ(外部記憶装置)に専用の領域(ページファイル、スワップファイル、スワップ領域、スワップパーティションなどと呼ばれる)を設け、ここにもページを置くことにより、物理的なメモリ容量よりも大きな仮想メモリ空間を利用することができる。
ストレージ上に置かれたページにアクセスするには物理メモリ上に読み込まなければならないため、物理メモリの中で現在使われていないページとの入れ替え(スワップ)がOSによって随時行われる。
このとき、不要なページをストレージに書き出して物理メモリから消去することを「ページアウト」(page-out)あるいは「スワップアウト」(swap-out)、必要なページをストレージから読み出して物理メモリ上に配置することを「ページイン」(page-in)あるいは「スワップイン」(swap-in)という。
また、プログラムが物理メモリ上に存在しないページにアクセスしようすると、ハードウェアによって「ページフォールト」(page fault)と呼ばれる例外あるいは割り込みが発生し、OSによってスワップが行われる。