Si mon système d'exploitation est 64 bits, mes applications 32 bits peuvent-elles utiliser de la mémoire 64 bits (> 3,5 Go) ?
Réponses
Trop de publicités?Si l'application est compatible avec AWE, elle peut utiliser un espace d'adressage supérieur à 4 Go, mais de manière moins efficace qu'une application 64 bits. Il est même possible pour les processus 32 bits sous les variantes 32 bits de Windows d'accéder à plus que l'espace d'adressage 32 bits ne le permet, si le PAE est activé et que le processus est capable de l'utiliser.
Un processus individuel de 32 bits <sup>(qui n'est pas conscient de l'existence d'AWE) </sup> est généralement limité à 3 Gb (le premier Gb de son espace d'adressage virtuel étant réservé aux actions liées au noyau). mais Si vous exécutez plusieurs processus, ils pourront utiliser plus de ressources. au total <sup>(chacun peut utiliser jusqu'à 3 Gb, si la mémoire totale le permet) </sup> car leurs espaces d'adresses virtuelles sont no partagée.
La limite 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. <sup>(plusieurs threads dans un processus partagent les ressources du processus et donc un espace d'adressage virtuel unique de 3 Gb) </sup> comme c'est plus souvent le cas sous Windows <sup>(sous Windows, le démarrage d'un nouveau processus est assez coûteux et les threads sont donc préférables ; sous la plupart des environnements Unix, le démarrage d'un nouveau processus n'est pas beaucoup plus gourmand en ressources que le démarrage d'un nouveau thread). </sup> . Cela n'est pas très utile pour une machine qui n'exécute que SQL Server, par exemple, car il n'y aura qu'un seul processus et la limite de 3 Go sera atteinte. <sup>(certaines éditions peuvent être configurées pour être compatibles avec AWE, mais pas toutes, et cette fonctionnalité devrait être supprimée dans la prochaine version majeure). </sup> .
Outre le fait que les processus 32 bits peuvent utiliser plus de 3 Gb au total, le système d'exploitation pourra utiliser la mémoire inutilisée pour la mise en cache du disque, de sorte qu'elle ne sera pas gaspillée, à condition que les processus n'ouvrent pas les fichiers de manière à indiquer au système d'exploitation qu'il ne doit pas s'en préoccuper.
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.
En quelque sorte, selon ce que vous voulez dire.
En supposant que Windows...
Si le système d'exploitation est de type 64 bits, un processus 32 bits dispose par défaut de 2 Go d'espace d'adressage virtuel à l'adresse de l'utilisateur. Si l'en-tête PE du fichier .exe est marqué du drapeau IMAGE_FILE_LARGE_ADDRESS_AWARE, le processus obtient alors 4 Go d'espace d'adressage virtuel accessible à l'utilisateur. Dans les deux cas, l'espace d'adressage virtuel du noyau est le même que celui des processus 64 bits, puisqu'il est partagé par tous les processus. Il convient également de noter que les processus 64 bits qui n'activent pas l'indicateur IMAGE_FILE_LARGE_ADDRESS_AWARE n'ont accès qu'à 2 Go d'espace d'adressage virtuel utilisateur.
Les choses que vous entendez à propos des drapeaux d'amorçage spéciaux, des commutateurs 3 GB, /3GB ou /userva concernent tous les systèmes d'exploitation 32 bits et ne s'appliquent pas à Windows 64 bits.
Tout cela est expliqué en détail sur le site de Microsoft, le Limites de mémoire pour les versions Windows page.
La réponse de @David Spillett aborde également un autre point : Plusieurs processus, tous limités à 2 Go d'espace utilisateur, peuvent encore utiliser des quantités significatives de RAM si elles sont disponibles, tout comme le cache de fichiers.
Un processus 32 bits sur un système d'exploitation 32 bits dispose d'un espace d'adressage de 4 Go, dont 2 Go sont réservés par le système d'exploitation et 2 Go disponibles pour le processus.
Il existe un commutateur qui peut être spécifié au système d'exploitation (/3GB) qui modifie la quantité réservée au système d'exploitation à seulement 1GB et permet au processus de disposer de 3GB, MAIS, seulement si le processus se déclare comme étant conscient des grandes adresses dans les drapeaux de l'exécutable.
Sur un système d'exploitation 64 bits, un processus 32 bits disposera de 4 Go s'il est conscient des grandes adresses, et de 2 Go dans le cas contraire.
Tout ceci s'applique aux processus qui ne sont pas connus d'AWE. Si le processus est capable d'utiliser AWE, alors, comme d'autres l'ont dit, il peut utiliser un grand espace d'adressage, mais moins efficacement qu'un processus 64 bits.
Le PAE permet à un système d'exploitation 32 bits d'utiliser plus de 4 Go de mémoire vive, mais il pose des problèmes de compatibilité et a été désactivé dans XP par l'un des services packs, de sorte qu'il n'est disponible que sur les versions serveur du système d'exploitation.