2

この質問は、VASモデルを使用するすべてのOSを対象としていますが、Windows ntを指定します。これは、私が最もよく知っているシステムだからです。

ご存知のとおり、デフォルトでは、32ビットウィンドウのプロセスはそれ自体で2GBのメモリを取得します。このメモリは、システムメモリ、スワップファイル、USBドライブなどに配置できます。

これは、複数のプロセスがアドレス0x12345678にメモリを割り当てることができることを意味しますが、もちろん、これを同じ物理メモリにマップすることはできません。

私の質問は、パフォーマンスを完全に壊すことなく、これをどのように行うのかということです。プロセッサには、メモリアドレスをマップするための何らかのメカニズムがありますか?

メモリにアクセスしないたびにマップルックアップを実行するようにOSに要求するのは、とても遅いようです。

4

3 に答える 3

4

変換を行うハードウェアデバイスがあります-それはメモリ管理ユニット(MMU)と呼ばれます。最新のCPUのほとんどは、スマートフォンなどのデバイスで使用されているものでさえ、MMUを備えています。

于 2010-08-16T12:17:53.537 に答える
2

初期の仮想メモリ実装の説明

http://www.multicians.org/multics-vm.html

于 2010-08-18T14:42:43.753 に答える
2

はい、彼らは持っています、そしてそれは仮想メモリが何のためであるかです。ハードウェアによって物理メモリセルにマップされた仮想アドレス0x12345678へのすべての単一メモリアクセス(またはこの仮想アドレスの物理メモリがないために割り込みが発生します)

于 2010-08-16T10:00:44.303 に答える