デマンドページング 【demand paging】
概要
デマンドページング(demand paging)とは、OSがストレージ上の領域を利用して仮想メモリを管理しているとき、あるページへのアクセス要求が行われた際に当該ページをストレージから物理メモリ上へ読み込む方式。仮想メモリはメモリ領域に物理的な装置内でのアドレス(番地)とは別に仮想的なアドレスを割り当てて管理する方式で、ストレージの記憶容量をメモリの延長のように扱うことができる。ストレージ上に確保した領域の内容を実際に読み書きするには物理メモリ上に呼び出す「ページイン」(page-in)処理が必要となる。
実行中のプログラムからストレージ上に退避されている領域への読み書き処理が実行されようとすると、物理メモリ上には存在しないため「ページフォールト」(page fault)と呼ばれるハードウェア割り込みが発生する。OSはこの割り込みに対応して当該ページの内容を物理メモリへ読み出してアクセス可能にする。物理メモリに空き領域がない場合は現在使われていないページとストレージ上のページの内容を交換する「スワップ」が行われる。
実際に使われる領域のみが物理メモリ上に展開されるため無駄が少ないが、ストレージ上の領域へアクセスする度に必ずページング処理が発生するため、状況によっては性能が大幅に低下することがある。このため、領域ごとのアクセス履歴や頻度などから近い将来アクセスされると予測される領域をOS側であらかじめ物理メモリ上に展開しておく方式が用いられることがあり、これを「プリページング」(prepaging)方式という。
(2021.10.30更新)