我偶然浏览了许多关于 32 位 Windows 与 64 位 Windows 的局限性的博客。最主要的区别是 32 位操作系统只能为每个进程分配 2GB RAM,总共只能分配 4GB RAM。
虽然理由是 32 位操作系统只能分配 2^32 的地址空间,但我仍然不明白这个限制是如何起作用的?有人能告诉我吗?
答案1
原因是 2 32是可以存储在单个 32 位变量中的最大整数。
因此,除非您有某种方案将指针拆分到 2 个(或更多)变量中或使用 64 位整数,否则物理上不可能寻址更大的内存位置。使用 32 位整数或仅使用单个变量来寻址内存的原因有很多,但速度和可靠性是首要考虑因素。
答案2
这是多种因素的综合,并且这些信息均已在此处提供...尽管是零散的(无双关语意)。
首先,如上所述,32 位模型存在物理限制。一个位要么是 1,要么是 0。32 个位加起来占用了一定量的空间。你知道……二进制……10101010 等。4GB 的唯一空间。 32 位可以存储的整数值范围是 0 到 4,294,967,295。因此,具有 32 位内存地址的处理器可以直接访问 4 GiB 的字节寻址内存。
现在,有了物理地址扩展(PAE),嗯……引用“虚拟地址的 32 位大小没有改变,因此常规应用软件继续使用具有 32 位地址的指令,并且(在平面内存模型中)虚拟地址空间限制为 4 GB。操作系统使用页表将这个 4 GB 地址空间映射到 [更大数量的] 物理内存中。映射通常针对每个进程应用不同。这样,额外的内存就很有用,即使没有单一的常规申请可以同时访问所有内容。“因此,即使使用 PAE,虽然你的操作系统会识别并显示你的 32 位系统中有超过 4GB 的空间,但没有一个程序可以访问全部您的 RAM。
这能消除困惑吗?32 位系统中只有 4GB 的唯一内存地址空间。由于您无法同时两次使用相同的内存地址空间而不会导致错误,因此这是物理限制。请记住... 当 32 位系统推出时,人们还没有想到要使用具有如此大 RAM 的系统。