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 ExGetLicenseTamperState
e 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 0x1B
come 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