仮想記憶(virtual memory)
- テクノロジ系
- ソフトウェア
- 基本情報
- 応用情報
- 重要度 ★★★☆☆
補助記憶を使って、主記憶より大きなメモリがあるように見せる仕組み。
もう少し詳しい説明
仮想記憶は、実際の主記憶より大きなメモリがあるように見せかける仕組みです。
主記憶(いわゆるメモリ)は、容量に限りがあります。8GBのパソコンで、合計10GBぶんのアプリを開くことはできないはずです。ところが実際には動きます。足りないぶんを補助記憶(SSDやHDD)で肩代わりしているからです。
仕組み:使わないものは追い出す
考え方は単純で、いま使うものだけを主記憶に置き、使わないものは補助記憶へ追い出すというものです。
机と引き出しの関係に似ています。机の上は狭いので、いま使う書類だけを広げ、使わないものは引き出しにしまう。必要になったら引き出しから出し、代わりに何かをしまう。こうすれば、机の広さ以上の書類を扱えます。主記憶が机、補助記憶が引き出しです。
また、データをやり取りする際には単位を決めておく必要があります。決まった大きさに区切って扱う方法をページング方式と呼び、区切られた1つ1つをページといいます。
ページフォールト:無かったら読み込む
使いたいページが主記憶に無いことがあります。この状態をページフォールトと呼びます。
フォールト(fault)は「欠落」の意味で、エラーではありません。起きたらOSが補助記憶から読み込むだけで、処理はそのまま続きます。ここは名前の印象に引きずられやすいので注意してください。
ただし、補助記憶の読み書きは主記憶よりけた違いに遅いので、頻繁に起きると全体が遅くなります。
スラッシング:入れ替えばかりで進まない
ページフォールトがあまりに頻繁に起きると、入れ替えに時間を取られて、本来の処理がほとんど進まなくなります。この状態をスラッシングと呼びます。
主記憶が足りないのに、たくさんのプログラムを同時に動かそうとすると起こります。机が狭すぎて、書類を出したりしまったりするだけで1日が終わる、という状態です。
ページフォールトが原因、スラッシングが結果という関係になっています。試験ではこの2つを並べて出すので、向きを押さえておいてください。
どれを追い出すか:置換えアルゴリズム
場所が足りないとき、どのページを追い出すかを決める必要があります。この決め方を置換えアルゴリズムと呼び、代表的なものが問われます。
| 方式 | 何を追い出すか |
|---|---|
| LRU | 最後に使ってから最も時間が経ったもの |
| FIFO | 最も早く読み込んだもの(入れた順) |
| LFU | 使われた回数が最も少ないもの |
いちばんよく出るのが LRU(Least Recently Used)です。「しばらく使っていないものは、この先も当分使わないだろう」という見込みで選びます。
キャッシュメモリとの違い
「速い場所と遅い場所を行き来させる」という点で、キャッシュメモリと似て見えます。実際、試験では並べて出されます。違いは目的です。
| 仮想記憶 | キャッシュメモリ | |
|---|---|---|
| 目的 | 容量を大きく見せる | 速度差を埋める |
| 主記憶から見ると | 主記憶が狭いので、外へ逃がす | 主記憶が遅いので、手前に置く |
| 相手 | 補助記憶(SSD・HDD) | CPU |
仮想記憶は容量の話、キャッシュは速さの話。 一言でいえばこの違いです。向きも逆で、仮想記憶は主記憶より外側へ、キャッシュは主記憶より内側へ働きます。
覚え方:机と引き出し
用語が3つ出てきますが、机の絵で全部つながります。
- ページ … 書類1枚ぶんの単位
- ページフォールト … 使いたい書類が机になく、引き出しを開けること。ふつうのこと
- スラッシング … 出し入ればかりで仕事が進まない状態。異常なこと
「引き出しを開けるのは当たり前、開けてばかりなのは異常」。この区別だけ持っておけば、2つを取り違えません。
試験ではこう出る
科目A(旧・午前)のソフトウェア分野で出ます。多いのは、ページフォールトやスラッシングの説明を選ばせる問題と、置換えアルゴリズム(特にLRU)が何を追い出すかを問う問題です。キャッシュメモリと並べて「目的が容量か速度か」を区別させる形もあります。応用情報では、ページの参照順を示してLRUで何回ページフォールトが起きるかを数えさせる計算問題として出ます。
参照順を追う問題は、主記憶にいまどのページがあるかを、1回ごとに紙に書き出すのが確実です。頭の中で追うと必ずどこかで取り違えます。LRUなら「使ったものを毎回いちばん新しい側へ動かす」だけなので、書き出してさえいれば間違えようがありません。
関連する用語
- キャッシュメモリ
- よく使うデータをCPUの近くに置く仕組み。速度差を埋めるのが目的で、狙いが違う
- ページング
- メモリを決まった大きさに区切って入れ替える方式。いまの主流
- ページフォールト
- 使いたいページが主記憶に無いこと。補助記憶から読み込み直す
- LRU
- 追い出す相手を決める方法の1つ。最後に使ってから最も時間が経ったものを選ぶ
- スラッシング
- 入れ替えばかりが起きて処理が進まなくなる状態。主記憶が足りないと起こる
- 主記憶
- プログラムとデータを置く場所。仮想記憶はここを実際より大きく見せる
ミニクイズ
仮想記憶において、アクセスしようとしたページが主記憶に存在しないときに発生する事象はどれか。
正解は 2番:ページフォールト
使いたいページが主記憶に無い状態をページフォールトと呼びます。発生するとOSが補助記憶から該当ページを読み込み、場所が足りなければ別のページを追い出します。スラッシングは、そのページフォールトがあまりに頻繁に起きて、入れ替えばかりに時間を取られ処理が進まなくなった状態で、原因と結果の関係にあります。フラグメンテーションは、空き領域が細切れになって使いにくくなる現象です。デッドロックは複数の処理が互いの資源を待ち合って動かなくなる状態で、どちらも仮想記憶のページ管理とは別の話です。
最終更新:2026-09-16