2

Windows で (演算子 new を使用して) 非常に大きなメモリ領域 (数百 MB) を割り当てる必要があるアプリケーションがあります。アプリケーションは 32 ビット (64 ビット システムでも今のところ 64 ビットは使用しません) で、4 GB のユーザー空間メモリを使用できるように /LARGEADDRESSAWARE リンカ オプションを有効にしました。

質問450 MB の連続したメモリを割り当てる必要がある場合、プロセスの仮想アドレス空間には連続した十分なスペースが必要でありさらにシステム上で物理メモリを断片化する必要はありませんか? アプリケーションが十分な大きさの連続したスペースを予約できるようにすることはできますが、システム上の他のアプリケーションがこのように私に影響を与える可能性があるかどうかはわかりません。OS ページ テーブルは、アプリケーションから見える連続した仮想アドレスを連続した物理アドレスに変換する必要がありますか?

4

2 に答える 2

3

メモリが単にソフトウェアで使用されている場合、450MB の割り当ては、仮想空間に 450MB の穴しか必要としません。[スワップスペースを含めて、システムのどこかに少なくとも 450MB の空き容量がある限り]、メモリ システムの隅々のページで満足できます。

OS が [一度に 2MB の「大きなページ」を使用して] 2MB の連続したブロックでページを割り当てることができる場合、システムのパフォーマンスは少し向上します。ただし、システムは必要に応じて個々の 4KB ページにフォールバックします。

ページ メモリ アーキテクチャの利点の 1 つは、任意の物理ページを任意の仮想アドレスに配置できることです。一部のシステム (デバッグ モードの Xen 仮想化マネージャーなど) では、メモリ ページが連続しているとシステムが推測するタイミングを簡単に検出できるように、ページが意図的に順不同で割り当てられます。

于 2013-02-08T12:36:14.963 に答える
1

物理メモリの連続性を気にする必要はありません。これは、仮想アドレスから物理アドレスへの変換が役立つことの 1 つです。アドレス空間のチャンクを確保し、それを物理メモリでバックアップできる限り、それがたまたまどこにあったとしても、うまくいきます。

于 2013-02-08T12:30:35.553 に答える