web-dev-qa-db-ja.com

仮想メモリと物理メモリの違いは何ですか?

オペレーティングシステムの仮想化の概念とよく混同されます。 RAMを物理メモリとして考えると、プロセスを実行するために仮想メモリが必要なのはなぜですか?

この仮想メモリは、外部ハードドライブからのプロセス(プログラム)が実行のためにメインメモリ(物理メモリ)に送られたとき、どこにありますか。

誰が仮想メモリを管理し、仮想メモリのサイズは?

RAMのサイズが4GB(つまり2 ^ 32-1のアドレススペース)である場合、仮想メモリのサイズはどれくらいですか?

84
starkk92

仮想メモリは、とりわけ、システム上で利用可能な無限のメモリがあるという錯覚をプログラマに与えるための抽象化です。

仮想メモリのマッピングは、実際の物理アドレスに対応するように作成されます。 オペレーティングシステムは、これらのマッピングを作成して処理します-マッピングを維持するためのデータ構造の中でも特に、ページテーブルを使用します。仮想メモリマッピングは常にページテーブルまたは同様のデータ構造にあります(仮想メモリの他の実装の場合、「ページテーブル」と呼ぶべきではありません)。ページテーブルも物理メモリにあります-多くの場合、ユーザープログラムが上書きできないカーネル予約スペースにあります。

通常、仮想メモリは物理メモリよりも大きくなります。仮想メモリと物理メモリが同じサイズである場合、仮想メモリマッピングの理由はあまりありません。

通常、プログラムに必要な部分のみがメモリに常駐します-これは「ページング」と呼ばれるトピックです。仮想メモリとページングは​​密接に関連していますが、notは同じトピックです。セグメンテーションなど、仮想メモリの他の実装があります。

ここでは間違っていると思うかもしれませんが、頭を包み込むのが難しいと思うものは、仮想メモリの特定の実装、おそらくページングに関係していると思います。ページングを行うための片道はありません-多くの実装があり、教科書に記載されているものは、Linux/Windowsなどの実際のOSに表示されるものと同じではない可能性があります-おそらく微妙な違いがあります。

ページングについて何千ものパラグラフを作成することもできますが、具体的にはそのトピックを対象とした別の質問に任せた方が良いと思います。

76

Topのmanページからの抜粋を恥知らずにコピーしています

VIRT-仮想イメージ(kb)タスクで使用される仮想メモリの合計量。これには、すべてのコード、データ、共有ライブラリに加えて、スワップアウトされたページとマップされているが使用されていないページが含まれます。

SWAP-スワップサイズ(kb)常駐ではないが、タスクに存在するメモリ。これはスワップアウトされたメモリですが、追加の非常駐メモリを含めることができます。この列は仮想メモリから物理メモリを引くによって計算されます

16
Cleonjoys

ここを参照してください: 物理対仮想メモリ

仮想メモリはハードドライブに保存され、RAMがいっぱいになると使用されます。物理メモリは、コンピューターにインストールされているRAMチップのサイズに制限されています。仮想メモリはハードドライブのサイズによって制限されるため、仮想メモリにはより多くのストレージ容量があります。

6
Reihan_amn