Що обмежує машини Windows 7 x64 на <= 192 ГБ оперативної пам’яті?


117

Я знаю, що материнські плати, BIOS тощо можуть встановлювати верхні межі щодо кількості оперативної пам’яті, яку ми можемо встановити або використовувати на окремих машинах. Однак що визначає максимальну оперативну пам’ять для Windows 7 x64?

Це фундаментальне архітектурне обмеження ОС? Різні версії Windows 7 мають різні максимуми оперативної пам'яті (версія для початківців <= 2 Гб, професійна <= 192 ГБ). Це щось, що може бути насправді змінено?

Для порівняння, Ubuntu 64x дозволяє отримати 1024 ГБ оперативної пам’яті.



1
Вони вибирають фізичні обмеження. Після випуску Windows 7 на ринку,
несерверному,

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.

Крім того, EULA Windows 7 прямо говорить, що ви не можете "використовувати програмне забезпечення для комерційних програм хостингу програмного забезпечення", натякаючи на те, що Microsoft припускає, що якщо вам потрібно більше оперативної пам'яті, на що ліцензується найвища версія клієнтського видання, то ви дійсно хочете сервер ліцензія. Серверний аналог Windows 7 (тобто Windows Server 2008 R2) може використовувати до 2 TiB оперативної пам’яті у виданнях Enterprise та Datacenter.

Коли технологія рухається швидко, завтра може бути недостатньо того, що було прийнятним. Для того, щоб наздогнати, Windows 8 підвищив ліміти до 128 GiB та 512 GiB для версій Core та Pro / Enterprise відповідно. Це стосується лише 64-розрядних версій: 32-бітні версії все ще обмежені в 4 Гб. Версія сервера, Windows Server 2012, може містити до 4 TiB оперативної пам’яті у вищих версіях.

Подальше читання


32
Це найкраща відповідь, оскільки вона посилається на хороше джерело з аналізом.
Кевін Панько

9
Лише легкий захист: вихідний код може бути однаковим, але це не обов'язково той самий код, який був би там без підтримки. Наприклад, багато роботи було зроблено для покращення масштабованості, коли у вас багато процесорів (див. Тут "глобальний замок диспетчера": tomshardware.com/news/microsoft-windows-server,6589.html ). Цей код майже напевно однаковий у всіх виданнях, однак вищі версії Windows підтримують більше процесорів. Але підтримка більшої кількості процесорів зайняла більше роботи. Чи справедливо стягувати більше за цю роботу?
Марк Совул

8
коротше: хв (ліцензія_ліміт, фізичний_ліміт)
акіра

2
@ AndonM.Coleman такі продукти як Windows, які продають стільки копій, витрати на розробку за ліцензію незначні порівняно з більшістю інших витрат на ліцензію. Я бачу статті в Інтернеті, в яких говорилося, що Windows 8 продала понад 100 мільйонів ліцензій за перші 6 місяців. Протягом терміну служби 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 ГБ полягає в тому, що верхня частина Гіга є пам'яттю, яка відображається на периферійних пристроях
храповик-вирод

2
@MattH Це поширене неправильне уявлення. Як приклад, подивіться на офіційні системні вимоги Windows Server 2008 : "Максимум ( 32-бітні системи): 4 Гб (Стандарт) або 64 ГБ (Корпорація та Центр обробки даних)." У цьому випадку 4 ГБ є обмеженням ліцензії, а 64 ГБ - обмеження розширення фізичної адреси (якщо припускати, що чіпсет підтримує перезапис).
і31415

3
Причина, по якій споживач 32-розрядної Windows відмовляється використовувати більше 4 ГБ адресного простору, полягає в тому, що є занадто багато застарілих 32-бітних драйверів, які не знають про PAE і можуть викликати BSOD, якщо вони використовуються з ним. Було б кошмаром підтримки, якби МС це дозволила.
Ендрю Медіко
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.