基本情報技術者試験のOS分野で、仮想記憶やページング方式が出てくると急に難しく感じる人は多いです。主記憶、補助記憶、ページ、ページフォールト、LRUといった言葉が続くので、丸暗記だけで進めると選択肢の判断があいまいになりやすいですね。
ただ、仮想記憶は「足りない主記憶をうまく使う仕組み」、ページングは「データを同じ大きさの箱に分けて管理する方法」と考えると、一気に整理しやすくなります。この記事では、基本情報の仮想記憶とページングを、試験で問われる流れに合わせてやさしく解説します。
ページ置換の問題も、最初は表の動きが複雑に見えます。しかし、ページがない、取りに行く、空きがなければ追い出す、という順番を守れば解けます。用語の意味と手作業の追い方をセットで押さえていきましょう。
- 仮想記憶は主記憶を効率よく見せる仕組み
- ページングは固定長のページ単位で管理する方式
- ページフォールトは必要なページが主記憶にない状態
- FIFOとLRUは追い出すページの選び方が違う
基本情報の仮想記憶とページング

仮想記憶の目的
仮想記憶は、プログラムから見ると大きな記憶領域があるように見せる仕組みです。実際の主記憶には限りがありますが、補助記憶装置の一部も使いながら、必要な部分だけを主記憶に置いて実行します。試験では、この「全部を一度に主記憶へ載せない」という発想が重要です。大きなプログラムでも、いま実行に必要な部分だけが主記憶にあれば処理を進められるため、主記憶を効率よく使えるわけですね。
基本情報では、仮想記憶そのものを深いOS実装として問うよりも、ページング、ページフォールト、ページ置換、スラッシングといった関連用語を組み合わせて出すことが多いです。IPAの試験要綱・シラバスでも、コンピュータ構成要素やシステム構成要素の周辺知識として記憶管理の理解が前提になります。出題範囲を確認したい場合は、IPA公式の試験要綱・シラバスを見ておくと安心です。
注意したいのは、仮想記憶があるから処理が必ず速くなる、という理解ではないことです。補助記憶へのアクセスは主記憶より遅いので、必要なページが主記憶になく、補助記憶から読み込む回数が増えると性能は落ちます。つまり仮想記憶は便利な管理方式ですが、使い方やアクセスの偏りによっては遅くなる可能性もあります。この二面性が、基本情報の選択肢でよく狙われます。
似た学習テーマとして、CPUがどれだけ速く命令を処理できるかは基本情報のCPU性能計算で整理しています。仮想記憶は「記憶装置をどう使うか」、CPU性能は「処理速度をどう測るか」なので、合わせて読むとコンピュータ構成のつながりが見えやすくなります。
ページング方式の基本
ページング方式は、仮想記憶を固定長のページという単位に分け、主記憶側も同じ大きさのページ枠で管理する方式です。固定長でそろえるため、可変長に比べて管理しやすく、ページ単位で主記憶と補助記憶の間を入れ替えられます。試験では「ページ」と「ページ枠」を混同しやすいので、言葉の向きだけ先に分けておくのがおすすめです。仮想アドレス空間側の箱がページ、主記憶側で受け入れる箱がページ枠、と考えると迷いにくいです。
| 用語 | 見る場所 | 試験での意味 |
|---|---|---|
| ページ | 仮想記憶側 | プログラムを固定長に分けた単位 |
| ページ枠 | 主記憶側 | ページを入れる固定長の枠 |
| ページ表 | 対応表 | 仮想ページと主記憶上の位置を対応づける表 |
| ページフォールト | 実行時 | 必要ページが主記憶にない状態 |
ページング方式でよく問われるのは、アドレス変換の考え方です。プログラムは仮想アドレスでページを指定しますが、実際にアクセスする主記憶上の場所はページ表を使って変換されます。ページ表には、あるページが主記憶にあるか、あるならどのページ枠にあるか、といった情報が入ります。この対応表があるから、プログラム側は細かい物理的な配置を意識せずに実行できるわけです。
基本情報の問題文では、ページング方式の長所短所を問う選択肢も出ます。「固定長なので管理しやすい」「ページ表で対応づける」「必要なページだけ主記憶に置く」は正しい方向です。一方で、「補助記憶アクセスが増えても性能低下しない」「常にすべてのページを主記憶に置く」といった説明はズレています。言葉を丸暗記するより、ページという箱を必要に応じて出し入れする絵を思い浮かべると判断しやすいかなと思います。
ページインとページアウト
ページインは、必要になったページを補助記憶から主記憶へ読み込む動きです。反対にページアウトは、主記憶から追い出すページを補助記憶へ戻す動きです。言葉だけ見ると似ていますが、方向が逆です。ページインは「入れる」、ページアウトは「出す」と考えれば覚えやすいですね。基本情報では、ページフォールトが起きたあと、必要なページをページインし、空きがなければ別のページをページアウトする、という流れで理解しておくと問題文を追いやすくなります。
- ページインは必要ページを主記憶に読み込む処理
- ページアウトは不要ページを主記憶から退避する処理
- 主記憶に空きがあればページアウトせずに済むこともある
- 空きがない場合はページ置換アルゴリズムで追い出すページを選ぶ
ここで大切なのは、ページインとページアウトが発生するたびに補助記憶へのアクセスが絡むことです。主記憶の中だけで完結するアクセスに比べると、補助記憶を読む処理は重くなります。そのため、ページフォールトが少ない状態では効率よく動きますが、頻繁にページの入れ替えが起きると処理全体が遅くなります。試験では「ページフォールトが増えると性能が低下する」という方向で押さえておきましょう。
ページインとページアウトは、キャッシュメモリのヒット率とも考え方が少し似ています。必要なものが近い場所にあれば速く、なければ遠い場所へ取りに行くため遅くなる、という構造です。キャッシュの計算問題は基本情報のキャッシュメモリで扱っているので、記憶階層のイメージを固めたい人は合わせて確認しておくと理解がつながります。
ページフォールトの流れ
ページフォールトは、CPUが参照したいページが主記憶上に存在しないときに発生します。英語のfaultという言葉から「故障」のように感じるかもしれませんが、試験の文脈ではエラーで処理終了というより、必要なページがないので補助記憶から持ってくるきっかけ、と考えるとよいです。もちろん発生回数が多いと性能は落ちますが、仮想記憶を使う仕組みの中では想定されている動作です。
参照したページが主記憶にないことを検出し、補助記憶から必要なページを読み込みます。主記憶に空きがなければ、置換対象のページを選んで退避してから読み込みます。
試験問題では、ページフォールト回数を数えさせる形式が出ることがあります。この場合は、参照列を左から順に見て、現在の主記憶の中にそのページがあるかを確認します。あればヒットなのでページフォールトは増えません。なければページフォールトとして数え、空き枠があればそこに入れ、空き枠がなければFIFOやLRUなどのルールでページを入れ替えます。ここで焦って先の参照まで見すぎると、FIFOとLRUの判断が混ざりやすいです。
ページフォールトは「ないから取りに行く」という単純な出来事ですが、問題になると表が大きく見えて難しく感じます。まずは参照ページ、主記憶内のページ、ページフォールトの有無の3つだけを追えば十分です。ページ表の細かい状態や置換アルゴリズムの名前に意識を奪われる前に、いま必要なページが入っているかどうかを確認する癖をつけましょう。これだけで、選択肢問題も計算問題もかなり安定します。
スラッシングの注意点
スラッシングは、ページの入れ替えが頻繁に起こりすぎて、本来の処理よりもページイン・ページアウトに時間を取られてしまう状態です。仮想記憶は便利ですが、主記憶に対して実行中のプログラムや必要ページが多すぎると、必要なページを読み込んだ直後に別のページを追い出し、またすぐ必要になって読み戻す、という悪循環が起こります。これが進むとCPUは仕事をしているように見えても、実際には記憶装置間の入れ替えに追われます。
ページフォールトが多発し、補助記憶アクセスが増え、CPU利用率や実行効率が下がる方向の説明が出たらスラッシングを疑います。
基本情報の選択肢では、スラッシングの原因や対策が問われることがあります。原因としては、主記憶容量に対して多くの処理を同時に動かしすぎること、局所性が低く必要ページが散らばることなどが挙げられます。対策の方向は、主記憶を増やす、同時実行するプログラム数を減らす、ページ置換を適切にする、ワーキングセットを意識する、といったものです。細かい専門用語を完全に覚えていなくても、「入れ替えが多すぎて遅い状態」とつかめていれば判断できます。
- ページフォールトが頻発する
- ページインとページアウトが増える
- 補助記憶アクセスが増えて処理が遅くなる
- 同時実行数を増やしすぎると悪化しやすい
スラッシングを「仮想記憶の存在そのものが悪い」と覚えるのは少し乱暴です。仮想記憶は主記憶を効率よく使うための仕組みで、問題になるのはページの入れ替えが過剰になった場合です。したがって、選択肢で「仮想記憶を使うと必ずスラッシングが発生する」といった断定があれば疑ってください。基本情報では、断定表現よりも、条件付きで性能が低下する説明のほうが正しいことが多いです。
基本情報のページング問題対策

FIFOとLRUの違い
ページ置換アルゴリズムは、主記憶に空きがないときに、どのページを追い出すかを決めるルールです。基本情報でまず押さえたいのはFIFOとLRUです。FIFOはFirst In First Outの略で、最初に入ったページを先に追い出します。キューと同じ考え方ですね。LRUはLeast Recently Usedの略で、最も長い間使われていないページを追い出します。似ているようで、見る基準がまったく違います。
| 方式 | 追い出す基準 | 見るポイント |
|---|---|---|
| FIFO | 最も古く入ったページ | 入った順番だけを見る |
| LRU | 最も長く使われていないページ | 最後に参照された時点を見る |
| LFU | 参照回数が少ないページ | 使われた回数を見る |
FIFOでは、一度ページが入ったら、その後に参照されても入った順番は基本的に変わりません。つまり、最近使ったかどうかではなく、いつ主記憶へ入ったかを見ます。一方でLRUでは、参照されるたびに「最近使われた」という情報が更新されます。したがって、同じ参照列でもFIFOとLRUでページフォールト回数が変わることがあります。ここを混同すると、表を正しく埋めているつもりでも答えがずれます。
FIFOはデータ構造のキューと関連します。科目Bのデータ構造としてのキューを復習したい場合は、基本情報のスタックとキューも役立ちます。ただし、ページ置換で問われるFIFOは、キューの性質そのものより「入った順番で追い出す」という考え方が中心です。LRUは順番の管理が少し面倒ですが、最後に参照されたタイミングをメモすれば落ち着いて解けます。
手作業トレースの手順
ページ置換の問題は、頭の中だけで解こうとすると高確率で混乱します。参照列が短くても、ページ枠が3つ、4つと増えると、どのページがいつ入ったのか、どのページが最近使われたのかを忘れやすいからです。そこで、試験対策では表を手で追う方法を決めておくのが大切です。解き方の型が決まっていれば、FIFOでもLRUでもやることはかなり機械的になります。
- 参照列を左から一つずつ見る
- 主記憶のページ枠にあるか確認する
- なければページフォールトとして数える
- 空きがなければ方式に従って置換する
- LRUでは参照されたページの最新利用時点を更新する
最初に、ページ枠の数だけ行を用意します。次に、参照列を列として左から並べます。各列で、参照したページがすでに枠内にあるか確認します。あれば枠の中身はそのままですが、LRUなら最新利用時点を更新します。なければページフォールトです。空き枠が残っていればそこへ入れます。空き枠がなければ、FIFOなら最も古く入ったページ、LRUなら最も長く参照されていないページを消して、新しいページを入れます。

本文途中の画像のように、列ごとに色や印を付けて考えると、入れ替えの瞬間が見やすくなります。本番で色は使えませんが、問題用紙の余白に小さな表を作るだけでも十分です。重要なのは、ページフォールトが起きた列だけで置換を考えることです。すでに主記憶にあるページを参照した列で、うっかり追い出し候補を変えてしまうと、以降の表が全部ずれてしまいます。
ページ表で見るポイント
ページ表は、仮想ページ番号と主記憶上のページ枠番号を対応づける表です。問題によっては、ページ表の有効ビットや存在ビットのような情報が出ることもあります。有効なら主記憶上にページがあり、無効なら主記憶上にはないため、参照するとページフォールトが発生します。難しい名前が出ても、まずは「このページは主記憶にあるのか」を確認する表だと考えれば大丈夫です。
| ページ表の項目 | 意味 | 見るべきこと |
|---|---|---|
| ページ番号 | 仮想記憶側の番号 | 参照したいページか確認 |
| ページ枠番号 | 主記憶側の位置 | 実際にどこへ対応するか確認 |
| 有効ビット | 主記憶上にあるか | 無効ならページフォールト |
| 更新情報 | 書換えの有無 | 退避が必要か判断する材料 |
ページ表が出る問題では、アドレス変換とページフォールトのどちらを問われているかを見分ける必要があります。アドレス変換なら、ページ番号とページ内変位を分け、ページ表でページ枠を探して物理アドレスを組み立てます。ページフォールトなら、有効か無効か、主記憶にあるかないかを確認します。問題文が長くても、問われている作業はこのどちらかに寄ることが多いです。
更新情報や参照情報まで出ると難しく見えますが、それらはページ置換やページアウト時の判断材料です。たとえば、書き換えられたページを追い出すなら補助記憶へ書き戻す必要がある、という説明につながります。基本情報では細かいビット名を深追いしすぎるよりも、ページ表が仮想記憶と主記憶をつなぐ対応表であることを押さえるほうが得点に結びつきます。見慣れない表が出ても、対応関係を落ち着いて読むことが大切です。
ひっかけ選択肢の見分け方
仮想記憶とページングの選択肢問題では、正しそうに見える断定表現がよく出ます。たとえば「ページング方式では断片化は一切発生しない」「ページフォールトは常に異常終了を意味する」「LRUは最初に入ったページを追い出す」といった説明です。どれも用語の一部だけを見ると近そうですが、正確には違います。ページングでは外部断片化は起きにくいものの、内部断片化は起こり得ます。ページフォールトは必要ページが主記憶にない状態であり、通常の仮想記憶管理の流れでも発生します。LRUは最終参照時点を見る方式で、FIFOとは基準が異なります。
「必ず」「常に」「一切」といった強い表現は慎重に読みます。仮想記憶は便利な仕組みですが、補助記憶アクセスやページ置換が増えれば性能低下も起こります。
もう一つのひっかけは、キャッシュメモリと仮想記憶を混ぜる説明です。どちらも「近い場所になければ遠い場所へ取りに行く」という考え方は似ていますが、目的と管理単位が違います。キャッシュはCPUと主記憶の速度差を埋めるための仕組み、仮想記憶は主記憶を効率よく使い、大きな記憶空間を扱うための仕組みです。似た言葉に引っ張られず、どの記憶階層の話かを確認しましょう。
- FIFOとLRUの追い出し基準を逆に読む
- ページフォールトを故障や異常終了と決めつける
- ページングでは断片化が一切ないと覚える
- 補助記憶アクセスが増えても性能は落ちないと考える
基本情報の科目Aは、用語の正確な理解がそのまま選択肢の判断につながります。もしOS分野だけでなく全体の勉強順も迷っているなら、基本情報技術者試験の勉強法で科目Aと科目Bの進め方を確認しておくと、暗記と演習のバランスを取りやすくなります。仮想記憶は単独で覚えるより、CPU、主記憶、補助記憶、キャッシュとセットで見ると定着しやすいです。
まとめ
基本情報の仮想記憶とページングは、最初に用語が多く見えるため難しく感じます。しかし、核になる考え方はシンプルです。仮想記憶は大きな記憶空間を扱いやすく見せる仕組み、ページングはそれを固定長のページ単位で管理する方式です。必要なページが主記憶にあればそのまま進み、なければページフォールトが発生し、必要なページをページインします。空きがなければ、ページ置換アルゴリズムで追い出すページを決めます。
ページング問題では、参照ページが主記憶にあるかを先に確認します。FIFOは入った順、LRUは最後に使った時点を見て、ページフォールトが起きた列だけ置換を考えます。
試験対策では、FIFOとLRUの違いを表で追えるようにしておくのが効果的です。特にLRUは、参照されたページの「最近使った情報」が更新される点を忘れやすいです。参照列を左から順に進め、主記憶にあるか、フォールトか、置換が必要かを一つずつ確認しましょう。スラッシングや内部断片化などの用語も、ページの入れ替えや固定長管理の話としてつなげると覚えやすくなります。
最後は問題演習で確認するのが一番です。ページ置換は、表を何度か手で埋めると急に見えるようになります。今すぐ練習したい方は、基本情報の過去問アプリで無料演習しながら、ページフォールトの数え方をチェックしてみてください。用語理解と手作業トレースを組み合わせれば、仮想記憶の問題は安定して取れる分野になります。
最初の1冊で迷うなら
基本情報を初めて学ぶ人は、解説がやさしく問題演習まで一冊で進められる参考書を選ぶと挫折しにくくなります。


コメント