Question

J'ai constaté que sur un système d'exploitation Windows 64 bits, l'espace d'adressage virtuel disponible pour l'utilisateur était de 8 terra octets. Mais si le programme sur lequel nous travaillons s'exécute en mode de compatibilité 32 bits, est-ce qu'une grande partie de l'espace utilisateur est toujours disponible? ou se comporte-t-il comme un système d’exploitation 32 bits normal et ne donne-t-il que 2 Go d’espace adresse utilisateur?

Était-ce utile?

La solution

Microsoft dispose d'un graphique indiquant les différentes limites: Limites de mémoire pour les versions Windows

Pour résumer uniquement l'espace d'adressage virtuel en mode utilisateur:

  • Windows 32 bits:
    • Processus 32 bits: 2 Go par défaut; 3 Go avec /LARGEADDRESSAWARE:YES et 4GT
  • Windows 64 bits (architecture x64):
    • Processus 32 bits: 2 Go par défaut; 4 Go avec /LARGEADDRESSAWARE:NO
    • Processus 64 bits: 8 To par défaut; 2 Go avec /3GB

4GT est un réglage de 4 gigaoctets:

  • XP: bcdedit /set increaseuserva 3072 commutateur boot.ini
  • Vista: <=>

Mark Russinovich a publié un article dans un blog expliquant ces nombreuses limites: Pousser les limites de Windows: mémoire virtuelle

Autres conseils

Votre processus ne verra qu'un espace d'adressage virtuel de 4 Go s'il s'exécute en tant que processus 32 bits. Il ne pourra rien adresser de plus haut.

Ma réponse initiale était plutôt mauvaise. Voici un lien qui explique très bien ce que JaredPar disait.

http://msdn.microsoft.com/en-us/library /ms189334.aspx

En ce qui concerne le matériel, lorsque vous utilisez le mode de compatibilité (c'est-à-dire que IA32_EFER.LMA est activé et que le bit L est vide dans le descripteur de segment de CS), les segments se comportent comme des segments de 32 bits. C'est-à-dire:

  • la base du segment est limitée à 32 bits.
  • la limite de segment est également limitée à 32 bits (en utilisant le bit G).

Cela vous limite effectivement à 4 Go d'adresses virtuelles. Je ne connais pas bien la façon dont le système d'exploitation partitionne la mémoire virtuelle dans les différents modes, mais ceci correspond à la limite matérielle. (désolé ... je suis un gars du matériel, pas un expert en système d'exploitation)

Si votre programme s'exécute en tant que processus 32 bits sur le sous-système Wow64, il verra exactement le même espace adresse que sur un système d'exploitation 32 bits réel. Sans options spéciales, un processus 32 bits disposera de 2 Go de mémoire disponible.

La seule différence est la mémoire disponible si vous utilisez le Option LargeAddressAware . Dans un processus normal à 32 bits, cela permet de disposer de 3 Go de mémoire adressable. Dans un processus Wow64, il peut afficher jusqu'à 4 Go ( Source )

Il convient de noter qu’en exécutant un processus 32 bits sur IIS 6.0+ avec un ordinateur / système d'exploitation 64 bits, un processus peut traiter jusqu'à 4 Go de mémoire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top