Краткий ответ: лицензия
Исключая аппаратные средства из уравнения, это в основном искусственное ограничение программного обеспечения:
[Ограничение] извлекается из реестра путем вызова функции с именем 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 ТБ ОЗУ в более поздних выпусках.
дальнейшее чтение