我知道主板、BIOS 等可能会对我们在单个机器上安装或使用的 RAM 数量设置上限。但是,Windows 7 x64 的最大 RAM 是多少?
这是操作系统的基本架构限制吗?不同的 Windows 7 版本具有不同的 RAM 最大值(入门版 <= 2GB,专业版 <= 192 GB)。这是否真的可以改变?
作为比较,Ubuntu 64x 允许高达 1024GB 的 RAM。
答案1
简短回答:许可证
如果排除硬件因素,这主要是人为的软件限制:
通过调用名为 的函数从注册表中检索限制
ZwQueryLicenseValue
,该函数本身由 Microsoft 发布的符号文件命名为 的内部过程调用MxMemoryLicense
。
附加信息
当然,即使以未记录的格式存储在注册表中的许可证数据也可能被用户轻易更改,而且他们会有尝试更改的动机,因为 Microsoft 对不同许可证收取的费用差别很大。因此,Microsoft 制定了一个精心设计的方案来检查许可证数据是否符合 Microsoft 的要求。内核是许可证数据是否被篡改的存储库,为此,它导出了另外两个函数
ExGetLicenseTamperState
和ExSetLicenseTamperState
。来源:软件许可
删除许可证篡改状态
此[未记录的]函数询问内核许可证数据是否被篡改。
内部使用大约每小时重复一次的计时器。如果发现篡改状态为
4
,则 Windows 停止。错误检查代码为SYSTEM_LICENSE_VIOLATION
(0x9A
),0x1B
作为第一个参数。来源:删除许可证篡改状态
一个实际的例子
假设你有一台 32吉布的 RAM,并且您安装的是 Windows 7 Home Premium x64(64 位)。在这种情况下,您将被限制为 16 GiB。如果您要使用Windows 随时升级,并升级到更昂贵的版本,限制突然就会被设置为 192 GiB。
结论
所有 Windows 7 版本都共享相同的源代码。主要区别在于启用或禁用的功能/限制的数量。专业版和更高客户端版本对它们可以处理的 RAM 数量没有上限,并且只获得 Microsoft 保证支持的许可。
此外,Windows 7 EULA 明确指出您不得“将该软件用于商业软件托管服务”,这暗示微软认为如果您需要的 RAM 比最高客户端版本许可的 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。
进一步阅读
答案2
微软就是这样授权的。他们可能希望你去购买被授权使用更多资源的 Windows Server 产品。其他产品(如 SQL Server)也是如此。SQL Server Express 有限制,因此如果你需要更多资源,你必须购买允许它的产品。