2011-09-02 87 views
2

我有一個32位應用程序與非常大的內存要求。地址窗口擴展

我注意到有一種叫Address Windowing Extension的東西。

但是我還沒有找到關於如何使用它的很多信息,以及在使用它時會遇到什麼缺點和問題?

回答

0
  • 它不應該在64位的Windows版本的工作(在這裏閱讀http://msdn.microsoft.com/en-us/library/aa366778.aspx英特爾和AMD的PAE的規格不支持x86-64架構,但微軟的PAE的(API)的軟件層,叫做AWE,是在64位版本的Windows上不受支持,因此Windows Vista 64位不能爲32位應用程序提供超過4 GiB的RAM)。
  • 即使在Windows 32位上,可用內存量也有「許可」限制(相同頁面顯示所有限制)。
  • 而且很顯然它是複雜的編程:-)這就像在舊的8086
+0

啊,沒有64位操作系統的支持對我來說是一種破壞行爲。 – ronag

+0

如果你真的需要很多內存,你應該嘗試將程序轉換爲64位(但可能很複雜,特別是如果它需要支持「傳統」庫) – xanatos

+0

不幸的是,我依賴於第三方組件位。 – ronag

0

那麼真相使用EMS是,你可以使用AWE從Windows 64位操作系統中運行的32位應用程序,而你不知道不需要PAE。例如,可以在此模式下配置MS SQL Server(2012版之前)。

但是,除非你有一個非常具體的要求,可能是一個更好的選擇端口到64位。

您有幾個disvantages:

  • 需要與用戶運行與SeLockMemoryPrivilege
  • 該內存不能與其他進程共享。它被分配在物理內存中。將更少的內存留給操作系統和其他應用程序(AllocateUserPhysicalPages)。
  • 您需要一個虛擬地址才能訪問此類內存。所以你可以有一個帶有LARGE_ADDRESS_AWARE標誌的4GiB的內存窗口。
  • 如果你想訪問更多的4GiB你必須映射/取消映射這些物理頁面(與MapUserPhysicalPages)。

這個從1999年開始的article解釋瞭如何使用這樣的API。