実際のメモリ以上に働くことができる
実際のメモリが16GBの容量を持つとします。PCを買う時にメモリ16GBとか書いてありますよね。あれです。
このときに例えば10GBのメモリを占有するプログラムと7GBのメモリを占有するプログラムを同時に実行することは可能なのでしょうか?
結論から言うと、可能です。10GBのプログラムを実行しているときにあまり使っていない分の1GBをハードディスク(ストレージ)に移動してしまいます。これにより、9GBのメモリしか使用していないことにでき、残りの7GBの領域を使って、もう一つのプログラムを実行することができます。
逆に10GB要するプログラムが10GBフルに使いたくなったらもう一つのプログラムがあまり使っていない1GBを代わりにハードディスクに移動すればいいのです。
というわけでプログラムからすると、17GBのメモリが存在しているように見えます。これが仮想メモリです。メモリのように利用しているハードディスクの一部のことを仮想メモリということもありますが、物理メモリに対するものというニュアンスは変わりません。
ちなみに...
メモリは主記憶装置と言われたり、メインメモリと言われたりします。
キャッシュメモリというものもありますが、これは別物です。メモリよりも高速に動作します。昔はCPU外部にキャッシュメモリを搭載するのが主流でしたが、現在はCPU内部に搭載することが多いようです。レジスタもCPU内部にあり、キャッシュメモリよりも高速にアクセスできます。つまり、アクセスの速い順(容量の小さい順)に並べると概ね以下のようになります。
レジスタ
↓
キャッシュメモリ
↓
メモリ(主記憶装置、メインメモリ)
↓
補助記憶装置(ストレージ、ハードディスク)
他のメモリ関連ワード
用語 | 説明 |
---|---|
共有メモリ | 複数のプログラムからアクセスできるメモリ領域 |
バルーニング | 仮想マシンが使っていないメモリを自動的に取り上げること。バルーンドライバが実行する |
不揮発性メモリ | 電気が流れてなくても記憶が保たれるメモリ |
フラッシュメモリ | ハードディスクのような使い方をするメモリ。メモリとついているけど作業机というよりは、記憶するためのものと捉えるべき |
メモリインタリーブ | 複数のメモリバンクに分割して、同時に読み書きを行えるようにしてCPUとのやりとりを高速化する |
メモリアロケーション | プログラムがメモリ領域を確保すること |