服务器 频道

突破4GB内存屏障 64位平台解析(上)

  除去硬件上的误区之外,还有一个软件上的误区,为什么32位就意味着2的32次方呢?

  人们通常会认为32位编译的程序实际上就无法访问超过4GB的空间,由于核心/用户地址空间模型的缘故,实际上还会更低。一些人接受了支持PAE的操作系统可以支持超过4GB内存的事实,不过并不认为32位应用程序可以使用超过4GB的内存。


PAE时将线性地址翻译为物理地址(4KB内存页)

  然而Microsoft在自己的操作系统提供了一个比较重要的特性:AWE(Address Windowing Extension,地址窗口扩展) API集,这个API集的原理其实是基于这样的一个事实:所有的支持PAE的操作系统本身都直接寻址64GB物理地址,提供一个API让应用程序利用PAE不过是一个很方便的举动。操作系统本身就是一个程序。

  每个支持PAE的操作系统都具有这种API,差别只是在于这些API能否提供如内存共享、进程间通讯、分页等等这些功能,微软在Windows上提供了一个简单明了的API组——也就是AWE地址窗口扩展API组,它仅仅由5个API调用组成,包括了核心级和用户级调用,使用AWE分配得到的内存是非分页、锁定的,其他程序无法访问,也无法交换到页面文件(虚拟内存)上去,对性能具有很大的提升。

  通过使用AWE API,核心模式/用户模式的程序可以轻易地突破2GB容量的限制,最高可以达到64GB,如SQL Server就使用了这个AWE API(可设定),从而提高对大容量内存的能力,大大提升了应用软件/系统的性能。我们测试过AWE下SQL Server的性能

  桌面级操作系统并不支持AWE API,要支持AWE的话,你需要使用服务器操作系统,如,使用Windows Server 2003,你可以轻易地在32位环境下使用多于4GB的内存:

 
32位的Windows Server 2003可以支持超过4GB的内存


32位的Windows Server 2003可以支持超过4GB的内存

(未完待续)

0
相关文章