Qu'est-ce qui limite les machines Windows 7 x64 à <= 192 Go de RAM?

117

Je sais que les cartes mères, le BIOS, etc. peuvent fixer des limites maximales quant à la quantité de RAM que nous pouvons installer ou utiliser sur des machines individuelles. Cependant, qu'est-ce qui définit la RAM maximale pour Windows 7 x64?

Est-ce une limitation architecturale fondamentale du système d'exploitation? Les différentes versions de Windows 7 ont des maximum de 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.

Lucas Fortini
la source
3
duplication possible du système d'exploitation 64 bits et de la RAM
cʜιᴇ007
1
Ils choisissent des limitations physiques. À la sortie de Windows 7, il n'existait aucun matériel
prenant en
5
Installez Windows 8, ici, Pro / Enterprise peut utiliser 512 Go de RAM.
magicandre1981

Réponses:

185

Réponse courte: la licence

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, qui est elle-même appelée à partir d'une procédure interne et nommée par Microsoft dans les fichiers de symboles publiés MxMemoryLicense.

Source: mémoire sous licence dans Windows Vista 32 bits

Information additionnelle

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 la licence restent 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 autres fonctions ExGetLicenseTamperStateet ExSetLicenseTamperState.

Source: Licence de logiciel

­

ExGetLicenseTamperState

Cette fonction [non documentée] demande au noyau si les données de la licence ont été falsifiées.

L'utilisation interne est dans une minuterie qui se reproduit environ toutes les heures. Si l'état de sabotage se trouve être 4, puis arrête de Windows. Le code de vérification de bogue est SYSTEM_LICENSE_VIOLATION( 0x9A), avec 0x1Bcomme premier argument.

Source: ExGetLicenseTamperState

Un exemple pratique

Disons que vous avez un ordinateur avec 32 Gio de RAM et que vous installez Windows 7 Édition Familiale Premium 64 bits (64 bits). Dans ce cas, vous seriez limité à 16 Gio. Si vous utilisiez Windows Anytime Upgrade et effectuez une mise à niveau vers une édition plus onéreuse, la limite serait soudainement définie à 192 Go.

Conclusion

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 n'imposent aucune limite de RAM et sont simplement concédées sous licence selon les garanties de Microsoft.

De plus, le contrat de licence Windows 7 stipule explicitement que vous ne pouvez pas "utiliser le logiciel pour des services d'hébergement de logiciels commerciaux", laissant entendre que Microsoft supposait que si vous aviez besoin de plus de RAM que la version la plus payante sous licence, alors vous voulez vraiment un serveur. Licence. La contrepartie serveur 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 Gio et 512 Gio 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 traiter jusqu'à 4 To de RAM dans les éditions supérieures.

Lectures complémentaires

et31415
la source
32
C’est la meilleure réponse car elle renvoie à une bonne source d’analyse.
Kevin Panko
9
Juste une légère défense: le code source peut être le même, mais ce n'est pas nécessairement le même code qui aurait été là sans le support. Par exemple, beaucoup de travail a été fait pour améliorer l'évolutivité lorsque vous avez beaucoup de processeurs (voir "verrou global du répartiteur" ici: tomshardware.com/news/microsoft-windows-server,6589.html ). Ce code est presque certainement le même dans toutes les éditions, mais les éditions supérieures de Windows prennent en charge davantage de processeurs. Mais supporter plus de CPU demandait plus de travail. Est-il juste de demander plus pour ce travail?
Mark Sowul
8
en bref: min (license_limit, physical_limit)
akira
2
Les produits @ AndonM.Coleman tels que Windows qui vendent autant de copies que les coûts de développement par licence sont insignifiants comparés à la plupart des autres coûts par licence. Je vois des articles en ligne disant que Windows 8 a vendu plus de 100 millions de licences au cours des six premiers mois. Au cours de la vie de Windows 8 / 8.1, le coût de développement par licence sera probablement inférieur au coût de production d’un emballage et de son contenu. Les nouvelles versions de Windows ne sont généralement pas écrites à partir de zéro. Windows 8 / 8.1 / 2012 sont tous TRES similaires et similaires sous le capot de Vista / 7/2008. XP /
2003/2000
5
Ne vous méprenez pas, les nouvelles versions ont fait l'objet d'un travail visant à les rendre meilleures que les anciennes. Mais des choses comme la gestion de la mémoire restent presque identiques entre les versions. Quelques ajustements sont souvent apportés alors que le nouveau matériel met en évidence des problèmes qui n'étaient pas évidents lors des tests. Mais le code principal reste le même dans un groupe de produits.
BeowulfNode42
53

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.

Dave Lucre
la source
6
Lui, Windows Server est disponible gratuitement pour les étudiants ( dreamspark ), alors pour nous, il est plus facile de l'obtenir que d'acheter une copie de Windows ... (sans affiliation)
gparyani
2
C’est l’une des raisons pour lesquelles Windows XP 32 bits et supérieur peut prendre en charge PAE alors que MS limite la limite à 4 Go de RAM
phuclv
3
@MattH la limite à 3 Go est parce que le Gig supérieur est la mémoire mappée à des périphériques
freak freak
2
@ Matth C'est une idée fausse commune. À titre d'exemple, jetez un coup d'œil à la configuration système requise pour Windows Server 2008 : "Maximum ( systèmes 32 bits ): 4 Go (standard) ou 64 Go (entreprise et centre de données)". Dans ce cas, 4 Go correspond à une restriction de licence et 64 Go à la limite d' extension d'adresse physique (en supposant que le jeu de puces prenne en charge le remappage).
and31415
3
La raison qui a poussé le consommateur Windows 32 bits à utiliser plus de 4 Go d'espace d'adressage est due au nombre trop important de pilotes 32 bits hérités qui ne connaissent pas PAE et qui provoqueraient des BSOD s'ils étaient utilisés avec celui-ci. Ce serait un cauchemar de soutien si MS permettait cela.
Andrew Medico