32位系统能使用的内存大小以及PAE机制

以两个问题开始:

  • 32位系统中,堆上能分配的最大内存是多大?
  • 32位系统下,如果有两个程序,每个程序new一个2g的空间可以吗?

32位系统的地址空间最大为4G,也就是虚拟内存为4G,除去1G系统,用户能使用的内存最多为3G左右(windows内核较大,一般用户只剩下2G可用)。从另一个角度思考,在32位系统中的一个指针大小为4个字节,32位,最多可以寻址4G的空间,其中有1G的虚拟空间映射为内核代码,不能直接访问(访问则段错误)。

       通过页表机制将虚拟内存线性地址映射到物理地址上,由于线性地址就只有32位,所以也只能映射到4G的物理内存上,所以在32位系统中两个进程各自真正使用2G的空间,映射到物理内存上超过限制(4G的两个进程使用内存,2G的内核),不可以。

       但是,有PAE(Physical Address Extension)机制可以拓展32bit到36bit,也就是多出了4bit,可以寻址16*4G=64G的线性空间地址,所以最多支持64G的物理地址。但是36bit的地址只是内核可见,用户不可见,用户依然只能使用4字节的指针访问4G的空间。但是可以多个进程各自使用4G的内存,内个可以映射到64G的物理内存上去。

       总之,对于32位系统,PAE可以扩物理内存到64G, 对虚拟地址空间没有影响。其实PAE中的P就表示Physical,指物理内存。

PAE 参数

Windows 平台上,默认情况下内核可以管理最大4GB的物理内存(这不包括页面文件)。然而,在某些 Windows 版本,比如高级版的Windows 2000和2003中,管理员可以通过在boot.ini 文件中加入/PAE 参数来增加可以管理的物理内存上限。加入/PAE(物理地址扩展)参数允许内核识别并管理多达64 GB的物理内存。Windows 的不同版本能管理的物理内存上限也有差别,但不会超过64 GB。当然,为了利用/PAE 参数,您需要选择合适的,支持36位地址总线的内存控制器的硬件配置。

使用/PAE 参数设置不会影响32位应用可寻址的虚拟地址空间大小,仅会影响CPU及系统内核可管理的物理内存总量。
 

/PAE 影响操作系统可管理的物理内存总量,/PAE 参数影响 CPU 能够寻址的物理内存总量。页面文件的使用不会受这个参数的影响,因为页面文件是顺序存放在磁盘上。未启用/PAE 时,系统中所有进程加起来就可能会使用远大于4 GB的虚拟内存,其中大部分占用的是页面文件,而只有部分占用的是物理内存。操作系统内核原本可以管理全部的物理内存,并允许所有32 位应用程序累计使用远超过4 GB的虚拟内存。换句话说,如果您要使用超过4 GB的虚拟内存(包括物理内存和页面文件之和),您不必启用/PAE 参数,只有在您要使用超过4 GB的物理内存时,才需要启用/PAE 参数。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值