仮想記憶とは?実際のメモリ容量を超えてプログラムを動かすしくみ

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

仮想記憶とは(全体像)

仮想記憶は、実際に積んでいるメモリより大きなプログラムを動かせるようにするしくみ。足りない分はディスク(スワップ領域)を一時的なメモリ代わりに使う。

身近な例が図書館。手元の机(実際のメモリ)に置ける本は限られるが、書庫(ディスク)に大量の本がある。必要な本を机に運び、使い終わったら書庫に戻す——こうして机より多くの本を扱える。

ここで大事なのは、仮想記憶は「ただディスクに逃がすだけ(スワップ)」ではないこと。本質は、プログラムから見える住所と本当の住所を分けて対応づける(アドレス変換)ことと、プロセスごとに住所空間を分ける(プロセス分離)ことにある。


詳しく:ページング・TLB・スラッシングだけ覚えれば戦える

ここが記事の心臓部。まず住所を変換するしくみから。

仮想記憶のしくみ(ページング)

用語役割図書館のたとえ
ページメモリを区切る固定サイズの単位(典型4KB)本1冊
ページテーブル論理アドレス→物理アドレスの変換表本の置き場所リスト
MMU変換を行うCPU内のしくみ場所を調べる図書館員

毎回この変換表をたどると遅い。そこで活躍するのがTLBだ。

TLBとページフォルト

用語内容
TLB最近の変換結果を覚えておく小さく速いメモリ(変換のキャッシュ)
ページフォルト必要なページがメモリになく、ディスクから運ぶときに起きる(重い)

TLBは「よく使う本の置き場所をメモに控えておく」ようなもの。メモにあれば一瞬で分かり、なければ置き場所リスト(ページテーブル)を調べる。TLBに当たる割合(ヒット率)が高いほど速い。

問題が起きるのは、メモリが足りないとき。

スラッシング

用語内容
スラッシングメモリ不足でページフォルトが頻発し、ディスクの出し入ればかりで処理が進まない状態
対策メモリを増やす・不要なプログラムを終える

つまり、机(メモリ)が小さすぎると、本の出し入れに追われて作業が進まない。これがスラッシングだ。バグではなく、メモリ不足による性能の落ち込みという点が頻出、というわけだね。

わかりやすく言い換えると

要するに、仮想記憶は「机に乗らない量の本も、書庫を使って扱えるようにする」しくみだ。

アドレス変換 … 見える住所と本当の住所を分けて対応づける(図書館員=MMU)

TLB … よく使う変換をメモに控えて速くする(変換のキャッシュ)

スラッシング … 机が小さすぎて出し入れに追われ、進まなくなる現象(メモリ不足)

「仮想記憶はただのスワップではない」「スラッシングはバグではない」だけは取り違えやすい。


試験のツボ

🔴 一番出る:仮想記憶の本質

①実メモリを超えてプログラムを動かせる

②本質はアドレス変換+プロセス分離(単なるスワップではない)

🔴 次に出る:TLBの役割

①ページテーブルの変換結果を覚える速いメモリ(キャッシュ)

②ヒット率が高いほど速い

🟡 押さえると安定:スラッシング

①メモリ不足でページフォルトが頻発し処理が進まない

②バグではなく性能劣化の現象。対策はメモリを増やすなど


よくある間違い

「仮想記憶はただのスワップと同じ」→ ✗  スワップは一機能。本質はアドレス変換とプロセス分離。

「スラッシングはプログラムのバグ」→ ✗  メモリ不足で起きる性能の落ち込み。バグではない。

「TLBはディスクのこと」→ ✗  TLBは変換結果を覚えるCPU近くの速いメモリ。ディスクではない。


試験での出題パターン

実際の問題でたしかめてみよう。

オリジナル問題1(仮想記憶の本質)

📝 オリジナル問題 1 仮想記憶の本質

仮想記憶に関する次の記述のうち、正しいものはどれか。

  1. 仮想記憶はメモリを使わず、すべての処理をディスクだけで行うしくみとされている
  2. 仮想記憶は実メモリを超えて動かすしくみで、本質はアドレス変換とプロセス分離だ
  3. 仮想記憶はプログラムの住所をいっさい変換せず、物理アドレスだけを使うものだ
  4. 仮想記憶は実メモリより小さなプログラムしか動かせないものと決められている
ネトスパ
ネトスパ 解答・解説

解答は 2 である。

仮想記憶は実メモリを超えて動かすしくみで、本質はアドレス変換とプロセス分離なのだ。ただのスワップではないことが大事なるぞ。

選択肢1の「ディスクだけ」、選択肢3の「変換しない」、選択肢4の「小さいものだけ」はどれも誤りである。

選択肢判定理由
1メモリも使う
2容量超え+アドレス変換+分離
3住所を変換する
4実メモリを超えて動かせる

オリジナル問題2(TLBの役割)

📝 オリジナル問題 2 TLBの役割

TLBに関する次の記述のうち、正しいものはどれか。

  1. TLBはディスクそのものを指す言葉で、変換とはなんの関係もないものとされている
  2. TLBは変換をかえって遅くするための部品で、ない方が速くなるものとされている
  3. TLBはページテーブルの変換結果を覚える速いメモリで、ヒット率が高いほど速い
  4. TLBはプログラムの命令を保存する装置で、アドレス変換にはいっさい関わらない
ネトスパ
ネトスパ 解答・解説

解答は 3 である。

TLBはページテーブルの変換結果を覚える速いメモリ(変換のキャッシュ)で、ヒット率が高いほど速いのだ。よく使う変換をメモに控える図書館員のようなものなるぞ。

選択肢1の「ディスク」、選択肢2の「遅くする」、選択肢4の「命令を保存」はどれも誤りである。

選択肢判定理由
1変換のキャッシュ
2変換を速くする
3変換結果を覚える速いメモリ
4アドレス変換に関わる

オリジナル問題3(スラッシング)

📝 オリジナル問題 3 スラッシング

スラッシングに関する次の記述のうち、正しいものはどれか。

  1. スラッシングはメモリ不足でページフォルトが頻発し、処理が進まなくなる現象だ
  2. スラッシングはプログラムのバグの一種で、コードを直せば必ずなくせるものとされる
  3. スラッシングはメモリが十分なときにだけ起こる、性能が上がる現象のことである
  4. スラッシングはディスクとは無関係で、メモリを増やしても直らないものとされている
ネトスパ
ネトスパ 解答・解説

解答は 1 である。

スラッシングはメモリ不足でページフォルトが頻発し、処理が進まなくなる現象なのだ。机が小さすぎて出し入れに追われる状態なるぞ。

選択肢2の「バグ」、選択肢3の「メモリ十分で性能向上」、選択肢4の「メモリを増やしても直らない」はどれも誤りである。

選択肢判定理由
1メモリ不足での性能劣化
2バグではない
3メモリ不足で起き性能は落ちる
4メモリ増設が対策になる

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る