Utilisation de la mémoire d'application 32 bits dans un système d'exploitation 64 bits.


13

Si mon système d'exploitation est 64 bits, mes applications 32 bits peuvent-elles utiliser une mémoire 64 bits (> 3,5 Go)?

Réponses:


6

Si l'application est consciente de l'AWE, elle peut utiliser un espace d'adressage au-delà de 4 Go, mais moins efficacement qu'une application 64 bits. Il est même possible pour les processus 32 bits sous des variantes Windows 32 bits d'accéder à plus que l'espace d'adressage 32 bits ne le permettrait, si PAE est activé et que le processus est capable de l'utiliser.

Un processus 32 bits individuel (qui n'est pas compatible avec AWE) est généralement limité à 3 Gb (le premier Go de son espace d'adressage virtuel étant réservé aux actions liées au noyau), mais si vous exécutez plusieurs processus, ils pourront en utiliser davantage dans total (chacun peut utiliser jusqu'à 3 Gb, la mémoire totale le permet) car leurs espaces d'adressage virtuels ne sont pas partagés.

La limite étant par processus est plus utile dans un environnement de type Unix où les services ont tendance à être basés sur les processus plutôt que sur les threads (plusieurs threads dans un processus partagent les ressources des processus et partagent donc un seul espace d'adressage virtuel de 3 Gb) comme c'est plus courant sous Windows (le démarrage d'un nouveau processus dans Windows étant assez coûteux, les threads sont préférés, dans la plupart des environnements Unix, le démarrage d'un nouveau processus ne consomme pas beaucoup plus de ressources que le démarrage d'un nouveau thread) . Il n'est pas très utile pour une machine qui exécute uniquement SQL Server, par exemple, car il ne s'agira que d'un seul processus et atteindra donc la limite de 3 Gb (certaines éditions peuvent être configurées pour être compatibles AWE mais pas toutes, et la devrait être supprimée dans la prochaine version majeure) .

En plus des processus 32 bits pouvant utiliser plus de 3 Go au total, le système d'exploitation pourra utiliser toute la mémoire inutilisée pour la mise en cache du disque, de sorte qu'il ne sera pas gaspillé, en supposant que les processus n'ouvrent pas les fichiers de cette manière pour dire au système d'exploitation de ne pas prendre la peine de le faire.


Le processus 32 bits avec l'ensemble IMAGE_FILE_LARGE_ADDRESS_AWARE a une limite de 4 Go, pas 3. msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx
Mark Sowul

5

Si l'application utilise AWE , alors oui (bien que cela ne soit pas limité aux systèmes d'exploitation 64 bits). Sans cela, le processus est toujours limité à un espace d'adressage de 4 Go.


-1, Bien que cela soit vrai, je pense que la réponse partielle est trompeuse car aucun processus 32 bits (non AWE) n'aura jamais 4 Go de RAM à sa disposition.
pipTheGeek

@pipTheGeek Erroneous: processus 32 bits avec IMAGE_FILE_LARGE_ADDRESS_AWARE set = 4 Go disponibles. msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx
Mark Sowul

@Mark - J'avais oublié ça, et j'ai corrigé ma réponse ci-dessous. Je pense cependant que cette réponse est incomplète.
pipTheGeek

3

Sorta, selon ce que tu veux dire.

En supposant que Windows ...

Si le système d'exploitation est 64 bits, un processus 32 bits obtient par défaut 2 Go d'espace d'adressage virtuel d'adresse utilisateur. Si l'en-tête PE du fichier .exe est marqué avec l'indicateur IMAGE_FILE_LARGE_ADDRESS_AWARE, le processus obtiendra alors 4 Go d'espace d'adressage virtuel adressable par l'utilisateur. Dans les deux cas, l'espace d'adressage virtuel du noyau est le même que les processus 64 bits, car il est partagé entre tous les processus. Notez également que les processus 64 bits qui ne définissent pas l'indicateur IMAGE_FILE_LARGE_ADDRESS_AWARE n'ont également accès qu'à 2 Go d'espace d'adressage virtuel utilisateur.

Les informations que vous entendez sur les indicateurs de démarrage spéciaux, les commutateurs 3 Go, / 3 Go ou / userva concernent tous les systèmes d'exploitation 32 bits et ne s'appliquent pas à Windows 64 bits.

Tout cela est passé en détails atroces sur la page des limites de mémoire de Microsoft pour les versions de Windows .

La réponse de @David Spillett touche également un autre point: plusieurs processus, tous limités à 2 Go d'espace utilisateur, peuvent toujours utiliser des quantités importantes de RAM si disponible, tout comme le cache de fichiers.


0

Un processus 32 bits sur un système d'exploitation 32 bits a un espace d'adressage de 4 Go, dont 2 Go sont réservés par le système d'exploitation, 2 Go disponibles pour le processus.
Il existe un commutateur qui peut être spécifié sur le système d'exploitation (/ 3 Go) qui modifie la quantité réservée pour le système d'exploitation à seulement 1 Go et permet au processus d'avoir 3 Go, MAIS, uniquement si le processus se déclare lui-même en tant que grande adresse consciente dans les indicateurs de l'exécutable.

Sur un système d'exploitation 64 bits, un processus 32 bits obtiendra 4 Go s'il est compatible avec les grandes adresses, 2 Go sinon.

Tout cela est destiné aux processus non compatibles AWE. Si le processus est capable d'utiliser AWE, comme d'autres l'ont dit, il peut utiliser un grand espace d'adressage, mais moins efficacement qu'un processus 64 bits.

PAE permet à un système d'exploitation 32 bits d'utiliser plus de 4 Go de RAM, cependant, il présente des problèmes de compatibilité et a été désactivé dans XP par l'un des Service Packs, il n'est donc disponible que sur les versions de système d'exploitation du serveur.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.