エンベデッドシステムスペシャリスト 2014年 午前2 問08
問題文
ページング方式の仮想記憶において、あるプロセスが仮想アドレス空間全体に対応したページテーブルをもつ場合、ページテーブルに必要な領域の大きさをバイトで表すとすると、を表す式はどれか。ここで、仮想アドレス空間の大きさはバイト、ページサイズはバイト、ページテーブルの各エントリの大きさはバイトとし、その他の情報については考慮しないものとする。
選択肢
ア:
イ:
ウ:(正解)
エ:
🔒 解説は解答すると表示されます
ページテーブルの必要容量【午前2解説】
正解の理由
仮想アドレス空間の大きさは バイト、ページサイズは バイトです。したがって、仮想アドレス空間を構成するページ数は、
です。ページテーブルには、各ページに対応するエントリが1つずつ必要なので、エントリ数は 個です。
各エントリの大きさは バイトであるため、ページテーブル全体の大きさは、
となります。よって、 となる ウ が正解です。
解法ステップ
-
ページ数を求めます。
仮想アドレス空間の大きさをページサイズで割ります。 -
必要なエントリ数を求めます。
ページごとに1つのエントリが必要なので、エントリ数は 個です。 -
エントリ1個の大きさを掛けます。
-
指数を比較します。
バイトと比べると、 です。
選択肢別の誤答解説
-
ア:
ページ数を求めるとき、仮想アドレス空間の大きさをページサイズで割る必要があります。指数は足し算ではなく、 です。 -
イ:
ページ数の計算で を足しているうえ、エントリの大きさ を掛けるときに を引いています。どちらも指数の扱いが逆です。 -
ウ:
ページ数の指数 に、エントリ1個の大きさの指数 を加えています。計算と一致する正しい式です。 -
エ:
ページ数の計算は正しいですが、エントリの大きさを掛けるときに指数を引いています。容量を掛けると指数は加算します。
よくある誤解
-
ページサイズの指数を足してしまう
ページ数は「仮想アドレス空間 ÷ ページサイズ」です。2のべき乗同士の割り算なので、指数は引き算になります。 -
エントリの大きさの指数を引いてしまう
エントリ数にエントリ1個の大きさを掛けるため、指数は加算します。 -
ページ数とページテーブル容量を混同する
はページ数です。ページテーブル容量を求めるには、さらに各エントリの大きさ を掛けます。
補足コラム
ページテーブルの容量は、基本的に「ページ数 × エントリ1個の大きさ」で求められます。ページ数が多いほど、またエントリが大きいほど、ページテーブルの領域も大きくなります。
たとえば、仮想アドレス空間が バイト、ページサイズが バイト、エントリ1個が バイトなら、ページ数は 個です。ページテーブルの容量は バイトとなります。
FAQ
Q. なぜページごとにページテーブルのエントリが必要なのですか?
A. ページテーブルは、仮想ページと物理メモリ上のページの対応関係などを管理するためです。この問題では、ページ数と同じ数のエントリが必要とされています。
A. ページテーブルは、仮想ページと物理メモリ上のページの対応関係などを管理するためです。この問題では、ページ数と同じ数のエントリが必要とされています。
Q. ページテーブルに含まれる情報の種類も計算しますか?
A. この問題では「その他の情報については考慮しない」とあるため、エントリ数と各エントリの大きさだけで計算します。
A. この問題では「その他の情報については考慮しない」とあるため、エントリ数と各エントリの大きさだけで計算します。
関連キーワード: ページング方式、仮想記憶、ページテーブル、仮想アドレス、ページサイズ

\ せっかくなら /
エンベデッドシステムスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

