仮想メモリ 【virtual memory】 仮想記憶 / バーチャルメモリー
概要
仮想メモリ(virtual memory)とは、オペレーティングシステム(OS)によるメモリ管理の方式の一つで、メモリ領域に物理的なアドレス(番地)とは別に仮想的なアドレスを割り当てて管理する方式。細切れのメモリ空間を連結して一つの連続した空間として利用したり、ストレージ(外部記憶装置)上にも仮想的なメモリ領域を確保することで、メインメモリ(物理メモリ)の容量を超えてメモリ空間を利用することができる。
物理メモリと仮想メモリの対応付け
OSは物理メモリ上の領域と仮想メモリ上の領域の対応付け(マッピング)を行い、コンピュータ内部のMMU(Memory Management Unit)と呼ばれる制御回路によって相互のアドレスの変換を行う。かつてはMMUが独立したICチップなどとして提供されることもあったが現在ではほとんどの場合マイクロプロセッサ(CPU/MPU)に内蔵されている。
物理メモリ空間でのアドレスを「物理アドレス」(physical address)あるいは「実アドレス」(real address)、仮想メモリ空間内におけるアドレスを「論理アドレス」(logical address)あるいは「仮想アドレス」(virtual address)と呼ぶ。
OS上で動作するプログラム(プロセス)には仮想メモリ領域が割り当てられ、OSを介してメモリにアクセスする。こうすることで物理メモリ上で細切れの領域を集めて一つの大きな仮想メモリ領域を確保することができる。個々のプログラム側でも自ら物理メモリ領域を管理する必要がなくなり、OSから連続したアドレス空間が与えられたように見える。
ストレージ領域の利用
ハードディスクやSSDなどのストレージ装置上に専用の領域(スワップファイル、ページファイル、スワップ領域などと呼ばれる)を設け、仮想アドレスを割り当てることにより、仮想メモリ空間を物理メモリ空間より大きく取ることができる。
ストレージ上の領域に実際にアクセスするには物理メモリ上にその内容を読み込まなければならないため、物理メモリの中で現在使われていない領域との入れ替え(スワップ)がOSによって行われる。
メインメモリの物理容量に対してあまりに大きな仮想メモリを確保すると、このスワップ処理が頻繁に発生するようになり、ついには処理がほとんど進まない状況に陥る「スラッシング」(thrashing)現象が発生することがある。
ページとセグメント
仮想メモリの管理を一定の大きさの領域を単位として行う方式を「ページング方式」、プログラムやデータのまとまりごとに不定長の大きさで管理する方式を「セグメント方式」と呼ぶ。
現代ではほとんどの場合ページング方式が用いられる。ページング方式の仮想メモリでは、ページと呼ばれる決まった大きさ(4KBを採用しているシステムが多い)の領域にメモリを分割し、ページごとに仮想メモリ空間と物理メモリ空間の対応付けを管理する。
関連用語
他の辞典による解説 (外部サイト)
- ウィキペディア 「仮想メモリ」
- SOMPO CYBER SECURITY サイバーセキュリティ用語集 「仮想メモリ」
- Insider's Computer Dictionary 「仮想メモリ」
- NTT西日本 ICT用語集 「仮想メモリ」
- ITパスポート用語辞典 「仮想記憶」
- くみこみックス 「仮想記憶」
- TechTerms.com (英語) 「Virtual Memory」
- Computer Hope (英語) 「Virtual memory」
- PC.net Computer Glossary (英語) 「Virtual Memory」
- WhatIs.com (英語) 「virtual memory」