内存的相关概念


 

以下均是针对Window 32位系统环境下,64位的不在下面描述情况下。


 

用户模式和内核模式(user mode& kernel mode)


 

为了防止用户程序访问并篡改操作系统 的关键部分,Windows使用了2种处理器存取模式:用户模式和内核模式。顾名思义,内核模式是给操作系统 核心代码和基本驱动用的,用户模式给用户应用程序。在内核模式下程序可以访问所有的内存 和硬件,并使用所有的处理器指令。操作系统程序比用户程序有更高的权限,使得系统设计者可以确保用户程序不会意外的破坏系统的稳定性。


 

物理内存(Physical Memory)


 

即实际购买的内存的大小,内存条上的容量。CPU 的地址线可以直接进行寻址的内存空间大小,在32位操作系统平台上,CPU 的最大寻址空间为4GB,也即可以支持最大4G的物理内存空间。在32位操作系统上即便你购买的是64G内存,也只能说拥有4GB的物理内存空间


 

虚拟内存(Virtual Memory)


 

如果计算机缺少运行程序或操作所需的随机存储内存,则Windows使用虚拟内存进行补偿。虚拟内存将计算机的RAM和硬盘 上的临时空间组合在一起,当RAM不足时,虚拟内存将数据从RAM移动到称为“分页文件”的空间中,将数据移入与移出分页文件可以释放RAM,以便完成工作。


 

虚拟地址空间(Virtual Address Space,简称VAS)


 

在Windows系统中,任何一个进程都被赋予了其自己的虚拟地址空间,该虚拟地址空间覆盖了一个相当大的范围,对于32位系统的虚拟地址空间范围从 0x00000000~0xffffffff(4GB)。Windows采用分页机制,将4G的地址空间分成固定大小的页,并且将虚拟地址中的每一页映射到物理内存中。


 

在缺省的情况下虚拟地址空间中的低2G,即0x0000000~0x7FFFFFFFF是用户地址空间,而4G虚拟地址空间中的高2G即0x8000000~0xFFFFFFFF是分配给内核模式。实际上用户进程拥有的虚拟地址空间只有2GB。


 

虚拟内存管理器(Virtual Memory Manager)


 

虚拟内存管理器负责虚拟地址空间和物理内存的地址映射,如果缺乏足够内存,则需要使用到page file文件来保持临时数据也即虚拟内存,同时使用page table entry(PTE)来跟踪每一个地址映射关系。


 

到这里为止,64G的内存有60G都无法访问,岂不是浪费了,那怎么办?


 

/3GB和increaseUserVA


 

通过/3GB的方式,可以减少内核模式占用地址空间,从而增加SQL Server进程的地址空间。默认情况下,用户模式和内核模式各自占用2G寻址空间,3G选项可以使得SQL Server获得多1G的虚拟地址空间。


 

/3GB开关用法:


 

在Boot.ini文件中修改其中的段落即可:


 

或者使用bootcfg命令


 

在Windows Server 2008中可以运行BCDEdit命令,加以调整。


 

 


 

物理地址扩展PAE(Physical Address Extension)


 

物理地址扩展(PAE)是32位Intel CPU的一种扩展,这样可以在32位系统上支持最大64G的物理内存,即4GB以上物理内存允许将更多物理内存映射为应用程序的虚拟地址空间。


 

使用方式,在Boot.ini文件中修改其中的段落即可:


 

 


 

在Windows Server 2008操作系统下也可以通过以下命令执行


思想好比火星:一颗火星会点燃另一颗火星。一个深思熟虑的教师和班主任,总是力求在集体中创造一种共同热爱科学和渴求知识的气氛,使智力兴趣成为一些线索,以其真挚的、复杂的关系——即思信的相互关系把一个个的学生连接在一起。——苏霍姆林斯基