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

Luc*_*ini 117 memory windows-7 comparison restrictions

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

这是操作系统的基本架构限制吗?不同的 Windows 7 版本具有不同的 RAM 最大值(入门版 <= 2GB,专业版 <= 192 GB)。它是可以真正改变的东西吗?

相比之下,Ubuntu 64x 允许多达 1024GB 的 RAM。

and*_*415 184

简短回答:许可证

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

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

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

附加信息

当然,即使以未记录的格式存储在注册表中的许可证数据也很容易被用户更改,因为 Microsoft 对不同的许可证收取显着不同的价格,因此他们有一些尝试尝试的动力。因此,Microsoft 有一个精心设计的计划,用于检查许可证数据是否符合 Microsoft 的要求。内核是许可数据是否被篡改的存储库,为此又导出了两个函数,ExGetLicenseTamperStateExSetLicenseTamperState.

资料来源:软件许可

­

ExGetLicense 篡改状态

这个 [undocumented] 函数询问内核许可证数据是否被篡改。

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

来源:ExGetLicenseTamperState

一个实际的例子

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

结论

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

此外,Windows 7 EULA 明确表示您不得“将该软件用于商业软件托管服务”,暗示 Microsoft 假设如果您需要更高客户端版本许可的更多 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认同)
  • 只是一个小小的防御:源代码可能是相同的,但它不一定是没有支持就会存在的相同代码。例如,当你有很多处理器时,做了很多工作来提高可扩展性(参见“全局调度程序锁”:http://www.tomshardware.com/news/microsoft-windows-server,6589.html) . 该代码几乎可以肯定在所有版本中都相同,但是更高版本的 Windows 支持更多的 CPU。但是支持更多的 CPU 需要做更多的工作。为这项工作收取更多费用是否公平? (9认同)
  • 简而言之:分钟(license_limit,physical_limit) (8认同)
  • 不要误会我的意思,新版本已经对它们进行了改进,使它们比旧版本更好。但是诸如内存管理之类的东西在版本之间几乎保持相同。由于新硬件突出了以前在测试中不明显的问题,因此通常会进行一些调整。但主要代码在产品组中保持不变。 (5认同)
  • @AndonM.Coleman 产品,如销售如此多副本的 Windows,与每个许可证的大多数其他成本相比,每个许可证的开发成本微不足道。我看到网上文章说 Windows 8 在前 6 个月内售出了超过 1 亿个许可证。在 Windows 8/8.1 的整个生命周期中,我预计每个许可证的开发成本将低于生产零售盒和每盒内容物的成本。新版本的 Windows 通常不是从头开始编写的。Windows 8/8.1/2012 都非常相似,并且与 vista/7/2008 相似。XP/2003/2000 也可以组合在一起 (2认同)
  • @Mark Sowul OP 问题更适合客户端版本。考虑功能较少的版本:Windows 7 Starter(仅限 x86,顺便说一句)。在这里,他们决定不让人们自定义桌面背景,这是自 Windows 95 以来可用的功能。处理它的代码已经存在,他们只是削弱了它。默认壁纸设置为`%windir%\Web\Wallpaper\Windows\img0.jpg`。图片 SHA-256 哈希被硬编码在“shell32.dll”中,每次登录时都会检查,如果更改,则恢复原始注册表值。那需要更多的工作。[来源](https://bit.ly/1ivm9yj) (2认同)

Dav*_*cre 53

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

  • 嘿嘿,Windows Server 对学生免费提供 ([tag:dreamspark]),所以对我们来说,获得它比购买 Windows 的副本更可行......(无附属关系) (6认同)
  • @MattH 3GB 的限制是因为上 Gig 是映射到外围设备的内存 (3认同)
  • 消费者 32 位 Windows 拒绝使用超过 4GB 的地址空间的原因是有太多旧的 32 位驱动程序不知道 PAE,如果使用它会导致 BSOD。如果 MS 启用它,那将是一场支持噩梦。 (3认同)
  • 这就是为什么 32 位 Windows XP 及更高版本可以支持 PAE 但 MS 将限制限制为 4GB RAM 的原因之一 (2认同)
  • @MattH 这是一个常见的误解。举个例子,看看官方的【Windows Server 2008 系统要求】(http://msdn.microsoft.com/en-us/windowsserver/cc196364.aspx):“Maximum (**32-bit** systems ):4GB(标准)或 64GB(企业和数据中心)。” 在这种情况下,4 GB 是许可限制,64 GB 是 [物理地址扩展](http://en.wikipedia.org/wiki/Physical_Address_Extension) 限制(假设芯片组支持重新映射)。 (2认同)