114

Я знаю, что материнские платы, BIOS и т.д. Могут устанавливать верхние пределы того, сколько ОЗУ мы можем установить или использовать на отдельных машинах. Однако что определяет максимальный объем оперативной памяти для Windows 7 x64?

Это фундаментальное архитектурное ограничение ОС? Разные версии Windows 7 имеют разные максимальные значения ОЗУ (Версия для начинающих <= 2 ГБ, Профессиональная <= 192 ГБ). Это то, что может быть на самом деле изменено?

Для сравнения, Ubuntu 64x позволяет использовать до 1024 ГБ ОЗУ.

2 ответа2

185

Краткий ответ: лицензия

Исключая аппаратные средства из уравнения, это в основном искусственное ограничение программного обеспечения:

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

дальнейшее чтение

53

Microsoft лицензирует это таким образом. Они, вероятно, хотят, чтобы вы пошли и заплатили за продукт Windows Server, лицензированный для работы с большими ресурсами. То же самое и с другими продуктами, такими как SQL Server. На SQL Server Express наложены ограничения, поэтому, если вам нужно больше ресурсов, вы должны купить продукт, который разрешает это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .