基本情報技術者 2010年 春期 午前(科目A) 問20
問題文
仮想記憶を用いたコンピュータでのアプリケーション利用に関する記述のうち、適切なものはどれか。
選択肢
ア:アプリケーションには、仮想記憶を利用するためのモジュールを組み込んでおく必要がある。
イ:仮想記憶は、磁気ディスクにインストールされたアプリケーションだけが利用できる。
ウ:仮想記憶を使用していても主記憶が少ないと、アプリケーション利用時にページフォールトが多発してシステムのスループットは低下する。(正解)
エ:仮想記憶を利用するためには、個々のアプリケーションで仮想記憶を使用するという設定が必要である。
🔒 解説は解答すると表示されます
仮想記憶とページフォールト【午前解説】
正解の理由
正解は ウ です。仮想記憶(需要ページング)を利用している環境でも、実際に利用可能な主記憶(物理メモリ)が少ないと、プロセスが頻繁に必要なページを持っていない状態(ページフォールト)になり、ディスクへのページ入出力(スワップ)が頻繁に発生します。ディスクI/Oは主記憶アクセスに比べて桁違いに遅く、ページ置換やコンテキスト切替のオーバーヘッドも加わるため、結果としてシステム全体のスループット(処理能力)は低下します。これが「ページフォールト多発=スループット低下」という論理です。
解法ステップ
- 問題文でキーワード(仮想記憶、主記憶、ページフォールト、スループット)を確認する。
- 仮想記憶の責務がOSとハードウェア側であることを前提に、アプリ側の記述を疑う。
- 各選択肢が仮想記憶の基本動作(需要ページング、ディスクI/O、ページ置換)と整合するかを検証する。
- 「主記憶が少ない」→「ページフォールト増加」→「ディスクI/O増大」→「スループット低下」の因果関係が成り立つ選択肢を選ぶ。
選択肢別の誤答解説
- ア: アプリケーションには、仮想記憶を利用するためのモジュールを組み込んでおく必要がある。
→ 誤り。仮想記憶はOSカーネルとMMUの機能であり、通常アプリは自前で仮想記憶モジュールを組み込む必要はありません(例外的に専用ランタイムやアンマネージ環境で特殊処理する場合はあるが一般論では誤り)。 - イ: 仮想記憶は、磁気ディスクにインストールされたアプリケーションだけが利用できる。
→ 誤り。仮想記憶はプロセスのアドレス空間を管理する仕組みで、実行時にメモリとディスク間でページをやり取りするので「インストール先で制限される」という表現は誤解を招きます。 - ウ: 仮想記憶を使用していても主記憶が少ないと、アプリケーション利用時にページフォールトが多発してシステムのスループットは低下する。
→ 正しい。ページフォールト発生時の高いディスク遅延と置換オーバーヘッドがスループットを下げます。 - エ: 仮想記憶を利用するためには、個々のアプリケーションで仮想記憶を使用するという設定が必要である。
→ 誤り。通常はOS側が仮想記憶を管理し、個別アプリの設定を要求しません(メモリロックなど特別設定は例外)。
よくある誤解
- 仮想記憶を使うにはアプリ側で特別なモジュールを組み込む必要がある:誤り。仮想記憶はOSとMMUが提供する機能で、通常のアプリは意識せず利用します。
- 仮想記憶はディスクにインストールされたアプリだけが利用可能:誤り。実体はプロセス毎の仮想アドレス空間で、起動中はページ単位で主記憶とディスクをやり取りします。
- 仮想記憶は常に性能向上につながる:誤り。主記憶不足や局所性の欠如でページフォールト率が高くなるとスラッシングが発生し性能は著しく低下します。
補足コラム
ページフォールトの影響は理論的には効果アクセス時間(Effective Access Time, EAT)で説明できます。アクセス時間を 、ページフォールト率を 、ページフォールト処理時間(ディスクI/O+処理)を とすると、
です。 が小さい限り EAT はほぼ に近いですが、 が増えると (大きい値)に引きずられて急激に遅くなります。これがスラッシング(thrashing)と呼ばれる状態で、CPUは有効な仕事をせずページ置換で時間を失います。対策としては物理メモリ増設、ワーキングセットを満たすプロセス数の制御、ページサイズや置換アルゴリズムの見直しなどがあります。
FAQ
Q. 仮想記憶はすべてのOSで自動的に有効ですか?
A. 多くの現代OSは仮想記憶(需要ページング)を標準で提供しますが、組込みOSなど一部は単純化されている場合があります。
A. 多くの現代OSは仮想記憶(需要ページング)を標準で提供しますが、組込みOSなど一部は単純化されている場合があります。
Q. ページフォールトとスラッシングの違いは何ですか?
A. ページフォールトは単一のページ欠如イベントで、通常は許容範囲です。スラッシングはページフォールト率が極端に高くCPU利用率が低下する状態を指します。
A. ページフォールトは単一のページ欠如イベントで、通常は許容範囲です。スラッシングはページフォールト率が極端に高くCPU利用率が低下する状態を指します。
Q. アプリ側で仮想記憶を制御することはできないのですか?
A. 一般的な制御はOS側ですが、mlock(ページをロックしてスワップさせない)や特定のヒント(madvise など)で影響を与えることは可能です。
A. 一般的な制御はOS側ですが、mlock(ページをロックしてスワップさせない)や特定のヒント(madvise など)で影響を与えることは可能です。
関連キーワード: 仮想記憶、ページフォールト、スワップ、ページ置換、MMU、ワーキングセット、スラッシング、需要ページング…

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

