仮想メモリと仮想アドレス空間

仮想メモリと仮想アドレス空間

仮想メモリは、コンピュータが実行中のプロセスのためにハードディスク上の RAM の一部を格納するために使用するページング ファイルであることは知っています。しかし、仮想アドレス空間はどの程度異なるのでしょうか? RAM ですか、ハードディスクですか、それとも両方ですか?

答え1

仮想アドレス空間は、個々のプログラムが実行時に認識する空間です。プログラムの構成に応じて、このアドレス空間はオペレーティング システムがサポートする最大値と同じ大きさになります。

オペレーティング システム カーネルは、VAS 内のアドレスを物理メモリ (RAM またはシステム ページ ファイル) にマッピングする役割を担います。

この設計により、プログラム自体はリソースと実際のアドレスを意識する必要がなくなり、すべてのシステム メモリ、または少なくとも 1 つのプロセスが使用できる最大メモリを所有しているかのように動作できます。

簡単に言うと、プログラムは VAS と連携して動作し、オペレーティング システムが VAS を実際のストレージにマッピングするため、実行中のプログラムからは見えません。実行中のプログラムからは VAS のみが見えます。

答え2

仮想アドレス空間は、プログラムがアドレス指定できるメモリのサイズに対する制限です。

これはポインタのスタイルによって外側の境界で制限されます。純粋な 32 ビット ポインタは理論上 4GB の仮想空間をアドレスできます。実際の境界は、アドレス空間のかなりの部分を使用するため、オペレーティング システムの設計に依存します。並んでユーザースペース。

Win32 では、デフォルト設定で 2GB の仮想アドレス空間をユーザー空間として許可します。

64ビットのポインターははるかに多くのアドレスを扱えますが、実際には通常48ビットが許可されており、このスーパーユーザーの回答

理論上は、2GB のユーザー空間を物理メモリに直接マップできるほど十分な RAM を搭載した物理コンピュータを構築できる (おそらく少なくとも 3GB の物理メモリが必要) ため、仮想メモリがあまり仮想的ではない 32 ビット プロセスが実現します。

答え3

仮想アドレス空間は、プロセスが認識するものです。たとえば、電子メールは、たとえば 25 GB のサイズの受信トレイにあります。これが仮想アドレス空間です。

仮想アドレス空間は、すべての仮想アドレス空間が特定のアドレス空間に対応するわけではないという事実を区別するためのものです。物理的なアドレス空間。25GB の受信トレイ容量を持つ 20 人のメール ユーザーがいるとします。ただし、サーバー上のディスク容量は 100GB しかありません。通常、ユーザーは最新のメールのみをチェックするため、古いメールをアーカイブして、最近のメールのみをサーバー上に保持することができます。

サーバーから、たとえばテープ ドライブに電子メールをアーカイブすることは、コンピューターが RAM の一部をディスクにページングするのと似ています。誰かが古い電子メールを見に行くときは、古い電子メールをテープからサーバーに「ページング」するだけです。電子メール ユーザーは違いに気付くことはありません。

同様に、マシン上の各プロセスにはバツX * number of processes物理メモリが少ない場合でも、仮想アドレス空間を使用できます。

仮想メモリとは、まさに仮想アドレス空間のことです。しかし、仮想メモリは、使用している仮想アドレス空間にすぎません。

関連情報