Physical Address Extensionを使用すると、32 ビット アーキテクチャで 4 GB を超える物理メモリにアクセスできます。1 つのプロセスが 4 GB を超える RAM を使用できるということですか? この図に基づいて、メモリをアドレス指定するために 32 ビットがある場合でも、4 GB を超える仮想メモリを使用することはできませんよね? では、仮想メモリとして使用できないのに、なぜ物理メモリをさらにアドレス指定する必要があるのでしょうか?
2 に答える
一度にアドレス指定できるのは4GB だけです (32 ビット Windows では、(boot.ini の設定に応じて) 独自のプロセスのニーズに合わせて 2GB または 3GB のいずれかが必要です。残りはカーネルモードのものに使用されるためです)。
Windows の場合は、Address Windowing Extensionsを使用して、アドレス指定可能なウィンドウを 4 GB を超える物理メモリにマッピングします。他のシステムがそれをどのように処理するかはわかりませんが、Linux は mmap() を介してそれを行う可能性がありますか?
32ビットのデータバスがある場合は、2 ^ 32=4GBをアドレス指定できます。これは事実です。つまり、物理メモリが1GBしかない場合でも、それ以上のアドレスを指定できるということです。ただし、そのシナリオでは、1 GBを超えるアドレスが有効であっても、メモリが存在しないため、ページフォールトが発生します。
SOは、ページフォールトをキャッチし、メモリをディスクとの間で交換するだけで魔法をかけます。これが、私たちがそれを「仮想」メモリと呼ぶ理由です。なぜなら、それは単なる幻想であり、トリック(素晴らしいもの)だからです。
32ビットのデータバスを持つことは、プロセスが4GBを超えることは不可能です。これは、それ以上のアドレス指定が不可能だからです。