进程碰到了2GB内存空间的限制,红帽企业Linux上能够使用多大的内存?
解决方法:

在红帽企业Linux2.1中,内 核允许每个进程拥有3G虚 拟地址空间,不过这个空间不是连续的。它分配成1GB和2GB两 个部分。这在2.1版 本中是默认的,它不随物理内存的增加而增加。

在每个内存段末,还有1GB到2GB段 的间隙末都有保留内存区域。

这个区域叫做nmapped_base,由于位置的关系,系统经常无法给进程分配2GB以上的空间。

2.1版本有一个特性(灵活的mmap或task-unmapped-base),在堆栈负责提供空间的前提下,改变子进程的内存布局,从而在动态存储的空间中得到更多的子程序的存储版面。这使分配给每个进程的存储空间接近3GB。改变nmapped_base的位置是非常复杂的,这里对此不进行介绍。

移动nmapped_base 的位置更有利于给单 独程序分配3GB的虚拟地址空间,虽然不会为单独的进程提供超过3G的地址空间,但可以提高给进程虚拟地址空间的效率。

在红帽企业Linux3.0中,内核给每个程序提供3GB的虚拟地址空间,这改变了之前提过的默认虚拟存储映射问题。3.0版本发行前, nmapped_base已 移动至段末,它允许每个程序使用到接近3GB内存,但是还没有到达3G。