保护模式访问超大内存问题
保护模式可以访问4G的内存空间,如果内存大于4G那对超过的空间是如何访问的,比如现在很多做服务器的机器都配有8G内存,那windows用什么手段和技术对超过 4G的内存进行访问的?
[解决办法]
p6+通过PAE支持36-bit物理地址(64GB),使用4MB的页面大小的两级页表。
x86-64使用2MB页面的三级页表或者4KB页面的4级别页表,物理内存可以达到1TB。
[解决办法]
我们说的内存空间有3种,线性空间,逻辑空间和物理空间。
线性空间是原始空间,经过段映射后成为逻辑空间,再经过页映射以后成为物理空间。
楼主说的8G内存的问题,可以从两个角度理解,即单个进程可访问空间(逻辑空间),和整个系统可访问空间(物理空间)。
逻辑空间:
在平坦模式下,单进程可访问空间只能是4G,因为地址操作的长度只有32位。而且段的最大界限也是4G。
在非平坦模式下,我们可以使用8G的地址,因为段本身可以有最大4G的偏移地址。
物理空间:
PAE和PSE-36都可以支持64G物理内存,具体设置方法见INTEL开发者文档第三卷第3章