web-dev-qa-db-ja.com

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

仮想メモリは、コンピュータがRAMの一部を実行中のプロセスのハードディスクに保存するために使用するページングファイルです。しかし、仮想アドレス空間はどのように異なりますか?RAMまたはハードディスク、あるいはその両方?

3
Karen15

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

オペレーティングシステムカーネルは、vas内のアドレスをRAMやシステムページファイルなどの物理メモリにマッピングする役割を果たします。

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

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

8
gview

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

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

Win32では、デフォルト設定では、ユーザースペースとして2GBの仮想アドレススペースが許可されています。

64ビットポインタははるかに多くのアドレスを指定できます。実際には通常48ビットが許可されており、 このスーパーユーザーの回答 に関する詳細がたくさんあります。

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

0
Andy Dent