32ビットWindowsで実行されている32ビットプロセスのデフォルトのページサイズは4Kですが、64ビットWindowsで実行されている64ビットプロセスのデフォルトのページサイズは8Kです。ただし、64ビットWindows(つまり、WOW64)で実行されている32ビットプロセスの実際のページサイズはどれくらいですか?4K?8K?
3 に答える
理想的には、を呼び出しGetSystemInfo()
て調べる必要がありますSYSTEM_INFO.dwPageSize
。
ところで、64ビットWindowsに8KBのページがあるとは思えません。x86 / 64 CPUは、4KB(すべてのモード)、4MB(32ビット非PAE)、2MB(32/64ビットPAE)、1GB(64ビット、常にPAE)のサイズのページをサポートします。これは、Intel(またはAMD)のCPUマニュアルに記載されています。
ページ サイズは 4K - 4GB の最大アドレス可能な RAM メモリで 1M ページのままです。
仮想メモリ サイズ。Intel Itanium プロセッサでは、同じ 32 ビット アプリケーションの 2 つ以上のインスタンスが同時に実行されている場合、WOW64 によってかなりのオーバーヘッドが追加されます。これは、Intel Itanium のネイティブ 8 KB ページが原因であり、x86 アーキテクチャでのネイティブ 4 KB ページのエミュレーションが複雑になります (より多くのページが書き込み可能としてマークされます。書き込み可能なページはすべてプロセス専用です)。これは、特定のプロセッサでのターミナル サービスのスケーラビリティに悪影響を与える可能性があります。これは、x64 プロセッサには当てはまりません。
WOW64の詳細はこちら
この質問に対する正解は、「どのプロセッサに依存するか」です。
Itaniumは8KBページを使用します。
X86-32およびx86-64は、必要に応じて4KB、2MB、および1GBページを使用します[2MBおよび1GBページが機能するには、メモリのサイズが2MB / 1GBの倍数であり、それぞれ2MB/1GBに調整されている必要があります]。
ARM(現在は32ビットOSのみ)などの他のプロセッサは、通常4KBページを使用しますが、64KBページを使用することもできます。
古いDECAlphaプロセッサとそれに一致するオペレーティングシステムが見つかった場合、それも8KBページを使用します。