Co ogranicza komputery z systemem Windows 7 x64 do <= 192 GB pamięci RAM?

117

Wiem, że płyty główne, BIOS itp. Mogą ustalić górne limity ilości pamięci RAM, którą możemy zainstalować lub użyć na poszczególnych komputerach. Co jednak określa maksymalną pamięć RAM dla systemu Windows 7 x64?

Czy to podstawowe ograniczenie architektoniczne systemu operacyjnego? Różne wersje systemu Windows 7 mają różne maksima pamięci RAM (wersja Starter <= 2 GB, Professional <= 192 GB). Czy jest to coś, co można zmienić?

Dla porównania Ubuntu 64x pozwala na maksymalnie 1024 GB pamięci RAM.

Lucas Fortini
źródło
3
możliwy duplikat 64-bitowego systemu operacyjnego i pamięci RAM
ᴇcʜιᴇ007
1
Wybierają ograniczenia fizyczne. Kiedy Windows 7 został wydany, nie było sprzętu, który obsługiwałby więcej niż 192 GB pamięci na rynku innym niż serwer
Ramhound
5
zainstaluj Windows 8, tutaj Pro / Enterprise może używać 512 GB pamięci RAM.
magicandre1981

Odpowiedzi:

185

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, ExGetLicenseTamperStatei 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 0x1Bpierwszym 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

311415
źródło
32
To najlepsza odpowiedź, ponieważ łączy się z dobrym źródłem z analizą.
Kevin Panko
9
Tylko niewielka obrona: kod źródłowy może być taki sam, ale niekoniecznie ten sam kod, który byłby tam bez wsparcia. Na przykład wiele pracy włożono w poprawę skalowalności, gdy masz wiele procesorów (patrz „globalna blokada programu rozsyłającego ” tutaj: tomshardware.com/news/microsoft-windows-server,6589.html ). Ten kod jest prawie na pewno taki sam we wszystkich wersjach, jednak wyższe wersje systemu Windows obsługują więcej procesorów. Ale obsługa większej liczby procesorów wymagała więcej pracy. Czy godziwie jest pobierać więcej za tę pracę?
Mark Sowul
8
w skrócie: min (license_limit, physical_limit)
akira
2
@ Produkty AndonM.Coleman, takie jak Windows, które sprzedają tyle kopii, koszty opracowania na licencję są nieznaczne w porównaniu z większością innych kosztów na licencję. Widzę artykuły online, które mówią, że Windows 8 sprzedał ponad 100 milionów licencji w ciągu pierwszych 6 miesięcy. W okresie eksploatacji systemu Windows 8 / 8.1 oczekuję, że koszt opracowania licencji będzie mniejszy niż koszt wytworzenia opakowania detalicznego i zawartości pudełka. Nowe wersje systemu Windows zwykle nie są pisane od zera. Windows 8 / 8.1 / 2012 są BARDZO podobne i podobne pod maską do vista / 7/2008. XP / 2003/2000 można również zgrupować razem
BeowulfNode42
5
Nie zrozumcie mnie źle, w nowych wersjach wykonano prace nad nimi, aby były lepsze niż w starszych wersjach. Ale rzeczy takie jak zarządzanie pamięcią pozostają prawie identyczne między wersjami. Często wprowadza się kilka poprawek, ponieważ nowy sprzęt uwypukla problemy, które nie były wcześniej widoczne w testach. Ale główny kod pozostaje taki sam w grupie produktów.
BeowulfNode42
53

Microsoft udziela takiej licencji. Prawdopodobnie chcą, abyś poszedł i zapłacił za produkt Windows Server, który jest licencjonowany do działania z większymi zasobami. Tak samo jest z innymi produktami, takimi jak SQL Server. SQL Server Express ma nałożone ograniczenia, więc jeśli potrzebujesz więcej zasobów, musisz kupić produkt, który na to pozwala.

Dave Lucre
źródło
6
On, Windows Server jest dostępny dla studentów za darmo ( dreamspark ), więc dla nas jest to bardziej wykonalne, niż kupić kopię systemu Windows ... (bez powiązania)
gparyani
2
jest to jeden z powodów, dla których 32-bitowy system Windows XP i nowszy może obsługiwać PAE, ale MS ogranicza limit do 4 GB pamięci RAM
phuclv
3
@MattH ograniczenie do 3GB dlatego górna Gig jest odwzorowany w pamięci do urządzeń peryferyjnych
ratchet maniakiem
2
@MattH To powszechne nieporozumienie. Jako przykład przyjrzyj się oficjalnym wymaganiom systemu Windows Server 2008 : „Maksymalnie ( systemy 32-bitowe ): 4 GB (Standard) lub 64 GB (Enterprise i centrum danych)”. W tym przypadku 4 GB to ograniczenie licencji, a 64 GB to limit rozszerzenia adresu fizycznego (zakładając, że mikroukład obsługuje mapowanie).
i31415
3
Powód, dla którego 32-bitowy system Windows konsumenta odmawia użycia więcej niż 4 GB przestrzeni adresowej, jest taki, że istnieje zbyt wiele starszych 32-bitowych sterowników, które nie są świadome PAE i spowodowałyby BSOD, gdyby były z nim używane. Byłoby koszmarem wsparcia, gdyby MS to umożliwiło.
Andrew Medico,