Краткий ответ: лицензия
Исключая аппаратные средства из уравнения, это в основном искусственное ограничение программного обеспечения:
[Ограничение] извлекается из реестра путем вызова функции с именем ZwQueryLicenseValue
, которая сама вызывается из внутренней процедуры, которую опубликованные в Microsoft файлы файлов символов называют MxMemoryLicense
.
Источник: Лицензионная память в 32-битной Windows Vista
Дополнительная информация
Конечно, пользователи могут легко изменять лицензионные данные, хранящиеся в реестре даже в недокументированном формате, что у них будет стимул попробовать, поскольку Microsoft взимает значительно разные цены за разные лицензии. Поэтому у Microsoft есть сложная схема проверки того, что лицензионные данные остаются такими, как того хочет Microsoft. Ядро является хранилищем информации о том, были ли подделаны данные лицензирования, и для этого экспортирует еще две функции, ExGetLicenseTamperState
и ExSetLicenseTamperState
.
Источник: Лицензирование программного обеспечения
ExGetLicenseTamperState
Эта [недокументированная] функция спрашивает ядро, были ли подделаны данные лицензии.
Внутреннее использование в таймере, который повторяется примерно каждый час. Если обнаружено, что состояние тампера равно 4
, то Windows останавливается. Код проверки ошибки: SYSTEM_LICENSE_VIOLATION
(0x9A
), с 0x1B
в качестве первого аргумента.
Источник: ExGetLicenseTamperState
Практический пример
Допустим, у вас есть компьютер с 32 ГБ ОЗУ и вы устанавливаете Windows 7 Home Premium x64 (64-разрядная версия). В этом случае вы будете ограничены до 16 ГиБ. Если бы вы использовали Windows Anytime Upgrade и обновились до более дорогой версии, внезапно вместо этого было бы установлено ограничение в 192 ГиБ.
Заключение
Все выпуски Windows 7 используют один и тот же исходный код. Основным отличием является количество функций / ограничений, которые либо включены, либо отключены. Профессиональные и более поздние версии клиентов не имеют верхнего предела объема ОЗУ, который они могут обрабатывать, а просто лицензируются на то, что Microsoft гарантирует поддержку.
Кроме того, в лицензионном соглашении для Windows 7 прямо сказано, что вы не можете "использовать программное обеспечение для коммерческих служб размещения программного обеспечения", намекая на то, что Microsoft предположила, что если вам нужно больше ОЗУ, чем лицензировано для самой высокой версии клиента, то вам действительно нужен сервер лицензия. Серверный аналог Windows 7 (то есть Windows Server 2008 R2) может использовать до 2 ТБ ОЗУ в выпусках Enterprise и Datacenter.
Поскольку технологии развиваются быстро, то, что было приемлемо вчера, завтра может быть недостаточно. Чтобы наверстать упущенное, Windows 8 подняла ограничения до 128 ГиБ и 512 ГиБ для версий Core и Pro/Enterprise соответственно. Это относится только к 64-битным версиям: 32-битные версии по-прежнему ограничены 4 ГиБ. Версия сервера, Windows Server 2012, может адресовать до 4 ТБ ОЗУ в более поздних выпусках.
дальнейшее чтение