Cosa limita le macchine Windows 7 x64 a <= 192 GB RAM?


117

So che le schede madri, il BIOS, ecc. Possono impostare limiti massimi su quanta RAM possiamo installare o utilizzare su singoli computer. Tuttavia, cosa definisce la RAM massima per Windows 7 x64?

È un limite architettonico fondamentale del sistema operativo? Diverse versioni di Windows 7 hanno diversi RAM massimi (Starter edition <= 2 GB, Professional <= 192 GB). È qualcosa che può essere effettivamente cambiato?

A titolo di confronto, Ubuntu 64x consente fino a 1024 GB di RAM.


3
possibile duplicato di 64 bit OS e RAM
Ƭᴇcʜιᴇ007,

1
Prendono limiti fisici. Quando è stato rilasciato Windows 7 non esisteva hardware che supportasse più di 192 GB di memoria nel mercato non server
Ramhound,

5
installa Windows 8, qui Pro / Enterprise può utilizzare 512 GB di RAM.
magicandre1981,

Risposte:


185

Risposta breve: la licenza

Escludendo l'hardware dall'equazione, si tratta principalmente di una restrizione software artificiale:

[Il] limite viene recuperato dal registro chiamando una funzione denominata ZwQueryLicenseValue, che viene a sua volta chiamata da una procedura interna che il nome dei file dei simboli pubblicati da Microsoft è MxMemoryLicense.

Fonte: memoria con licenza in Windows Vista a 32 bit

Informazioni aggiuntive

Naturalmente, i dati delle licenze memorizzati nel registro anche in un formato non documentato potrebbero essere facilmente modificati dagli utenti, cosa che avrebbero qualche incentivo a provare poiché Microsoft addebita prezzi significativamente diversi per licenze diverse. Microsoft ha quindi uno schema elaborato per verificare che i dati della licenza rimangano come Microsoft lo desidera. Il kernel è il repository per verificare se i dati di licenza sono stati manomessi e, a tal fine, esporta altre due funzioni ExGetLicenseTamperStatee ExSetLicenseTamperState.

Fonte: licenze software

­

ExGetLicenseTamperState

Questa funzione [non documentata] chiede al kernel se i dati della licenza sono stati manomessi.

L'uso interno è in un timer che si ripete all'incirca ogni ora. Se lo stato di manomissione risulta 4, Windows si arresta. Il codice di controllo bug è SYSTEM_LICENSE_VIOLATION( 0x9A), con 0x1Bcome primo argomento.

Fonte: ExGetLicenseTamperState

Un esempio pratico

Supponiamo che tu abbia un computer con 32 GiB di RAM e installi Windows 7 Home Premium x64 (64 bit). In tal caso verrai limitato a 16 GiB. Se dovessi utilizzare Windows Anytime Upgrade e passare a un'edizione più costosa, all'improvviso il limite verrebbe invece impostato su 192 GiB.

Conclusione

Tutte le edizioni di Windows 7 condividono lo stesso codice sorgente. La differenza principale è il numero di funzioni / limitazioni abilitate o disabilitate. Le versioni client professionali e superiori non hanno limiti massimi alla quantità di RAM che sono in grado di gestire e hanno solo la licenza per ciò che Microsoft garantisce di supportare.

Inoltre, l'EULA di Windows 7 afferma esplicitamente che non è possibile "utilizzare il software per servizi di hosting di software commerciali", suggerendo a Microsoft che si presuppone che se si necessita di più RAM rispetto a quella a cui è concessa la licenza della più alta edizione client, ciò che si desidera veramente è un server licenza. La controparte server di Windows 7 (ovvero Windows Server 2008 R2) può utilizzare fino a 2 TiB di RAM nelle edizioni Enterprise e Datacenter.

Mentre la tecnologia avanza rapidamente, ciò che era accettabile ieri potrebbe non essere sufficiente domani. Per raggiungere, Windows 8 ha innalzato i limiti a 128 GiB e 512 GiB per le edizioni Core e Pro / Enterprise, rispettivamente. Questo vale solo per le versioni a 64 bit, tuttavia: le versioni a 32 bit sono ancora limitate a 4 GiB. La versione del server, Windows Server 2012, può indirizzare fino a 4 TiB di RAM nelle edizioni superiori.

Ulteriori letture


32
Questa è la risposta migliore perché si collega a una buona fonte con analisi.
Kevin Panko,

9
Solo una leggera difesa: il codice sorgente potrebbe essere lo stesso, ma non è necessariamente lo stesso codice che sarebbe stato lì senza il supporto. Ad esempio, è stato fatto molto lavoro per migliorare la scalabilità quando si hanno molti processori (consultare qui "blocco dispatcher globale" qui: tomshardware.com/news/microsoft-windows-server,6589.html ). Quel codice è quasi certamente lo stesso in tutte le edizioni, tuttavia le edizioni più alte di Windows supportano più CPU. Ma supportare più CPU ha richiesto più lavoro. È giusto pagare di più per quel lavoro?
Mark Sowul,

8
in breve: min (license_limit, physical_limit)
akira

2
I prodotti @ AndonM.Coleman come Windows che vendono così tante copie i costi di sviluppo per licenza sono insignificanti rispetto alla maggior parte degli altri costi per licenza. Vedo articoli online che dicono che Windows 8 ha venduto oltre 100 milioni di licenze nei primi 6 mesi. Per tutta la durata di Windows 8 / 8.1, mi aspetto che il costo di sviluppo per licenza sarà inferiore al costo di produzione di una confezione e contenuto per scatola. Le nuove versioni di Windows in genere non sono scritte da zero. Windows 8 / 8.1 / 2012 sono MOLTO simili e simili sotto il cofano di Vista / 7/2008. Anche XP /
2003/2000

5
Non fraintendetemi, le nuove versioni hanno fatto del lavoro su di esse per renderle migliori rispetto alle versioni precedenti. Ma cose come la gestione della memoria rimangono quasi identiche tra le versioni. Spesso vengono apportate alcune modifiche poiché il nuovo hardware evidenzia problemi che prima non erano evidenti nei test. Ma il codice principale rimane lo stesso in un gruppo di prodotti.
BeowulfNode42

53

Microsoft lo autorizza in questo modo. Probabilmente vogliono che tu vada a pagare per un prodotto Windows Server con licenza per l'esecuzione con maggiori risorse. È lo stesso con altri prodotti come SQL Server. In SQL Server Express sono state poste delle limitazioni in modo tale che se sono necessarie più risorse, è necessario acquistare il prodotto che lo consente.


6
Lui, Windows Server è disponibile gratuitamente per gli studenti ( dreamspark ), quindi per noi è più possibile ottenerlo che acquistare una copia di Windows ... (nessuna affiliazione)
gparyani

2
questo è uno dei motivi per cui Windows XP a 32 bit e superiori possono supportare PAE ma MS limita il limite a 4 GB di RAM
phuclv,

3
@MattH il limite a 3 GB è perché il Gig superiore è mappato sulla memoria alle periferiche
maniaco del cricchetto

2
@MattH Questo è un malinteso comune. Ad esempio, dai un'occhiata ai requisiti di sistema ufficiali di Windows Server 2008 : "Massimo ( sistemi a 32 bit ): 4 GB (standard) o 64 GB (Enterprise e Datacenter)." In questo caso, 4 GB sono una limitazione della licenza e 64 GB è il limite di estensione dell'indirizzo fisico (supponendo che il chipset supporti la rimappatura).
and31415

3
Il motivo per cui il consumatore a 32 bit di Windows rifiuta di utilizzare più di 4 GB di spazio degli indirizzi è che ci sono troppi driver legacy a 32 bit che non sono a conoscenza di PAE e causerebbero BSOD se usati con esso. Sarebbe un incubo di supporto se MS lo abilitasse.
Andrew Medico
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.