你说的没错32位系统可以支持4G以上内存,但是问题就是稳定性。作为系统,要保证稳定,不会经常出问题,给用户带来灾难性使用体验。
svr2008有32位版本,能支持高内存,但是经常和其他驱动或者软件冲突导致蓝屏(尤其是显卡驱动,N卡和Intel集成显卡都会直接蓝屏无解)。
系统能支持高内存但是软件未必支持,软件没有适配PAE无法正常使用高位内存会导致崩溃,如果是驱动崩溃就直接蓝屏。
所以一切都以稳定为主。
我举个例子吧,很多笔记本CPU都会降低功耗使用,牺牲了部分性能,但是保证了稳定性,防止笔记本出问题频繁被用户找售后,这个道理你懂了吗?
多少年前就有过答案,类似的问题总是被提出来,先给一个历史问题链接:
但凡说PAE的,都没说到关键点上。还有人说因为32位所以最大内存只有2^32=4G,这简直错的离谱,寄存器宽度和寻址范围毫无关系。DOS在实模式下寄存器只有16位,最大范围是64KB,但寻址范围可以到1MB。
寻址范围跟地址线有宽度有关,Intel 32位CPU早在1995年就支持36位地址线了。1995年,那可是Windows 95的时代,所以别再提32位地址线只有32位的说法了,都什么年代的事情了。
32位Windows本来就是支持PAE的,PAE也允许硬件访问4G以上的内存,所以问题的根本不在于PAE,而在于Windows的限制。
从以上回答中复制一部分关键的内容过来:
几个结论:
1、PAE允许操作系统在32位模式下使用大于4G的物理内存。
2、不管是否使用PAE,对于单个进程而言,32位系统下可见的地址空间最大只有4G。
3、PAE的优势是可以让不同的进程(在不同的地址空间里)累计使用大于4G的内存,因此而达到使用超过4G内存的目的。
4、32位Windows系列虽然支持PAE,但实际在使用中最大内存限制在了4G,是人为限制的,原因后面给分析(楼上给出的各种理由都不成立,这里是有技术原因的)。
5、Linux则在开启PAE的模式下能支持在32位系统中使用超过4G的内存。
6、Windows Server版32位允许使用超过4G的物理内存
给不懂的再翻译一下:如果在32位Windows中使用超过4G内存,会影响驱动的DMA,容易导致程序崩溃或者蓝屏,所以为了保持兼容性,XP不允许使用超过4G内存(详细解释见引用的回答),Server版因为一开始就与普通版不兼容,所以不存在兼容性的问题。
所以,不要拿一堆公式来堆砌回答,根本没答到点子上,2^32 = 4G这种公式谁都会。
Windows XP时代,有非官方的人做过XP 4G的补丁,但非常不稳定。
关于DMA 4G的问题,这里多说一下:
很多硬件,尤其是老硬件,做DMA的时候,要求内存物理地址必须是4G以下的,否则硬件可能会访问不到内存,因为硬件自身的地址线是32位的。所以配套的驱动也需要在做DMA时,申请4G以下的内存空间。
微软在这方面偷懒,32位环境下,默认所有的内存都是可以DMA的,默认所有内存都是4G以下的,这样做很省事,驱动不需要判断申请的物理内存地址,直接用就是了。但这就把驱动的工作范围限定在4G以下了。而大多数驱动不会主动检查物理地址范围,这就导致一旦物理地址超范围,驱动肯定崩。解决的办法也很简单,就是改驱动,但问题是很多驱动都不是微软写的,而是第三方的,甚至连数字签名也没有,微软显然没有能力推动厂商做这个事情,后果就是微软不得不把32位Windows的桌面版本,限定在4G内存以内工作。
如果做过非x86驱动的人应该了解,在某些平台上(PPC/ARM/MIPS)并非所有的内存都可以做DMA,写驱动的时候必须万分小心,不能直接把malloc出来的内存交给硬件使用。
其实从编程的角度,这种设计是需要严格禁止的。
换句话说:外表相似但实质表现不同的函数,我们需要把它的接口或者名称有意做得不同,避免误用。
所以:这个商品的设计师,它肯定不懂编程。
如果是我,可能会刻意的改变USB插座的位置布局,让它看起来长得不一样。——至少改变一下USB插口的颜色。
--
老插线板名义上是 5V2A 的 10W 插线板,实际上是单口输出最大2A,多口同时输出的情况下,它的实际表现大约是 5V1A,也就是苹果那个万年诟病充电头的水平。——换句话说,旧插线板的USB接口,几乎是没有什么用处的鸡肋。
新插线板,号称单口27W,多口的情况下肯定会缩水,但我猜测至少QC3.0快充是可以用的。相比旧板子应该说是从协议层面有了很大进步。一个典型的例子是接无线充电器不需要浪费充电头了。
解释一下:小米目前的无线充是 30W,需要30W的充电头,但商城只有 18W 跟 65W 的充电头出售,小米商城根本没有适配无线充的 30W 充电头。如果插这个接线板,大概能当 27W 用吧?