我知道主板,BIOS等可以设置我们可以在单个机器上安装或使用多少RAM的上限。但是,什么定义了Windows 7 x64的最大RAM?
这是操作系统的基本架构限制吗?不同的Windows 7版本具有不同的RAM最大值(Starter edition <= 2GB,Professional <= 192 GB)。它可能真的改变了吗?
作为对比,Ubuntu 64x允许高达1024GB的RAM。
我知道主板,BIOS等可以设置我们可以在单个机器上安装或使用多少RAM的上限。但是,什么定义了Windows 7 x64的最大RAM?
这是操作系统的基本架构限制吗?不同的Windows 7版本具有不同的RAM最大值(Starter edition <= 2GB,Professional <= 192 GB)。它可能真的改变了吗?
作为对比,Ubuntu 64x允许高达1024GB的RAM。
Answers:
从等式中排除硬件,主要是人为的软件限制:
通过调用名为的函数从注册表中检索[限制]
ZwQueryLicenseValue
,该函数本身是从Microsoft发布的符号文件名称为的内部过程调用的MxMemoryLicense
。
当然,即使是非文档格式存储在注册表中的许可证数据也可能很容易被用户更改,因为微软对不同的许可证收取的价格明显不同,因此他们会有一些尝试。因此,微软有一个精心设计的方案来检查许可证数据是否仍然是微软想要的。内核是许可数据是否被篡改的存储库,并为此导出了另外两个函数,
ExGetLicenseTamperState
以及ExSetLicenseTamperState
。来源:软件许可
ExGetLicenseTamperState
这个[未记录的]函数询问内核许可证数据是否已被篡改。
内部使用是在一个计时器,大约每小时重复一次。如果发现篡改状态
4
,则Windows停止。错误检查代码是SYSTEM_LICENSE_VIOLATION
(0x9A
),0x1B
作为第一个参数。
假设您的计算机具有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。
微软以这种方式授权。他们可能希望您去购买获得许可以运行更多资源的Windows Server产品。它与SQL Server等其他产品相同。SQL Server Express对其有限制,因此如果您需要更多资源,则必须购买允许它的产品。