対象試験と出題頻度
仮想記憶(ページング方式)は、基本情報技術者・応用情報技術者で出題されるテーマです。
OS(オペレーティングシステム)の記憶管理機能の中核であり、ページフォールトの処理順序やページ置換アルゴリズム(LRU・FIFO)の動作を正確に理解できるかが問われます。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★★★☆
ランクA(重要)必ず覚えておくべき
用語の定義
情報処理試験を勉強していると、「仮想記憶って何?ページングとセグメンテーションの違いは?」と混乱しがちです。
仮想記憶(Virtual Memory)のページング方式とは、一言で言うと
「プログラムを固定長の「ページ」に分割し、主記憶と補助記憶の間でページ単位にやり取りすることで、物理メモリ以上の記憶空間を利用可能にする仕組み」
のことです。
イメージとしては、「机が狭い人の書類整理術」です。
机(主記憶)のスペースは限られていますが、すぐ横にキャビネット(補助記憶)があります。今使わない書類はキャビネットにしまい、必要になったら机の上に出す。
この「入れ替え作業」を固定サイズのクリアファイル(ページ)単位で行っているのがページング方式です。
📊 仮想記憶(ページング方式)の基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | Virtual Memory(Paging) |
| 分類 | OSの記憶管理機能 |
| 管理単位 | 固定長のページ(一般的に4KB) |
| 主なキーワード | ページフォールト、ページイン、ページアウト、ページテーブル、スラッシング |
| 比較対象 | セグメンテーション方式(可変長で管理) |
解説
プログラムが大型化するにつれ、物理的な主記憶の容量だけでは足りなくなる場面が増えました。
そこでOSが「補助記憶の一部を主記憶の延長として使い、プログラムには物理メモリよりも大きな連続的なアドレス空間を見せる」技術が登場しました。これが仮想記憶です。
その仮想記憶を実現する代表的な方式がページングです。以下で動作の流れと関連概念を整理します。
ページング処理の流れ
主記憶に空きページ枠がない状態で、新たなページが必要になったときの処理は次の4ステップで進みます。
順番をそのまま答えさせる問題は資格試験では必需です。確実に押さえてください。
ページング処理の4ステップ
必要なページが主記憶に存在しないことを検知
LRU・FIFOなどのアルゴリズムで追い出すページを選択
選ばれたページを主記憶から補助記憶に退避
必要なページを補助記憶から主記憶に読み込み
図解:主記憶と補助記憶のページ入れ替え
主記憶と補助記憶のページ入れ替え
主記憶(RAM)
補助記憶(HDD/SSD)
▲ ページCが補助記憶に退避(ページアウト)され、ページFが主記憶に読み込まれる(ページイン)
ページ置換アルゴリズム
先ほどのステップ2で「どのページを追い出すか」を決めるのがページ置換アルゴリズムです。
代表的な4方式を整理します。
| 方式 | 正式名 | 置換ルール |
|---|---|---|
| FIFO | First-In First-Out | 最も早くページインされたページを追い出す |
| LIFO | Last-In First-Out | 最も新しくページインされたページを追い出す |
| LRU | Least Recently Used | 最後に参照されてからの経過時間が最も長いページを追い出す |
| LFU | Least Frequently Used | 参照回数が最も少ないページを追い出す |
何となくで覚えたい人向け:LRUとFIFOの違いをざっくり理解
FIFOは「到着順」で追い出す。最初に入った人が最初に退場するイメージで、現在使用中かどうかは考慮しない。
LRUは「最近使っていない順」で追い出す。教室で一番長い間手を挙げていない生徒を指名するイメージ。直近で参照されたページは残るため、FIFOよりページフォールトが少なくなる傾向がある。
試験ではLRUの動作を追跡させる計算問題が出るため、「最後の参照時刻が最も古いページを追い出す」というルールだけ覚えておけばOKです。
セグメンテーション方式との比較
仮想記憶の実現方式にはページング方式のほかにセグメンテーション方式があります。両者の違いは「管理単位が固定長か可変長か」に集約されます。
| 比較項目 | ページング方式 | セグメンテーション方式 |
|---|---|---|
| 管理単位 | 固定長(ページ) | 可変長(セグメント) |
| 外部断片化 | 発生しない | 発生する |
| 内部断片化 | 発生する(ページ末尾の余り) | 発生しない |
| アクセス保護 | ページ単位(物理的区切り) | 論理単位で保護しやすい |
| 入れ替え呼称 | ページイン / ページアウト | ロールイン / ロールアウト |
スラッシングとは
ページ置換が頻発しすぎると、CPUが本来の処理ではなくページの入れ替え作業ばかりに時間を取られ、システム全体の処理性能が急激に低下します。この現象がスラッシングです。
主記憶の容量が不足している状態や、同時に実行するプログラム数が多すぎる場合に発生します。
スラッシング発生のイメージ
← 同時実行プログラム数(多重度) →
多重度がピークを超えるとページ置換が頻発し、CPUが入れ替え処理ばかりに時間を取られて使用率が急落する
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 仮想記憶(ページング方式)の核心を3行で
・固定長のページ単位で主記憶と補助記憶の間をやり取りし、物理メモリ以上の空間を確保する
・処理順序は「ページフォールト → 置換対象決定 → ページアウト → ページイン」
・セグメンテーション方式と異なり外部断片化は起きないが、内部断片化は起きる
試験ではこう出る!
仮想記憶(ページング方式)は、FE・APの午前問題で毎期のように出題される定番テーマです。
出題パターンは大きく3つに分かれます。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| AP R6秋 午前 問18 |
セグメンテーション方式と比較した場合のページング方式の長所を選ぶ問題。 | ・正解は「主記憶の外部断片化が発生しない」 ・セグメンテーション方式の長所との混同がひっかけ |
| AP R6秋 午前 問17 |
ページ置換頻度が高まりシステム性能が急落する現象名を問う問題。 | ・正解は「スラッシング」 |
| AP R5春 午前 問18 |
仮想記憶方式に関する記述の正誤を問う問題。 | ・正解は「LRUは使用後の経過時間が最長のページを置換対象とする」 ・「固定長なのでフラグメンテーションは起きない」の理解も必要 |
| FE R3免除 問19 |
ページフォールト発生時の処理順序を問う問題。 | ・正解は「ページフォールト→置換対象決定→ページアウト→ページイン」 ・H20秋問27の再出題 |
| FE H26春 午前 問16 |
ページング方式の仮想記憶を用いることによる効果を選ぶ問題。 | ・正解は「処理に必要なページを動的に割り当て、主記憶を効率的に使用」 ・「ページは固定長」を理解していれば消去法で解ける |
📝 IPA試験での出題パターン
パターン1:処理順序の並べ替え
ページフォールト → 置換対象決定 → ページアウト → ページインの4ステップの順番を選ぶ形式。FEで繰り返し出題されている。「ページフォールトが最初」を覚えていれば選択肢を絞れる。
パターン2:LRUやFIFOの計算問題
ページ参照列とページ枠数が与えられ、ページフォールトの回数を問う形式。FE R6年6月修了問13などで出題。LRU方式では「最後に参照した時刻が最も古いページを追い出す」というルールに従って1ステップずつ追えば確実に正答できる。
パターン3:セグメンテーション方式との比較
APで定番。ページング方式の長所として「外部断片化が発生しない」を選ばせる。ひっかけとして「論理単位でアクセス保護できる」「記憶領域を共用できる」といったセグメンテーション方式の長所が紛れ込む。
試験ではここまででOKです。ページテーブルの内部構造やTLB(Translation Lookaside Buffer)の詳細まで問われることは午前問題ではほぼないので、深追いは不要です。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. ページング方式の仮想記憶において、主記憶に空きページ枠がない状態で必要なページにアクセスした場合の処理順序として、正しいものはどれでしょうか?
- A. ページフォールト → 置換え対象ページの決定 → ページアウト → ページイン
- B. 置換え対象ページの決定 → ページフォールト → ページアウト → ページイン
- C. ページフォールト → 置換え対象ページの決定 → ページイン → ページアウト
正解と解説を見る
正解:A
解説:
主記憶に必要なページが存在しない状態(ページフォールト)が起点となり、置換アルゴリズムで追い出すページを決定した後、そのページを補助記憶に退避(ページアウト)し、必要なページを主記憶に読み込む(ページイン)という順序で処理が進みます。
選択肢Bは、置換対象の決定がページフォールトより先に来ている点が誤りです。「主記憶にない」と判明する前に、置換対象を決めることはできません。選択肢Cは、ページインとページアウトの順序が逆です。空き枠がない状態では先にページアウトで枠を空けなければ、新しいページを読み込む場所がありません。
よくある質問(FAQ)
Q. ページのサイズは誰がどうやって決めているのですか?
ページサイズはOSとCPUのアーキテクチャによって決まります。多くのOSでは4KBが標準です。Linuxでは「getconf PAGE_SIZE」コマンドで確認できます。ページサイズを大きくすると管理テーブルは小さくなりますが、内部断片化(ページ末尾の無駄な空き)が増える傾向があります。
Q. スラッシングが発生したらどう対処すればよいですか?
根本的な対策は主記憶の増設です。それが難しい場合は、同時に実行するプログラム数を減らす(多重度の制御)か、不要なプロセスを停止して主記憶の空き枠を確保します。実務ではメモリ使用率の監視アラートを設定し、スラッシングの兆候が出た段階で早期対処するのが定石です。
Q. ページング方式とキャッシュメモリの違いは何ですか?
どちらも「速い記憶装置と遅い記憶装置の間でデータを入れ替える」という点は共通していますが、階層が異なります。キャッシュメモリはCPUと主記憶の間に位置し、記憶階層の上位で高速アクセスを実現します。一方、ページングは主記憶と補助記憶の間で行われ、メモリ空間の拡張を目的としています。キャッシュの制御はハードウェアが行い、ページングの制御はOSが行うという管理主体の違いもあります。
Q. 仮想記憶があれば主記憶は小さくても問題ありませんか?
問題があります。補助記憶(HDD/SSD)のアクセス速度は主記憶(RAM)の数百〜数千倍遅いため、ページの入れ替えが頻発すると処理速度が大幅に低下します。仮想記憶はあくまで「主記憶の不足を補う緊急手段」であり、主記憶が十分にある状態でこそ効果的に機能します。