Что ограничивает компьютеры под управлением Windows 7 x64 до <= 192 ГБ ОЗУ?

117

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

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

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

Лукас Фортини
источник
3
возможный дубликат 64-битной ОС и оперативной памяти
Febcʜιᴇ007
1
Они выбирают физические ограничения. Когда была выпущена Windows 7, на несерверном рынке не было оборудования, которое поддерживало бы более 192 ГБ памяти
Ramhound
5
установить Windows 8, здесь Pro / Enterprise может использовать 512 ГБ ОЗУ.
magicandre1981

Ответы:

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 ТБ ОЗУ в более поздних выпусках.

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

31415
источник
32
Это лучший ответ, потому что он ссылается на хороший источник с анализом.
Кевин Панко
9
Просто небольшая защита: исходный код может быть таким же, но это не обязательно тот же код, который был бы там без поддержки. Например, была проделана большая работа по улучшению масштабируемости, когда у вас много процессоров (см. «Глобальную блокировку диспетчера» здесь: tomshardware.com/news/microsoft-windows-server,6589.html ). Этот код почти наверняка одинаков во всех выпусках, однако более высокие выпуски Windows поддерживают большее количество процессоров. Но поддержка большего количества процессоров потребовала больше работы. Справедливо ли брать больше за эту работу?
Марк Соул
8
короче говоря: мин (license_limit, Physical_limit)
Акира
2
@ AndonM. Такие продукты, как Windows, которые продают столько копий, стоимость разработки на лицензию незначительна по сравнению с большинством других затрат на лицензию. Я вижу в Интернете статьи о том, что за первые 6 месяцев Windows 8 продала более 100 миллионов лицензий. Я ожидаю, что в течение срока службы Windows 8 / 8.1 стоимость разработки на одну лицензию будет меньше, чем стоимость производства розничной коробки и содержимого на коробку. Новые версии Windows обычно не пишутся с нуля. Windows 8 / 8.1 / 2012 все ОЧЕНЬ похожи и похожи на Vista / 7/2008. XP /
2003/2000 также
5
Не поймите меня неправильно, над новыми версиями была сделана работа, чтобы сделать их лучше, чем старые версии. Но такие вещи, как управление памятью, остаются практически идентичными между версиями. Часто вносятся некоторые изменения, поскольку новое оборудование выделяет проблемы, которые ранее не были очевидны при тестировании. Но основной код остается тем же в группе продуктов.
BeowulfNode42
53

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

Дэйв Лукре
источник
6
Хе- хе , Windows Server доступен бесплатно для студентов ( Dreamspark ), поэтому для нас это более разумно , чем купить копию Windows ... (без принадлежности)
gparyani
2
это одна из причин, почему 32-битные Windows XP и выше могут поддерживать PAE, но MS ограничивает ограничение до 4 ГБ ОЗУ
phuclv
3
@MattH предел 3ГБ потому , что верхняя Gig является память сопоставляется с периферийными устройствами
трещотки урод
2
@MattH Это распространенное заблуждение. В качестве примера рассмотрим официальные системные требования Windows Server 2008 : «Максимум ( 32-разрядные системы): 4 ГБ (стандартная версия) или 64 ГБ (корпоративная версия и центр обработки данных)». В этом случае 4 ГБ - это ограничение лицензии, а 64 ГБ - ограничение расширения физического адреса (при условии, что чипсет поддерживает переназначение).
and31415
3
Причина, по которой потребитель 32-разрядной Windows отказывается использовать более 4 ГБ адресного пространства, заключается в том, что слишком много устаревших 32-разрядных драйверов, которые не знают о PAE и могут вызвать BSOD при использовании с ним. Это было бы кошмаром поддержки, если MS включил это.
Эндрю Медико