仮想記憶(virtual memory)

分類
テクノロジ系 ソフトウェア
出る試験
基本情報応用情報
重要度
★★★☆☆

補助記憶を使って、主記憶より大きなメモリがあるように見せる仕組み。

もう少し詳しい説明

仮想記憶は、実際の主記憶(いま使うプログラムとデータを置いておく記憶装置)より大きなメモリがあるように見せかける仕組みです。

主記憶は、いま実行中のプログラムとデータを置いておく記憶装置です。いわゆる「メモリ」で、パソコンの仕様に「メモリ 8GB」と書かれているのがこれにあたります。電源を切ると中身は消えます。

補助記憶は、SSDやHDDのことです。電源を切っても消えず、容量も大きいかわりに、主記憶よりけた違いに遅い記憶装置です。

主記憶は、容量に限りがあります。8GB(ギガバイト。データの量を表す単位)のパソコンで、合計10GBぶんのアプリを開くことはできないはずです。ところが実際には動きます。足りないぶんを補助記憶で肩代わりしているからです。

仕組み:使わないものは追い出す

考え方は単純で、いま使うものだけを主記憶に置き、使わないものは補助記憶へ追い出すというものです。

机と引き出しの関係に似ています。机の上は狭いので、いま使う書類だけを広げ、使わないものは引き出しにしまう。必要になったら引き出しから出し、代わりに何かをしまう。こうすれば、机の広さ以上の書類を扱えます。

つまり、主記憶が机、補助記憶(SSDやHDD)が引き出しです。

使いたいページを探す主記憶にあるか?無ければページフォールト補助記憶から読み込む場所がなければ追い出すどれを追い出すかを決める
いま使うページだけを主記憶に置き、使わないページは補助記憶へ追い出します。こうすると、主記憶より大きなメモリがあるように見せられます。追い出す相手を選ぶ決まりが、LRUなどの置換えアルゴリズムです。

また、主記憶と補助記憶のあいだでデータをやり取りするには、単位を決めておく必要があります。1バイト(8ビット(0か1のどちらかを入れる1けた)をひとまとめにした単位。半角文字1文字ぶん)ずつ出し入れしていては、手間がかかりすぎるからです。

決まった大きさに区切って扱う方法をページング方式と呼び、区切られた1つ1つをページといいます。

ページフォールト:無かったら読み込む

使いたいページが主記憶に無いことがあります。この状態をページフォールトと呼びます。

フォールト(fault)は「欠落」の意味で、エラーではありません。起きたらOS(オペレーティングシステム。Windows、macOS、Android など、機械全体を動かす土台のソフト)が補助記憶から読み込むだけで、処理はそのまま続きます。ここは名前の印象に引きずられやすいので注意してください。

ただし、補助記憶の読み書きは主記憶よりけた違いに遅いので、頻繁に起きると全体が遅くなります。

スラッシング:入れ替えばかりで進まない

ページフォールトがあまりに頻繁に起きると、入れ替えに時間を取られて、本来の処理がほとんど進まなくなります。この状態をスラッシングと呼びます。

主記憶が足りないのに、たくさんのプログラムを同時に動かそうとすると起こります。机が狭すぎて、書類を出したりしまったりするだけで1日が終わる、という状態です。

ページフォールトが原因、スラッシングが結果という関係になっています。試験ではこの2つを並べて出すので、向きを押さえておいてください。

どれを追い出すか:置換えアルゴリズム

場所が足りないとき、どのページを追い出すかを決める必要があります。この決め方を置換えアルゴリズムと呼び、代表的なものが問われます。

方式何を追い出すか
LRU最後に使ってから最も時間が経ったもの
FIFO最も早く読み込んだもの(入れた順)
LFU使われた回数が最も少ないもの

いちばんよく出るのが LRU(Least Recently Used。「最後に使われたのがいちばん昔」という意味)です。「しばらく使っていないものは、この先も当分使わないだろう」という見込みで選びます。

残りの2つも、もとの言葉を並べておきます。FIFO(First In First Out。先に入れたものから先に出す)、LFU(Least Frequently Used。使われた回数がいちばん少ない)です。

キャッシュメモリとの違い

「速い場所と遅い場所を行き来させる」という点で、キャッシュメモリ(よく使うデータをCPUの近くに置いておく、小さくて速い記憶装置)と似て見えます。実際、試験では並べて出されます。違いは目的です。

キャッシュメモリは、CPU(計算と命令の実行を受け持つ部品)と主記憶のあいだに置く、小さくて速い記憶です。CPUは主記憶より何十倍も速く動くので、主記憶の返事を待つあいだ手を止めることになります。その待ち時間を減らすために、よく使うものだけを手前に置いておきます。

仮想記憶キャッシュメモリ
目的容量を大きく見せる速度差を埋める
主記憶から見ると主記憶が狭いので、外へ逃がす主記憶が遅いので、手前に置く
相手補助記憶(SSD・HDD)CPU(計算を受け持つ部品)

仮想記憶は容量の話、キャッシュは速さの話。 一言でいえばこの違いです。向きも逆で、仮想記憶は主記憶より外側へ、キャッシュは主記憶より内側へ働きます。

覚え方:机と引き出し

用語が3つ出てきますが、机の絵で全部つながります。

「引き出しを開けるのは当たり前、開けてばかりなのは異常」。この区別だけ持っておけば、2つを取り違えません。

試験ではこう出る

科目A(旧・午前)のソフトウェア分野で出ます。

多いのは、ページフォールト(使いたいページが主記憶に無いこと)やスラッシング(入れ替えばかりで処理が進まなくなる状態)の説明を選ばせる問題と、置換えアルゴリズム(どのページを追い出すかの決め方。とくにLRU)が何を追い出すかを問う問題です。

キャッシュメモリ(CPUと主記憶のあいだに置く、小さくて速い記憶)と並べて「目的が容量か速度か」を区別させる形もあります。応用情報では、ページの参照順を示してLRUで何回ページフォールトが起きるかを数えさせる計算問題として出ます。

参照順を追う問題は、主記憶にいまどのページがあるかを、1回ごとに紙に書き出すのが確実です。頭の中で追うと必ずどこかで取り違えます。LRUなら「使ったものを毎回いちばん新しい側へ動かす」だけなので、書き出してさえいれば間違えようがありません。

関連する用語

キャッシュメモリ
よく使うデータをCPUの近くに置く仕組み。速度差を埋めるのが目的で、狙いが違う
ページング
メモリを決まった大きさに区切って入れ替える方式。いまの主流
ページフォールト
使いたいページが主記憶に無いこと。補助記憶から読み込み直す
LRU
追い出す相手を決める方法の1つ。最後に使ってから最も時間が経ったものを選ぶ
スラッシング
入れ替えばかりが起きて処理が進まなくなる状態。主記憶が足りないと起こる
主記憶
プログラムとデータを置く場所。仮想記憶はここを実際より大きく見せる

ミニクイズ

仮想記憶において、アクセスしようとしたページが主記憶に存在しないときに発生する事象はどれか。

正解は 2番:ページフォールト

使いたいページが主記憶に無い状態をページフォールトと呼びます。発生するとOS(機械全体を動かす土台のソフト)が補助記憶(SSDやHDDなど、電源を切っても消えない記憶装置)から該当ページを読み込み、場所が足りなければ別のページを追い出します。スラッシングは、そのページフォールトがあまりに頻繁に起きて、入れ替えばかりに時間を取られ処理が進まなくなった状態で、原因と結果の関係にあります。フラグメンテーションは、空き領域が細切れになって使いにくくなる現象です。デッドロック(2つの処理が、互いに相手の持っているものを待ち続けて、どちらも進めなくなる状態)は、どちらも仮想記憶のページ管理とは別の話です。

間違えた用語の復習リストを見る →

この分野をまとめて解く → システム構成要素とソフトウェアのミニテスト(全28問)

最終更新:2026-09-16