プログラムで使用可能な実メモリ枠が3ページである仮想記憶システムにおいて,大きさ6ページのプログラムが実行されたとき,ページフォールトは何回発生するか。
ここで,プログラム実行時のページ読込み順序は,0,1,2,3,4,0,2,4,3,1,4,5とする。
ページング方式は,LRU(Least Recently Used)とし,初期状態では,実メモリにはいずれのページも読み込まれていないものとする。
正答2
解説
正解は2です。
LRU(Least Recently Used)方式は、ページ置換えが必要なときに、最も長い間参照されていないページを追い出す方式です。
実メモリ枠は3ページなので、参照順に枠の中身を追いかけてページフォールトを数えます。
【計算】
0、1、2を順に読み込み、3回フォールトします(枠は0、1、2)。
3を参照すると、最も古い0を追い出して4回目のフォールトです(枠は1、2、3)。
4を参照すると、1を追い出して5回目です(枠は2、3、4)。
0を参照すると、2を追い出して6回目です(枠は3、4、0)。
2を参照すると、3を追い出して7回目です(枠は4、0、2)。
4はメモリにあるので、フォールトしません。
3を参照すると、最も長く参照されていない0を追い出して8回目です(枠は2、4、3)。
1を参照すると、2を追い出して9回目です(枠は4、3、1)。
4はメモリにあるので、フォールトしません。
5を参照すると、3を追い出して10回目です。
ページフォールトは合計10回です。
【選択肢別解説】
1:× 9回は、最後の5の読込みなど、どこかのフォールトを数え落とした値です。
2:○ 12回の参照のうち、ヒットは4の2回だけなので、フォールトは10回です。
3:× 11回は、2回のヒットのどちらかをフォールトと数えた値です。
8番目と11番目の4は枠に残っています。
4:× 12回は、すべての参照でフォールトすると考えた値です。
【ポイント】
LRUでは、ヒットしたページも「最近使った」ことになり、追い出す順番が後ろに回ります。
読み込んだ順に追い出すFIFO方式と混同しないようにします。