ページフォールトが増える要因を発生条件から見極める
基本情報技術者試験 平成29年度秋期 午前 問20 / ソフトウェア › オペレーティングシステム
過去問にチャレンジ
ページング方式の仮想記憶において,ページフォールトの発生回数を増加させる要因はどれか。
- ア
主記憶に存在しないページへのアクセスが増加すること
- イ
主記憶に存在するページへのアクセスが増加すること
- ウ
主記憶のページのうち,更新されたページの比率が高くなること
- エ
長時間アクセスしなかった主記憶のページをアクセスすること
会話形式の解説
講師今回はページング方式の仮想記憶で、ページフォールトがどんなときに起きるかを問う問題です。ページングは、記憶領域を固定長の「ページ」に区切って管理する方式です。まず、ページフォールトが起きる条件を一つだけ押さえましょう。
受験者ページフォールトは、参照したページが主記憶にないときに起きる割込みだったと思います。
講師そのとおりです。フォールトが起きると、必要なページを補助記憶から主記憶へ読み込みます。これをページインといいます。空きがなければ別のページを追い出します。こちらはページアウトです。では、主記憶にないページへのアクセスが増えるとどうなりますか。
受験者発生条件そのものに当てはまるアクセスが増えるので、その分だけフォールトも増えます。これが正解だと思います。
講師はい。逆に、主記憶に存在するページへのアクセスが増える場合はどうでしょう。
受験者主記憶上でそのまま処理できるので、フォールトは起きません。アクセス全体のうち主記憶にあるページの割合が高くなるなら、むしろ起きにくくなりそうです。
講師正しい読み方です。迷いやすいのは、更新されたページの比率が高くなるという選択肢です。更新されたページが多いと、何が変わると思いますか。
受験者なんとなく処理が重くなりそうなので、フォールトも増えそうに見えました。
講師重くなるのは、そのページを追い出すときに補助記憶へ書き戻す手間のほうです。書き戻しは置換のときの作業で、参照したページが主記憶にあるかどうかには関係しません。ですから、フォールトの回数を増やす要因にはなりません。
受験者長時間アクセスしなかったページをアクセスする選択肢も、追い出されていそうなのでフォールトが起きる気がしました。
講師そこが引っかけです。長い間アクセスしていなくても、主記憶に残っていればフォールトは起きません。追い出されていれば起きます。結果を決めるのは主記憶にあるかどうかで、アクセスしていなかった期間の長さそのものではありません。
受験者つまり、どの選択肢も「参照した時点でそのページが主記憶にあるか」という一点で確かめればよいのですね。
講師そうです。「更新された」「長時間使っていない」といったページの状態は置換の処理にかかわる言葉で、フォールトの発生条件とは分けて考えます。似た言葉が並んだら、まず発生条件に戻るのがコツです。
まとめ
ページフォールトは、参照したページが主記憶にないときに起きる割込みです。そのため、主記憶にないページへのアクセスが増えると、フォールトの回数も増えます。主記憶にあるページへのアクセスではフォールトは起きません。更新されたページの比率が影響するのは追い出すときの書き戻しの手間で、長時間アクセスしていないことも、それだけではフォールトの条件になりません。迷ったときは、参照した時点でページが主記憶にあるかどうかで判断します。
解答・解説
正解はアです
この問題のテーマ
ページング方式の仮想記憶で、ページフォールトがどのような条件で起きるかを理解しているかを問う問題です。
解き方の考え方
まず、ページフォールトが起きる条件は「参照したページが主記憶にない」ことだと確認します。その上で、各選択肢がこの条件に当てはまる参照を増やすかどうかを判断します。ページの更新状況や最後に参照した時期は、それだけでは条件に関係しません。主記憶にあるかどうかで判断すれば、正解を一つに絞れます。
選択肢ごとの解説
- ○ア 主記憶に存在しないページへのアクセスが増加すること主記憶にないページへのアクセスは、ページフォールトが起きる条件そのものです。この種のアクセスが増えれば、その数だけフォールトの回数も増えます。したがって、主記憶にないページへのアクセスの増加は、フォールトを増やす要因になります。
- ×イ 主記憶に存在するページへのアクセスが増加すること主記憶に存在するページへのアクセスは、そのまま主記憶上で処理されるため、フォールトは起きません。アクセス全体のうち主記憶内のページへの参照の割合が高まるなら、フォールトはむしろ起きにくくなります。
- ×ウ 主記憶のページのうち,更新されたページの比率が高くなること更新されたページの比率が影響するのは、そのページを追い出すときに補助記憶へ書き戻す手間です。参照したページが主記憶にあるかどうかとは関係しないため、フォールトの発生回数を増やす要因にはなりません。
- ×エ 長時間アクセスしなかった主記憶のページをアクセスすること長い間アクセスしていなくても、そのページが主記憶に残っていればフォールトは起きません。追い出されて主記憶にない状態なら、参照したときにフォールトが起きます。つまり、結果を決めるのは主記憶にあるかどうかであり、アクセスしていなかった期間の長さそのものは要因になりません。
補足
ページングは、記憶領域を固定長のページに区切って管理する方式です。「長時間使っていない」「更新された」といったページの状態は置換の処理にかかわる言葉ですが、フォールトが起きる条件とは区別して考えます。
POINT
- ページフォールトは、参照したページが主記憶にないときに起きる割込みです。
- フォールトが起きると、必要なページを補助記憶から主記憶へ読み込み(ページイン)、空きがなければ別のページを追い出します(ページアウト)。
- 更新済みのページは、追い出すときに書き戻しが必要になるため、置換の手間に影響します。ただし、フォールトの発生条件ではありません。
- フォールトが起きるかどうかは、参照の時点でページが主記憶にあるかどうかで判断します。
