プロが教えるわが家の防犯対策術!

主記憶容量-----------------64Kバイト
仮想アドレス空間容量-------8Mバイト
ページサイズ---------------8Kバイト
ページ追い出しアルゴリズム-LRU

(1)ページテーブルの各エントリは物理ページアドレスと9ビットの付加情報から構成されている。ページテーブルのサイズを求めよ。

(2)現在、主記憶上にはどのページも存在していないとする。この状態で、以下に示す仮想ページアドレスに対応する仮想ページが順にアクセスされた。
 0, 1, 2, 3, 4, 5, 6, 7, 0, 3, 8, 4, 1, 0, 8
このときのページフォルトが発生する回数を求めよ。

…の2つがどうしてもよく分からないので、解説付きで教えてください。
よろしくお願いします。

A 回答 (2件)

主記憶に8ページ分の仮想記憶がロードでいるとして


(現実には仮想記憶を制御する機能等は主記憶常駐になるので、この問題でも仮想記憶用には5ページ程度となりますが)

>以下に示す仮想ページアドレスに対応する仮想ページが順にアクセスされた。0, 1, 2, 3, 4, 5, 6, 7, 0, 3, 8, 4, 1, 0, 8

ですから
主記憶の
1ページ目から順に フォルトで仮想ページの0, 1, 2, 3, 4, 5, 6, 7ページがロードされ
その次の  0, 3 はロード済ですから フォルトは発生せず
その次の 8 は 主記憶に無いからフォルト 使用されない期間は 1が一番長いから ロールアウトされ 8がロード 
次の 4 はロード済
次の  1 ロールアウトしているからフォルト
次の  0, 8 は如何

なお (1)の 1Kは 厳密には2^10 ですね(アドレス、容量の全て)

誤入力の可能性もありますから検証してください
    • good
    • 0
この回答へのお礼

2回も回答ありがとうございます。
まだなんとなくですが…理解することができました!!

お礼日時:2007/08/24 16:03

仮想記憶システムの原理は理解されていますね



仮想記憶からページ毎に主記憶へロードして処理し
主記憶が占有されている場合、所定のアルゴリズムで、主記憶のページを仮想記憶に書き戻し(ロールアウト)、その空いたページに仮想記憶からロードし処理を続けます(これが質問のページデフォルト)

(1)
これを管理するのがページテーブルです
ページ単位で管理する場合、ページ数分のデータ領域が必要です
ページテーブルには物理ページアドレス+9ビット必要ですので(書込みからでは物理ページのアドレスビット数が不明です)
ページ数は
主記憶 64Kバイトを全て仮想記憶用に使用できる場合 xページ
仮想記憶は 8Mバイトだから yページ

エントリあたりのデータ量は ページを表記するビット数+付加情報ビット数+物理アドレス情報のビット数
1エントリのデータ量をバイト表示にして、エントリ数をかければページテーブルサイズが求まります

(2)
主記憶にロードされているページ以外にアクセスしようとしたとき ページデフォルトが発生します
主記憶に空きがあればすぐにロードされます
空きが無ければロールアウトします
ロールアウトされるページは、アルゴリズムがLRUですから、
主記憶のページマップをつくり ロードされているページと使用されてからの時間経過を確認すれば判ります、
それを順に辿れば デフォルトの発生回数は判ります

この回答への補足

自分なりに考えてみました。

(1)
ページテーブルのエントリ数は
8M / 8K = 1K
また、1エントリあたりのデータ量は
3(物理アドレス情報のビット数)+9(付加情報ビット数)=12ビット=1.5バイト
これから
1.5 * 1K = 1.5Kバイト??

(2)
主記憶のページマップをつくれませんでした・・・

補足日時:2007/08/24 10:53
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!