問題

(出典:日本技術士会のホームページ 過去問題(第一次試験) 基礎科目 令和4年度)
コーチング対話解答
ツトムさん今回は仮想記憶のページ置換方式であるLRUを使って、ページ参照の総アクセス数を求める問題ですね。
ひとつずつ丁寧に追跡していけばできそうですね。



そうですね。
主記憶からのアクセス時間は「ヒット」としてH[秒]、
外部記憶からのアクセスはページフォールトといいますが、
この時の時間を「ミス」としてM[秒]となります。
LRUとはどのような方式ですか?



主記憶にあるページのうち、最も長い間アクセスされていないページを置換する方式です。



そうですね。
アクセスされるたびに使用履歴が更新されて、
主記憶に格納できるページが3なので、
それを超えると主記憶に保存されているページが変わっていきます。



順番にやっていきますね。
最初はページ2が入りますが、これは問題の例題と同じように外部記憶からのアクセスになりますのでMになります。主記憶には2しか入っていません。
そして、次はページ1が入りますが、主記憶にはページ2しか入っていない状態ですので、これも外部記憶からのアクセスになりますのでMになります。格納された順番では2→1となります。
そして3番目はページ1ですので、主記憶にページ1が入っていますから、主記憶からのアクセスでHになります。格納された順番は変化がなく2→1です。
4番目はまたページ2が入ります。主記憶にはページ1、ページ2が入っていますので、主記憶からのアクセスでHになります。ただし格納された順番は1が最新になりますので、1→2となります。





その調子ですね。
表に整理してみるといいですよ。
この時に、置換されたページと参照後の主記憶に格納されているページを記載してください



そうします。
5回目でページ3が入り、外部記憶からのアクセスになりますのでMになります。これで主記憶が満杯になりますね。
| 回数 | 参照ページ | H/M | 置換されたページ | 参照後の主記憶 (記録順) |
| 1 | 2 | M | – | 2 |
| 2 | 1 | M | – | 2→1 |
| 3 | 1 | H | – | 2→1 |
| 4 | 2 | H | – | 1→2 |
| 5 | 3 | M | – | 1→2→3 |



そして次はどうなりますか?



6番目でページ4が入り、これも外部記憶からのアクセスになりますのでMになります。そして主記憶の一番古いページであるページ1が置換されます。
7番目では再びページ1が入り、外部記憶からのアクセスになりますのでMになり、主記憶の一番古いページであるページ2が置換されます。
| 回数 | 参照ページ | H/M | 置換されたページ | 参照後の主記憶 (記録順) |
| 6 | 4 | M | 1 | 2→3→4 |
| 7 | 1 | M | 2 | 3→4→1 |



そうして、8番目ではページ3が入りますが、これは主記憶に入っているものですのでHで、順番が変わるだけです。
最後の9番目ではページ4が入りますが、これも主記憶に入っているものですのでHで、順番が変わるだけです。
| 回数 | 参照ページ | H/M | 置換されたページ | 参照後の主記憶 (記録順) |
| 8 | 3 | H | – | 4→1→3 |
| 9 | 4 | H | – | 1→3→4 |





結果はどうなりましたか?



Mが5回、Hが4回でした。
すると、総アクセス時間は5M+4Hですね。
答えは③ です。



正解です。
コンピュータでは、アクセス時間をなるべく短くなるようにしていますが、主記憶の容量がありますので、最新のデータはアクセスする頻度も高いのだろうというアルゴリズムの元にLRUを作っています。



頭の中だけで考えようとすると混乱しがちですが、
表に整理すると間違いを防ぐことができますね。

