仮想記憶(仮想メモリ)の本質や仕組み、メリット 〜スワップ、MMU、ページングテーブルについて〜

スポンサーリンク
スポンサーリンク

仮想メモリとは?

仮想メモリという言葉は今では紛らわしいのですが、2つの意味があります。

1つは仮想記憶とも呼ばれる、スワップ等で使われる技術を指します。もう1つは仮想サーバ上のメモリのことを指します。しかしこの記事では仮想サーバ上のメモリの話はしません。

仮想記憶の本質

1つ目の「仮想記憶」に関してですが、「仮想記憶=スワップ」と勘違いされる方もいますが、本質は違います

アプリケーションを作成する際に、メモリを意識したプログラミングが必要になりますが、物理メモリのアドレスをアプリケーション開発者が扱うのは極めて困難です。

そこで、アプリケーション開発者が扱いやすいように、物理的にバラバラなアドレスを、連番でのアドレスとして扱えるようにしたのが仮想記憶です。

仮想記憶の概念を使うことで、アプリケーション開発者は欲しい量だけを要求するプログラミングにすればよく、どこから払い出せば良いかはOS側で対処します。OSは解放された物理アドレスをかき集め、連番の仮想記憶へ振り直し、アプリへ払い出します。

その副次的な拡張機能として、HDDの一部の領域も仮想記憶のアドレスとして考えてしまうスワップが考案、実装されたのです。

仮想記憶のアドレスと物理メモリのアドレスの変換はMMU(Memory Management Unit: メモリ管理ユニット)が行います。MMUは仮想アドレスと物理アドレスをどう変換するかが記載されている”ページングテーブル“を使い変換するのです。このページングテーブルは、刻一刻と変化しますので、随時更新が行われます。

MMUはかつてはメモリコントローラに存在し、CPUとメモリの間に挟まれていましたが、今やメモリコントローラはCPUに内蔵されるようになり、MMUもCPU内蔵となっています。

なぜ混同される?

Windowsではスワップ領域のことを『仮想メモリ』と表現していることが原因だと思われます。

まとめ

仮想記憶は本来はアプリケーションに対して連番のアドレスを提供する機能、その副次的な拡張機能としてスワップがあり、「仮想記憶のうち、HDDを使う領域=スワップ」なのです。

スポンサーリンク
スポンサーリンク
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク