FE EXAM

ページング方式(ページ管理)

メモリを固定サイズのページ単位で管理する仮想記憶の方式。

INTERACTIVE VISUALIZATION
ページ
ページテーブル
フレーム
フェーズ
idle
1ページサイズ
1024B
変換結果(物理アドレス)
シナリオ
ステップ1 / 6
STEP 1/6ページングの考え方ページング方式は、メモリを小さな固定サイズの単位に区切って管理する仕組みです。仮想空間(左)と物理メモリ(右)を、これから同じ大きさのマスに分けていきます。1マスのサイズはここでは 1024 バイト(1KB)とします。
アドレス変換の式
変換ステップ(STEP5以降)で式が表示されます。
解説

📌
ページング方式とは

仮想(ページ)物理(フレーム)

ページング方式とは、メモリを固定サイズの「ページ」単位で管理する仮想記憶の方式です。仮想空間を同じ大きさのページに区切り、物理メモリも同サイズのフレーム(=枠)に区切ります。

身近な例で考えると、コインロッカーに似ています。どのロッカーも同じ大きさなので、荷物(ページ)はどの空きロッカー(フレーム)にも入れられます。荷物を連続した並びに置く必要はなく、空いている所へバラバラに預けてよいわけです。

上のツールで▶ボタンを押すと、仮想空間とフレームを同サイズに分割し、ページテーブルで対応づけて物理アドレスを求める流れを確認できます。

📖
ページテーブルの役割

ページテーブルページ0 → F2ページ1 → F5ページ2 → F0

ページテーブルは、各ページが物理のどのフレームに置かれているかを記録した対応表です。住所録のように「ページ◯はフレーム△にいる」という情報を引けます。

仮想アドレスは「ページ番号」と「オフセット(=ページ内の位置)」に分かれます。変換の手順は次のとおりです。
① ページ番号で表を引く:そのページがどのフレームにあるかを調べる
② フレーム番号 × ページサイズ:フレームの先頭の物理アドレスを求める
③ オフセットを足す:求めた先頭にページ内の位置を足して物理アドレス完成

例えばページ1がフレーム5にあり、オフセットが200なら、物理アドレスは 5 × 1024 + 200 = 5320 です。物理上はバラバラに置かれていても、表さえ引けば正しい場所が分かります。上のツールのSTEP4・5で確認できます。

⚖️
固定区画との違い

固定区画方式とページング方式は、どちらも区切って管理しますが、置き方が大きく違います。

項目固定区画方式ページング方式
配置プログラム全体を1区画に連続配置小ページに分け物理上はバラバラ
内部断片化大(区画の余りが大きい)小(最後のページの端数のみ)
外部断片化起こりうる回避できる

固定区画はプログラム全体を1つの区画に連続して置くため、区画より小さいと大きな余り(内部断片化)が出ます。一方ページングは小さなページに分けて物理上はバラバラに置けるため、外部断片化を回避でき、内部断片化も最後のページの端数だけに抑えられます。荷物を1台のトラックに丸ごと積むか、小さな箱に分けて空いた棚へ配るか、の違いと考えると分かりやすいです。

💡
なぜ固定サイズに分けるのか

可変サイズ(問題あり)隙間(断片化)固定サイズ(解決)

固定サイズに分ける理由は、メモリの管理をシンプルにするためです。サイズがバラバラだと、大きなプログラムを入れようとしたとき「どこに置くか」の計算が複雑になり、使われていない隙間(=断片化)が生まれやすくなります。

固定サイズにそろえると、次のメリットがあります。
空きフレームならどこでも使える:全部同じ大きさなので、どのフレームにどのページを置いても問題ない
管理が単純:「空きか埋まっているか」だけで管理でき、場所探しの計算が軽い
外部断片化がゼロ:サイズが合わなくて隙間が生まれる、という現象が起きない

身近な例で考えると、引き出しがすべて同じ大きさのタンスをイメージしてください。どの引き出しも同じなので、何をどこにしまっても取り出しやすく、場所探しで迷いません。一方、大きさがバラバラの引き出しだと「この荷物が入る引き出しはどれか」と探す手間が増えます。

🔄
仮想アドレスから物理アドレスへの変換

仮想アドレスページ番号オフセット1200ページ1 → F5×10245×1024 = 5120物理アドレス = 5120 + 200 = 5320

仮想アドレス(=プログラムが使う番地)は、「ページ番号」と「オフセット」の2つに分かれています。オフセットとは「そのページの先頭から何バイト目か」を示す数値です。

変換は3ステップで行われます。
① ページ番号でページテーブルを引く:「ページ1はフレーム5にある」と分かる
② フレーム番号 × ページサイズ:フレーム5の先頭アドレスを計算する(例:5 × 1024 = 5120
③ オフセットを足す:先頭に「ページ内の位置」を足して物理アドレスが完成する(例:5120 + 200 = 5320

身近な例で考えると、本棚(フレーム)に冊子(ページ)が並んでいる場面に似ています。「第1冊(ページ1)の200ページ目」を探すとき、目次(ページテーブル)で「第1冊は棚番号5にある」と調べ、棚5の先頭から200ページ進んだ場所を開きます。この仕組みのおかげで、プログラムは物理メモリの実際の場所を知らなくても、自分の番地で正しい内容を参照できます。

練習問題

🎯
基本情報技術者 練習問題

Q1.ページング方式の説明として最も適切なものはどれか。
A.メモリを固定サイズのページ単位で管理する仮想記憶の方式
B.プログラムを論理的な意味の単位で可変長に分ける方式
C.メモリをまったく分割せず1つの連続領域として扱う方式
D.CPUのクロックを分割して時分割する方式
Q2.ページテーブルの役割として正しいものはどれか。
A.プログラムの実行履歴を保存する
B.各ページが物理のどのフレームに置かれているかの対応を保持する
C.CPUのレジスタの値を一時保存する
D.ディスクの空き容量を管理する
Q3.固定区画方式とページング方式の違いとして正しいものはどれか。
A.どちらもプログラムを必ず連続領域に配置する
B.固定区画はページに分けて物理上バラバラに置けるが、ページングは連続配置が必須
C.固定区画はプログラム全体を1区画に連続配置するが、ページングは小ページに分けて物理上バラバラに置ける
D.ページングでは内部断片化がページ全体で大量に発生する

関連コンテンツ