令和2年度 10月 午前Ⅱ 問8
オペレーティングシステム
ページテーブルに関する問題
ページング方式の仮想記憶において,あるプロセスが仮想アドレス空間全体に対応したページテーブルをもつ場合,ページテーブルに必要な領域の大きさを2^xバイトで表すとすると,xを表す式はどれか。ここで,仮想アドレス空間の大きさは2^Lバイト,ページサイズは2^Nバイト,ページテーブルの各エントリの大きさは2^Eバイトとし,その他の情報については考慮しないものとする。
- アL+N+E
- イL+N−E
- ウL−N+E
- エL−N−E
答えと解説を見る
✓ これが正解ウL−N+E
解説
エントリ数2^(L−N)に各2^Eバイトを掛けて、x=L−N+Eです。
ページテーブルは、仮想アドレス空間の各ページに一つずつエントリを持ちます。エントリの数はページの数に等しく、仮想アドレス空間の大きさをページサイズで割って2^L÷2^N=2^(L−N)個です。各エントリが2^Eバイトなので、ページテーブル全体の大きさは2^(L−N)×2^E=2^(L−N+E)バイトになり、x=L−N+Eです。2のべき乗どうしの割り算は指数の引き算、掛け算は指数の足し算になることを使えば、式の形から迷わず選べます。まずページの数を出し、次にエントリの大きさを掛ける、という順で考えるのが要点です。
ほかの選択肢はなぜ違うのか
- アL+N+E:L+N+Eは、仮想アドレス空間の大きさをページサイズで割るのではなく、掛けてしまった形です。ページの数は空間の大きさをページサイズで割って求めるので、Nの符号が逆です。
- イL+N−E:L+N−Eは、ページサイズで割るべきところを掛け、エントリの大きさを掛けるべきところを割った形です。Nの符号もEの符号も、どちらも逆になっています。
- エL−N−E:L−N−Eは、ページの数2^(L−N)までは正しく出していますが、エントリ1個の大きさを掛けずに割った形です。全体の大きさは、エントリの数にエントリ1個分の大きさを掛けて求めます。
出典:令和2年度 10月 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問8
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)