仮想アドレス(論理アドレス)とは?ゆるーくわかりやすく解説



1. 仮想アドレス(論理アドレス)
仮想アドレスとは、コンピュータのプログラムやプロセスが利用するアドレスのことです。実際の主記憶装置(メモリ)のアドレスとは異なり、あくまで「仮想的」に割り当てられるアドレスです。この仕組みを利用することで、プログラムが直接物理メモリにアクセスするのではなく、仮想的な空間を通じてメモリを利用します。主に仮想記憶方式で利用されます。論理アドレスとも呼ばれます。
1.1. 英語から考えると
仮想アドレスは英語だと、Virtual Addressです。
- 「Virtual」は「仮想的な」「実際には存在しないが、あたかもあるかのように扱う」という意味があります。
- 「Address」は「住所」や「位置」を指します。
したがって、「Virtual Address」は「実際には存在しないが、仮に割り当てられた位置」を意味します。なんだかIPアドレスみたいですね。
一方で、仮想アドレスは論理アドレスとも呼ばれます。英語だと、logical addressです。
- 「Logical」は「論理的な」「仕組みとしての」という意味があります。
- 「Address」は同じく「位置」を意味します。
したがって、「Logical Address」は「論理的に割り当てられた位置」を意味します。仮想アドレスとほぼ同義で使われることもありますが、文脈によっては意味が違う場合もあります。
2. 仮想アドレスの仕組み
仮想アドレスの仕組みは、主に仮想記憶方式で利用されています。また、仮想アドレスを使うためには物理アドレスと対応させる必要があります。そこで登場するのがMMUです。


2.1. メモリ管理ユニット(MMU)
MMUは仮想アドレスを物理アドレスに変換する役割を担います。例えば、CPUがあるプログラムを要求しましたが、プログラムは仮想アドレスを割り当てれています。このとき、MMUが自動的に対応する物理アドレスを探します。この変換のことをDATとも呼びます。
2.2. ページテーブル
仮想アドレスと物理アドレスの対応表です。このテーブルを用いて、MMUが正しい物理アドレスを参照します。
3. 仮想アドレスの例
例えば、仮想アドレスが「0x2000」という値だったとします。このアドレスは直接物理メモリ上の「0x2000」という場所を指しているわけではありません。MMUがページテーブルを参照し、例えば物理アドレス「0x6000」に変換してアクセスします。
4. 仮想アドレスと物理アドレスの違い
項目 | 仮想アドレス | 物理アドレス |
---|---|---|
定義 | プログラムが利用する仮想的なメモリアドレス | 実際の物理メモリ上のアドレス |
管理者 | MMUが管理 | ハードウェア(物理メモリ)が管理 |
独立性 | 各プロセスごとに独立 | すべてのプロセスで共有 |
メモリ配置の自由度 | 高い | 物理メモリの制約を受ける |
5. まとめ
仮想アドレスは、仮想的なメモリ空間上で割り当てられるアドレスです。言い換えると、あくまで「仮想的」に割り当てられるアドレスです。