当前位置: 华文问答 > 数码

为什么大多数32位的Windows被设计成只能用4GB的内存?

2020-03-26数码

设计成只用4G是常规操作。超过4G是黑科技,而黑科技存在兼容性问题。

有的人拿【16位DOS能使用640K内存】来说事,其实啊,这还真不是一回事。

因为计算机的字长分为【地址字长】跟【数据字长】两种,前者是寻址空间,后者是数据空间。所对应的总线带宽也就是地址线跟数据线。

16位DOS的那个时代,数据线是16位,地址线是 20位 20位地址线本来就能访问1M内存 。DOS使用640K内存完全在1M范围内。

——要想访问1M以上的内存?有记忆的人应该知道,后来,32位CPU的80386,提供了保护模式,切换到保护模式,才能访问1M以上的内存。才能突破20位地址线的限制。

然而Windows的早期时代,数据线是32位,地址线是32位,访问4G内存才是天经地义的。所以,并不是Windows限制到了4G,而是32位系统本来就只应该能访问4G内存。

(补充更正:评论区有说地址线在1995年就扩展到了36位,如果是这样的话那么确实应该支持到4G以上的内存,所以在36位时代确实存在其它因素阻止了内存突破32G。以上段落供参考)

32位使用超过4G内存,确实存在这样的黑科技,例如PAE技术,PAE技术使得32位系统能识别出4G以上的内存空间,然而在实用中它有很多限制,也存在兼容性问题。已知的几个问题有,操作系统识别4G以上但每个单进程只能用到4G以内的内存,访问物理内存地址大于4G的内存地址会造成部分程序崩溃,以及32位代码无法使用64位CPU的部分指令与寄存器(这会影响性能)。——个人认为这个技术的存在,其实是对科技发展有害的。它拖延了64位的普及速度。