2011-09-02 85 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。