私は、オペレーティング システムにおける仮想化の概念と混同されることがよくあります。RAM を物理メモリと考えると、なぜプロセスを実行するために仮想メモリが必要なのですか?
外付けハードドライブからのプロセス(プログラム)が実行のためにメインメモリ(物理メモリ)に持ち込まれたとき、この仮想メモリはどこに立っていますか。
仮想メモリの管理者と仮想メモリのサイズは?
RAM のサイズが 4GB (つまり 2^32-1 アドレス空間) の場合、仮想メモリのサイズはどれくらいになるでしょうか?
私は、オペレーティング システムにおける仮想化の概念と混同されることがよくあります。RAM を物理メモリと考えると、なぜプロセスを実行するために仮想メモリが必要なのですか?
外付けハードドライブからのプロセス(プログラム)が実行のためにメインメモリ(物理メモリ)に持ち込まれたとき、この仮想メモリはどこに立っていますか。
仮想メモリの管理者と仮想メモリのサイズは?
RAM のサイズが 4GB (つまり 2^32-1 アドレス空間) の場合、仮想メモリのサイズはどれくらいになるでしょうか?
仮想メモリは、とりわけ、システムで無限のメモリが利用可能であるという錯覚をプログラマに与えるための抽象化です。
仮想メモリ マッピングは、実際の物理アドレスに対応するように作成されます。オペレーティング システムは、これらのマッピングを作成して処理します。マッピングを維持するために、他のデータ構造の中でも特にページ テーブルを利用します。仮想メモリ マッピングは常に、ページ テーブルまたは類似のデータ構造で見つかります (仮想メモリの他の実装の場合、「ページ テーブル」と呼ぶべきではないかもしれません)。ページテーブルも物理メモリにあります。多くの場合、ユーザープログラムが上書きできないカーネル予約スペースにあります。
通常、仮想メモリは物理メモリよりも大きくなります。仮想メモリと物理メモリが同じサイズである場合、仮想メモリ マッピングを行う理由はほとんどありません。
通常、プログラムの必要な部分のみがメモリに常駐します。これは「ページング」と呼ばれるトピックです。仮想メモリとページングは密接に関連していますが、同じトピックではありません。セグメンテーションなど、仮想メモリの他の実装があります。
ここで間違っていると思い込んでいる可能性がありますが、頭を包み込むのが難しいと感じていることは、仮想メモリの特定の実装、おそらくページングに関係していると思います。ページングを行う方法は 1 つではありません。多くの実装があり、教科書に記載されているものは、Linux/Windows などの実際の OS に表示されるものと同じではない可能性があります。おそらく微妙な違いがあります。
ページングについて何千もの段落を説明することはできますが、それは、特にそのトピックを対象とした別の質問に任せたほうがよいと思います。
トップのmanページからの抜粋を恥知らずにコピーしています
VIRT -- 仮想イメージ (kb) タスクが使用する仮想メモリの総量。これには、すべてのコード、データ、および共有ライブラリに加えて、スワップ アウトされたページと、マップされたが使用されていないページが含まれます。
SWAP -- スワップ サイズ (kb) 常駐ではなく、タスクに存在するメモリ。これは、スワップアウトされたメモリですが、追加の非常駐メモリが含まれている可能性があります。この列は、仮想メモリから物理メモリを差し引いて計算されます