プリページング
プリページングとはメモリ管理方式の一種で、近い将来参照されると予測したページを事前に主記憶装置(メインメモリ)に読み込んでおく方式のことです。
プリページングの流れ
それでは図を利用してプリページングの流れを説明していきます。
例えば、次の図のようにプログラムAを「ページ1」~「ページ4」に分割して仮想記憶(仮想メモリ)に割り当てたとします。このように「ページ」単位で管理する方式を「ページング方式」といいます。
仮想記憶とページング方式の詳細はこちら
このとき、主記憶装置にはまだページを読み込みません。
そのため、CPUからの要求でページにアクセスしようとしても、主記憶装置上にはページがないため「ページフォールト」が発生します。ページフォールトとは、必要なページが主記憶装置上にないときに発生する割り込みのことです。
次の例では「ページ1」にアクセスするも、主記憶装置上に「ページ1」がないため、ページフォールトが発生しています。
そして、ページフォールトが発生したら、補助記憶装置から主記憶装置に必要なページを読み込みます。このとき、プリページングでは「連続する数ページにもすぐに参照するだろう」と予測してまとめて主記憶装置に読み込んでおきます。
次の例では、必要なページはプログラムAの「ページ1」だけだが、連続したプログラムAの「ページ2」と「ページ3」も事前に主記憶装置に読み込んでいます。
このようにプリページングでは、上記例で紹介したページフォールトが発生したときや主記憶装置からプログラムが解放されるときなどに、近い将来参照されると予測したページを事前に主記憶装置(メインメモリ)に読み込んでおきます。
プリページングでは、必要なページと近い将来参照されるであろうページを主記憶装置に読み込んでいますが、必要なページだけを読み込む方式もあります。このような方式を「デマンドページング」といいます。
デマンドページングでは、実際に使用するページだけが主記憶装置上に展開されるため無駄の少ない方式だが、初回は必ず「ページフォールト」が発生するため、その分 遅延が発生します。
そこで、近い将来参照されると予測したページを事前に主記憶装置に読み込んでおくプリページング を使用して性能向上を図ることもあるが、予測が外れ事前に読み込んでおいたページが使われず無駄になってしまうこともあります。