- 发布日期
并非技术做不到 而是驱动程序不可靠
- 作者

- 姓名
- 荷鲁斯快报
- 社交账号
长期以来,32位Windows只能使用4GB内存,常被归因于32位地址空间上限。微软资深工程师Raymond Chen近日重新解释这一历史问题。他指出,真正原因并非技术做不到,而是驱动程序生态存在严重兼容性风险。
从硬件能力看,32位x86处理器并非只能访问4GB物理内存。英特尔早在Pentium Pro时代就引入PAE技术,使32位处理器能够使用36位物理地址。这样一来,理论上可寻址的物理内存便从4GB扩大到了64GB。
PAE并不会改变32位应用程序自身的虚拟地址空间。普通32位程序仍然只能看到一个4GB大小的虚拟地址空间,操作系统需要负责在有限虚拟空间与更大物理内存之间进行映射。微软其实早已利用这项能力,Windows Server 2003 Enterprise Edition最高支持64GB,Datacenter Edition最高支持128GB。
真正的问题出现在驱动程序身上。启用PAE后,系统可能向硬件驱动程序提供超过32位范围的物理地址。一些驱动程序默认认为物理地址永远不会超过32位,因此会直接截断地址中的高位。
例如,Windows可能告诉驱动某块数据应写入超过4GB的物理内存位置,驱动若错误丢弃高位,可能把数据写入完全不同的内存区域。这不仅可能导致程序运行异常,还可能覆盖其他数据,最终造成内存损坏、系统崩溃甚至无法启动。微软技术文档也指出,启用PAE后驱动通常需要进行一些看似很小但十分关键的修改。
服务器硬件环境通常非常固定,管理员会选择经过验证的硬件并尽量使用标准驱动。普通PC则完全不同,用户可能安装打印机、扫描仪、声卡、电视卡、摄像头、网卡等各种扩展设备,每一种设备背后都可能存在不兼容的驱动。因此,微软最终选择将普通消费者版Windows的内存限制在4GB以内。