什么限制Windows 7 x64机器<= 192GB RAM?


117

我知道主板,BIOS等可以设置我们可以在单个机器上安装或使用多少RAM的上限。但是,什么定义了Windows 7 x64的最大RAM?

这是操作系统的基本架构限制吗?不同的Windows 7版本具有不同的RAM最大值(Starter edition <= 2GB,Professional <= 192 GB)。它可能真的改变了吗?

作为对比,Ubuntu 64x允许高达1024GB的RAM。



1
他们选择了物理限制。当Windows 7发布时,没有硬件在非服务器市场上支持超过192GB的内存
Ramhound 2014年

5
安装Windows 8,这里的Pro / Enterprise可以使用512GB RAM。
magicandre1981 2014年

Answers:


185

简答:许可证

从等式中排除硬件,主要是人为的软件限制:

通过调用名为的函数从注册表中检索[限制] ZwQueryLicenseValue,该函数本身是从Microsoft发布的符号文件名称为的内部过程调用的MxMemoryLicense

来源:32位Windows Vista中的许可内存

附加信息

当然,即使是非文档格式存储在注册表中的许可证数据也可能很容易被用户更改,因为微软对不同的许可证收取的价格明显不同,因此他们会有一些尝试。因此,微软有一个精心设计的方案来检查许可证数据是否仍然是微软想要的。内核是许可数据是否被篡改的存储库,并为此导出了另外两个函数,ExGetLicenseTamperState以及ExSetLicenseTamperState

来源:软件许可

­

ExGetLicenseTamperState

这个[未记录的]函数询问内核许可证数据是否已被篡改。

内部使用是在一个计时器,大约每小时重复一次。如果发现篡改状态4,则Windows停止。错误检查代码是SYSTEM_LICENSE_VIOLATION0x9A),0x1B作为第一个参数。

来源:ExGetLicenseTamperState

一个实际的例子

假设您的计算机具有32 GiB的RAM,并且您安装了Windows 7 Home Premium x64(64位)。在这种情况下,您将被限制为16 GiB。如果您使用Windows Anytime Upgrade并升级到更昂贵的版本,则突然限制将设置为192 GiB。

结论

所有Windows 7版本共享相同的源代码。主要区别在于启用或禁用的功能/限制的数量。专业版和更高版本的客户端版本对其可以处理的RAM数量没有上限,并且只获得Microsoft保证支持的许可。

此外,Windows 7 EULA明确表示您可能不会“将该软件用于商业软件托管服务”,暗示微软认为如果您需要更多的RAM以获得最高客户端版本的许可,那么您真正想要的是服务器执照。Windows 7的服务器对应(即Windows Server 2008 R2)可以在企​​业版和数据中心版中使用最多2 TiB的RAM。

随着技术的快速发展,昨天可接受的可能不够明天。为了赶上,Windows 8分别将Core和Pro / Enterprise版本的限制提升到128 GiB和512 GiB。但这仅适用于64位版本:32位版本的上限仍为4 GiB。服务器版本Windows Server 2012可以在较高版本中处理最多4 TiB的RAM。

进一步阅读


32
这是最好的答案,因为它通过分析链接到一个好的来源。
Kevin Panko 2014年

9
只是一个轻微的防御:源代码可能是相同的,但它不一定是没有支持时可能存在的相同代码。例如,当您拥有大量处理器时,已经做了很多工作来提高可扩展性(请参阅“全局调度程序锁定”:tomshardware.com/news/microsoft-windows-server,6589.html)。在所有版本中,该代码几乎肯定是相同的,但是更高版本的Windows支持更多CPU。但支持更多的CPU需要更多的工作。为这项工作收取更多费用是否公平?
Mark Sowul

8
简而言之:min(license_limit,physical_limit)
akira 2014年

2
与每个许可证的大多数其他成本相比,@ AndonM.Coleman产品(如Windows销售这么多副本)的每个许可证的开发成本是微不足道的。我看到网上的文章称Windows 8在前6个月销售了1亿多个许可证。在Windows 8 / 8.1的整个生命周期中,我预计每个许可证的开发成本将低于生产零售盒和每盒内容的成本。新版本的Windows通常不是从头开始编写的。Windows 8 / 8.1 / 2012都非常相似,与vista / 7/2008相似。XP /
2003/2000

5
不要误解我的意思,新版本已经完成了它们的工作,使它们比旧版本更好。但是内存管理之类的东西在版本之间保持几乎相同 通常会进行一些调整,因为新的硬件突出了以前在测试中不明显的问题。但主要代码在产品组中保持不变。
BeowulfNode42 2014年

53

微软以这种方式授权。他们可能希望您去购买获得许可以运行更多资源的Windows Server产品。它与SQL Server等其他产品相同。SQL Server Express对其有限制,因此如果您需要更多资源,则必须购买允许它的产品。


6
他,Windows Server是免费提供给学生(dreamspark),所以对我们来说,获得它比购买Windows副本更可行...(没有隶属关系)
gparyani 2014年

2
这是32位Windows XP及以上版本可支持PAE但MS将限制限制在4GB内存的原因之一
phuclv 2014年

3
@MattH限制为3GB是因为上面的Gig是内存映射到外设
棘轮怪胎

2
@MattH这是一个常见的误解。例如,请查看官方Windows Server 2008系统要求:“最大(32位系统):4GB(标准)或64GB(企业和数据中心)。” 在这种情况下,4 GB是许可限制,64 GB是物理地址扩展限制(假设芯片组支持重映射)。
1414年

3
消费者32位Windows拒绝使用超过4GB的地址空间的原因是有太多的传统32位驱动程序不知道PAE并且如果与它一起使用会导致BSOD。如果MS启用了这将是一个支持噩梦。
Andrew Medico 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.