|
发表于 2018-4-28 01:14:51
|
显示全部楼层
从P6架构开始,x86架构的CPU就具有了36条地址线,物理地址空间为2^36B=64GB。在支持PAE的Windows系统上,完全可以使用最多为64GB的内存。至于只有不到4GB可用,完全是微软的一种恶意限制。
在最早的Windows XP RTM/SP1中,系统完全支持PAE及4GB以上内存。但是在SP2时,微软更新了hal.dll这个文件,在这个文件内对可用内存大小作出了强制性阉割(原因是很多厂商的驱动对于PAE支持有问题,而硬件厂商却不愿解决这个问题而把这个问题踢给微软,而微软也没有承认这个问题,让硬件厂商更新驱动。就干脆采取了这种简单粗暴的办法,强制驱动程序只能访问4GB以下内存,相当于人为造一个bug)。SP2及以后的Windows XP相当于系统内部支持4GB以上内存的功能性代码并不完整(微软造成的)。一方面是重写的hal,一方面是第三方厂商驱动的实现规范参差不齐。
Windows Vista及其以后的Windows操作系统包含有支持PAE运作的完整代码,只是在内核中通过读取系统版本信息人为限制了可用内存大小。其实在Windows Vista以后,不兼容PAE的驱动越来越少(微软也开放了DDK的新API),特别是Windows 8及以后的Windows内核ntoskrnl支持PAE(Windows 8及以后的Windows只有PAE内核),其安装要求也明确说明CPU必须支持PAE,从而所有的驱动必须支持PAE。所以微软现在限制内存大小就根本不是因为兼容性了,而是一种纯粹的商业伎俩。
因此,只要修改系统内核以去除微软的限制,就完全可以避免内存浪费。
|
|