Je sais que les cartes mères, le BIOS, etc. peuvent fixer des limites maximales pour la quantité de mémoire RAM que nous pouvons installer ou utiliser sur des machines individuelles. Cependant, qu'est-ce qui définit le maximum RAM pour Windows 7 x64?
Est-ce une limitation architecturale fondamentale du système d'exploitation? Les différentes versions de Windows 7 ont des maxima RAM différents (Édition Starter <= 2 Go, Professional <= 192 Go). Est-ce quelque chose qui peut être réellement changé?
À titre de comparaison, Ubuntu 64x autorise jusqu'à 1024 Go de RAM.
En excluant le matériel de l'équation, il s'agit principalement d'une restriction logicielle artificielle:
[La] limite est extraite du registre en appelant une fonction nommée
ZwQueryLicenseValue
, elle-même appelée à partir d'une procédure interne nomméeMxMemoryLicense
dans les fichiers de symboles publiés de Microsoft.
Bien entendu, les utilisateurs peuvent facilement modifier les données de licence stockées dans le registre, même dans un format non documenté, ce qui les inciterait à essayer, car Microsoft impose des prix très différents pour des licences différentes. Microsoft dispose donc d'un système élaboré pour vérifier que les données de licence sont conservées comme Microsoft le souhaite. Le noyau est le référentiel permettant d'indiquer si les données de licence ont été falsifiées. À cette fin, il exporte deux fonctions supplémentaires,
ExGetLicenseTamperState
etExSetLicenseTamperState
.Source: Licence de logiciel
Un séjour sans faille
ExGetLicenseTamperState
Cette fonction [non documentée] demande au noyau si les données de licence ont été falsifiées.
L'utilisation interne est dans une minuterie qui se reproduit environ toutes les heures. Si l'état d'autoprotection s'avère être
4
, Windows s'arrête. Le code de vérification de bogue estSYSTEM_LICENSE_VIOLATION
(0x9A
), avec0x1B
comme premier argument.Source: ExGetLicenseTamperState
Supposons que vous avez un ordinateur avec 32 GiB de RAM et que vous installez Windows 7 Home Premium x64 (64 bits). Dans ce cas, vous seriez limité à 16 Gio. Si vous deviez utiliser Windows Anytime Upgrade et mettre à niveau vers une édition plus onéreuse, la limite serait soudainement définie sur 192 GiB.
Toutes les éditions de Windows 7 partagent le même code source. La principale différence réside dans le nombre de fonctionnalités/limitations activées ou désactivées. Les éditions professionnelles et supérieures ne définissent aucune limite RAM qu’elles peuvent gérer, et sont simplement licenciées selon les garanties que Microsoft prend en charge.
En outre, le contrat de licence Windows 7 stipule explicitement que vous ne pouvez pas "utiliser le logiciel pour des services d’hébergement de logiciel commerciaux", laissant entendre que Microsoft supposait que si vous aviez besoin de plus de ressources RAM, quelle que soit la Vouloir est une licence de serveur. Le serveur de contrepartie de Windows 7 (c'est-à-dire Windows Server 2008 R2) peut utiliser jusqu'à 2 To de RAM dans les éditions Enterprise et Datacenter.
La technologie évoluant rapidement, ce qui était acceptable hier pourrait ne pas suffire demain. Afin de rattraper son retard, Windows 8 a relevé les limites à 128 GiB et 512 GiB pour les éditions Core et Pro/Enterprise, respectivement. Cela ne concerne cependant que les versions 64 bits: les versions 32 bits sont toujours limitées à 4 Gio. La version du serveur, Windows Server 2012, peut adresser jusqu'à 4 To de RAM dans les éditions supérieures.
Microsoft l’autorise de cette manière. Ils voudront probablement que vous payiez pour un produit Windows Server sous licence qui s'exécute avec davantage de ressources. C'est la même chose avec d'autres produits comme SQL Server. SQL Server Express est soumis à des limitations. Ainsi, si vous avez besoin de plus de ressources, vous devez acheter le produit qui le permet.