地址窗口扩展

科技工作者之家 2020-11-17

地址窗口扩展(英语:Address Windowing Extensions,缩写AWE)是一项Microsoft Windows应用程序接口,它允许32位应用软件访问超出其虚拟地址空间限制(4GB)的物理内存。在地址窗口扩展下将应用程序的虚拟地址空间映射到物理内存的过程被称为“加窗”(windowing),并类似其他环境的覆盖概念。AWE对于需要操作极大数据集的数据密集型应用程序(例如数据库管理系统,科学和工程学软件)有益。

简介应用程序保留虚拟地址空间的区域或“窗口”,并分配物理内存的一个或多个区域。使用地址窗口扩展API,应用可以将虚拟窗口映射到任何一个物理区域。应用程序可以保留多个虚拟地址空间,并将其映射到物理内存的任何分配区域,只需虚拟地址空间中保留的字节数与物理内存区域相匹配。应用程序必须有“锁定内存页”的特权才能使用地址窗口扩展。

当保留内存超过4GB时,地址窗口扩展依赖于物理地址扩展的支持。地址窗口扩展在Windows 2000中作为一个取代PSE36方法的新API被引入。PSE36方法自Windows NT 4.0企业版引入,用于访问超过4GB内存,在Windows 2000中已不支持。第一批使用地址窗口扩展的应用程序是Oracle8.1.6和Microsoft SQL Server2000。

如果/3GB引导标识被使用以重新分配32位虚拟空间(2GB内核空间和2GB用户空间改为3GB用户空间),地址窗口扩展将只能访问16GB物理内存。此限制是因为只有1GB内存保留给内核,而没有足够的内存用于映射超过16GB内存的页表项。通过地址窗口扩展可寻址的最大内存量也因Windows许可方案而额外限制。例如,Windows 2000 Advanced Server限制为8GB,Windows 2000 Data Center Server则支持64GB。

2004年在Dr. Dobb's Journal发布的一篇文章称注意到使用地址窗口扩展分配的内存将不会被写入页面文件,并建议AWE区域因此可作为保护敏感的应用程序数据(如加密密钥)的一种方式。1

扩展存储器扩展存储器(英语:Expanded Memory)是1985年4月24日,由Lotus、英特尔与微软联合发布的一项DOS内存技术,可以提供MS-DOS程序更多的存储器。

八十年代的个人计算机(IBM PC/AT)多半使用实模式,只有1MB的定址空间,且640KB以上的定址空间不可被应用程序读写使用。

扩展存储器的原理是使用1MB扣除640KB后剩下的384KB,称作上端内存区(upper memory area), 这本来是用来跟外设沟通的空间, 给程序使用。把内存的定址窗口插入到上端内存区的外设定址空间,引入了bank switching (存储体转换)的技巧。 同一时间只有一部分的额外存储器可以被访问。 使用64KB的memory windows做为bank switching 的单位。

早期可以购买存储器扩充卡来插在ISA bus插槽上,之后,一些Intel 80286的主机版的芯片组实现了 expanded memory scheme, 就不用再买扩充卡,而用软件设置就可以决定多少存储器被用做扩展存储器,多少存储器被用做延伸存储器

1987年开始,内置存储器管理功能的Intel 80386 处理器让在传统实模式下的程序,可以有不受限的 定址空间,硬件解决方案就变得没有必要。这时扩展存储器只能用软件来模拟了。

在80286与之后的处理器,一个更有效率的方法访问640KB以后的存储器, 就是用DOS Proteced Mode Interface.DOS extenders 是一个使程序可以在保护模式下运行的驱动程序。与其用banking技巧访问更多存储器,这个驱动程序可以让应用程序在保护模式与实模式间切换, (在需要MS-DOS服务时回到实模式)这样就使用应用程序可以直接访问延伸存储器。1

物理地址扩展物理地址扩展Physical Address Extension,缩写为PAE),又释实体位置延伸,是x86处理器的一个功能,让中央处理器在32位操作系统下存取超过4GB的实体内存。

PAE为IntelPentium Pro及以上级别的CPU(包括除了总线频率为400MHz的这个版本的奔腾M之外的所有新型号奔腾系列处理器)所支持,其他兼容的处理器,如速龙(Athlon)和AMD的较新型号的CPU也支持PAE。

x86的处理器增加了额外的地址线以选择那些增加了的内存,所以实体内存的大小从32位增加到了36位。最大的实体内存由4GB增加到了64GB。

32位的虚拟地址(线性地址)则没有变,所以一般的应用软件可以继续使用地址为32位的指令;如果用平面内存模式的话,这些软件的地址空间也被限制为4GB。操作系统用页表将这4GB的地址空间映射到大小为64GB的实体内存,而这个映射对各个进程一般是不一样的。这样一来,即使不能为单单一个程序所用,那些增加了的物理内存仍然可以发挥作用。

对于需要超过4GB内存的应用软件来说,除了一般的PAE支持,还需要操作系统提供另外的特殊的技术。在Windows上,这种技术叫做Address Windowing Extensions(AWE)。而在类Unix的系统上则有多种技术在使用,例如使用mmap()按需要把一部分文件映射到地址空间;但是,这还没有成为一个标准。2

本词条内容贡献者为:

王沛 - 副教授、副研究员 - 中国科学院工程热物理研究所

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。