ページング方式
ページング方式とは、仮想記憶の実現方式のひとつで、メモリ領域をページと呼ばれる一定の大きさの領域に分割し管理する方式のことです。
仮想記憶とは、仮想的な記憶領域のことであり、仮想記憶を利用することで主記憶装置(メインメモリ)の容量を超えてメモリ空間を利用することができます。
仮想記憶の詳細はこちら
ページング方式で管理する単位
ページング方式では、プログラムを「ページ」という単位に分割して管理します。
次の例では、プログラムAを「ページ1」~「ページ4」に分割して、仮想記憶に記憶しています。
仮想記憶は"仮想的な記憶領域"です。そのため、実際のデータは主記憶装置(または補助記憶装置)に記憶します。
スポンサーリンク
ただし、プログラムは複数の機能の集合体であり、常に全ての機能が使われているわけではありません。そこで、ページが必要になったタイミングで必要なページだけを主記憶装置に読み込みます。このような方式をデマンドページングといいます。
主記憶装置上にページがないため、実行すると「ページフォールト」という割り込みが発生します。ページフォールトとは、必要なページが主記憶装置上にないときに発生する割り込みのことです。
そして、ページフォールトが発生したら、必要なページを補助記憶装置から主記憶装置に読み込みます。このように補助記憶装置から主記憶装置にページを読み込むことを「ページイン」といいます。
また、主記憶装置から補助記憶装置へとページを追い出すことを「ページアウト」といい、主記憶装置の領域に空きがないときにページアウトを行い、空き領域を作ります。
ページング方式の仕組み
仮想記憶と主記憶装置(または補助記憶装置)の対応付けは、メモリ管理ユニット(MMU:Memory Management Unit)と呼ばれる装置が担当し、仮想的に与えられた仮想アドレス(または論理アドレス)を実アドレス(または物理アドレス)に変換します。
更にページング方式では、仮想ページ番号と物理ページ番号の対応付けをページングテーブルと呼ばれる表で管理しています。
次の図は、ページング方式のイメージ例です。
メモリ管理ユニットで管理しているページテーブルを使い仮想アドレス(または論理アドレス)を実アドレス(または物理アドレス)に変換するときは次のように、先頭のページ番号のみ変換します。ページ内変位(ページ内相対メモリアドレス)とは、ページ内の位置を表す情報です。
例えば、「仮想ページ番号"2"、ページ内変位"00FE"にあるメモリにアクセスする」という命令が入った場合、ページテーブルを使い仮想ページ番号"2"を物理ページ番号"1000:1000"に変換します。
そして、ページ内変位が"00FE"なので、メモリ管理ユニットは、物理ページ番号にページ内変位を加算した"1000:10FE"の位置にアクセスします。