Krótka odpowiedź: licencja
Wyłączając sprzęt z równania, jest to głównie sztuczne ograniczenie oprogramowania:
Limit [] jest pobierany z rejestru przez wywołanie funkcji o nazwie ZwQueryLicenseValue
, która sama jest wywoływana z wewnętrznej procedury, którą Microsoft opublikował jako plik symboli MxMemoryLicense
.
Źródło: Licencjonowana pamięć w 32-bitowym systemie Windows Vista
Dodatkowe informacje
Oczywiście dane licencji przechowywane w rejestrze, nawet w nieudokumentowanym formacie, mogą być łatwo zmienione przez użytkowników, na co mieliby pewną motywację, ponieważ Microsoft pobiera znacznie różne ceny za różne licencje. Microsoft ma zatem rozbudowany schemat sprawdzania, czy dane licencji pozostają takie, jakie chce Microsoft. Jądro jest repozytorium tego, czy dane licencyjne zostały zmienione, i w tym celu eksportuje jeszcze dwie funkcje, ExGetLicenseTamperState
i ExSetLicenseTamperState
.
Źródło: Licencjonowanie oprogramowania
ExGetLicenseTamperState
Ta [nieudokumentowana] funkcja pyta jądro, czy dane licencji zostały sfałszowane.
Wewnętrzne użycie odbywa się w zegarze, który powtarza się mniej więcej co godzinę. Jeśli okaże się 4
, że jest to stan sabotażu , system Windows zatrzymuje się. Kod kontroli błędów to SYSTEM_LICENSE_VIOLATION
( 0x9A
), z 0x1B
pierwszym argumentem.
Źródło: ExGetLicenseTamperState
Praktyczny przykład
Powiedzmy, że masz komputer z 32 GiB RAM i zainstalować Windows 7 Home Premium x64 (64-bitowej). W takim przypadku byłbyś ograniczony do 16 GiB. Jeśli miałbyś skorzystać z Windows Anytime Upgrade i uaktualnić do droższej wersji, nagle zamiast tego limit zostałby ustawiony na 192 GiB.
Wniosek
Wszystkie wersje systemu Windows 7 mają ten sam kod źródłowy. Główną różnicą jest liczba funkcji / ograniczeń, które są włączone lub wyłączone. Wersje dla klientów profesjonalnych i wyższych nie mają górnego limitu ilości pamięci RAM, którą mogą obsłużyć, i są objęte licencją na to, co Microsoft gwarantuje do obsługi.
Ponadto umowa licencyjna użytkownika systemu Windows 7 wyraźnie stwierdza, że nie można „używać oprogramowania do komercyjnych usług hostingowych oprogramowania”, co sugeruje Microsoft, że jeśli potrzebujesz więcej pamięci RAM, na którą ma licencję na najwyższą wersję klienta, to tak naprawdę chcesz serwera licencja. Odpowiednik serwera Windows 7 (czyli Windows Server 2008 R2) może używać do 2 TiB pamięci RAM w wersjach Enterprise i Datacenter.
Ponieważ technologia rozwija się szybko, to, co było do zaakceptowania wczoraj, jutro może nie wystarczyć. Aby to nadrobić, Windows 8 podniósł limity do 128 GiB i 512 GiB, odpowiednio dla wersji Core i Pro / Enterprise. Dotyczy to tylko wersji 64-bitowych: wersje 32-bitowe są nadal ograniczone do 4 GiB. Wersja serwerowa, Windows Server 2012, może obsługiwać do 4 TiB pamięci RAM w wyższych wersjach.
Dalsza lektura