
很多年前已经有答案,并且总是问类似的问题. 首先,提供一个历史问题的链接:
为什么Microsoft在新操作系统中不支持大于4GB的32位内存?
任何谈论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. 启用PAE后,Linux可以支持在32位系统中使用超过4G的内存.
6. Windows Server的32位版本允许使用超过4G的物理内存
参考: “系统属性”对话框和“系统信息”工具报告的RAM小于您在Windows Vista或Windows XP Service Pack 2或更高版本中期望的内存
为不了解的用户进行翻译: 如果您在32位Windows中使用了超过4G的内存,它将影响驱动程序的DMA并容易导致程序崩溃或蓝屏. 因此,为了保持兼容性,XP不允许超过4G的内存(详细说明,请参见引用的答案),服务器版本与开始时的普通版本不兼容,因此不存在兼容性问题.
因此,请勿使用大量公式来堆积答案. 您根本找不到答案. 任何人都可以使用2 ^ 32 = 4G这样的公式.
在Windows XP时代,一些非官方人士安装了XP 4G补丁程序,但它非常不稳定.
关于DMA 4G,让我在这里进一步谈谈:
许多硬件,特别是旧的硬件,在执行DMA时,内存的物理地址必须低于4G,否则硬件可能无法访问内存,因为硬件自己的地址线是32位. 因此,在执行DMA时,支持的驱动程序还需要申请4G以下的存储空间.
Microsoft在这方面很懒. 在32位环境中,默认情况下所有内存都是DMA可用的. 默认情况下,所有内存均低于4G. 这很容易. 驱动程序不需要确定要申请的物理内存地址. 而已. 但这将驱动器的工作范围限制在4G以下. 但是,大多数驱动程序不会主动检查物理地址范围,这会导致驱动程序在物理地址超出范围时崩溃. 解决方案也很简单,那就是更改驱动程序,但是问题是,许多驱动程序不是由Microsoft而是由第三方编写的,即使没有数字签名也是如此. 显然,微软没有能力推动制造商这样做. 结果是Microsoft必须限制桌面版32位Windows只能在4G RAM内运行.
那些使用非x86驱动程序的人应该了解,在某些平台(PPC / ARM / MIPS)上,并非所有内存都可以用于DMA. 编写驱动程序时必须非常小心,并且不能直接使用malloc内存将其分配给硬件.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-312858-1.html
网商是大趋势
#吴亦凡1106生日快乐##吴亦凡##吴亦凡BadGirl#吴亦凡生日快乐