20080330 - single process memory on Windows and Windows virtual memory
Q: What is the maximum amount of memory any single process on Windows can address? Is this different than the maximum virtual memory for the system? How would this affect a system design?
就32位操作系统来说,最大虚拟内存为4GB,通常其中低址0x00000000到0x7FFFFFFF的2GB分配给进程,另一半高址为受保护的操作系统内存。在 Windows 服务器版本中,可以用/3GB的boot.ini 开关平衡,由原来的50/50分配成为75/25。而对于x64位操作系统来说,可使用的内存大小为8192GB。
当我们做一些类似邮件服务器、数据库服务器的系统设计时,必须考虑到这一限制。有一种Address Windowing Extension(AWE)的机制,使32位应用程序可申请到64GB的物理内存,然后将虚拟内存和物理内存的映射关系放到了程序实现上。