Sous Windows, dans des circonstances normales, un processus 32 bits ne peut accéder qu'à 2 Go de RAM (ou 3 Go avec un commutateur spécial dans le fichier boot.ini). Lors de l'exécution d'un processus 32 bits sur un système d'exploitation 64 bits, quelle quantité de mémoire est disponible? Y a-t-il des commutateurs ou des paramètres spéciaux qui peuvent changer cela?
86
Réponses:
2 Go par défaut. Si l'application prend en charge les grands espaces d'adressage (liée à / LARGEADDRESSAWARE), elle obtient 4 Go (et non 3 Go, voir http://msdn.microsoft.com/en-us/library/aa366778.aspx )
Ils sont toujours limités à 2 Go car de nombreuses applications dépendent du bit supérieur des pointeurs pour être égal à zéro.
la source
since many application depends on the top bit of pointers to be zero
vous voulez dire que le 32ème bit du schéma d'adressage n'est pas pris en compte ou utilisé lors de la traversée de l'espace d'adressage du processus.4 Go moins ce qui est utilisé par le système si vous vous connectez avec / LARGEADDRESSAWARE.
Bien sûr, vous devriez être encore plus prudent avec l'arithmétique des pointeurs si vous définissez cet indicateur.
la source
Personne ne semble toucher au fait que si vous avez de nombreuses applications 32 bits différentes, le sous-système wow64 peut les mapper n'importe où dans la mémoire au-dessus de 4G, donc sur une fenêtre 64 bits avec une mémoire suffisante, vous pouvez exécuter beaucoup plus d'applications 32 bits que sur un système 32 bits natif.
la source
Un processus 32 bits est toujours limité aux mêmes contraintes dans un système d'exploitation 64 bits. Le problème est que les pointeurs de mémoire ne font que 32 bits de large, de sorte que le programme ne peut pas attribuer / résoudre une adresse mémoire supérieure à 32 bits.
la source
Un seul processus 32 bits sous un système d'exploitation 64 bits est limité à 2 Go. Mais s'il est compilé dans un fichier EXE avec un
IMAGE_FILE_LARGE_ADDRESS_AWARE
bit défini, il a alors une limite de 4 Go, et non de 2 Go - voir https://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspxLes choses que vous entendez à propos des indicateurs de démarrage spéciaux, 3 Go, des
/3GB
commutateurs ou/userva
concernent tous les systèmes d'exploitation 32 bits et ne s'appliquent pas sur Windows 64 bits.Voir https://msdn.microsoft.com/en-us/library/aa366778(v=vs.85).aspx pour plus de détails.
En ce qui concerne les systèmes d'exploitation 32 bits, contrairement à ce que l'on pense, il n'y a pas de limite physique de 4 Go pour les systèmes d'exploitation 32 bits. Par exemple, les systèmes d'exploitation serveur 32 bits comme Microsoft Windows Server 2008 32 bits peuvent accéder jusqu'à 64 Go(Éditions Windows Server 2008 Enterprise et Datacenter) - au moyen de l'extension d'adresse physique (PAE), qui a été introduite pour la première fois par Intel dans le Pentium Pro, puis par AMD dans le processeur Athlon - elle définit une hiérarchie de table de page à trois niveaux, avec des entrées de table de 64 bits chacune au lieu de 32, permettant à ces processeurs d'accéder directement à un espace d'adressage physique supérieur à 4 gigaoctets - donc théoriquement, un système d'exploitation 32 bits peut accéder théoriquement à 2 ^ 64 octets, ou 17.179.869.184 gigaoctets, mais le segment est limité à 4 Go. Cependant, pour des raisons marketing, Microsoft a limité la mémoire maximale accessible sur les systèmes d'exploitation non serveur à seulement 4 Go, voire 3 Go. Ainsi, un seul processus peut accéder à plus de 4 Go sur un système d'exploitation 32 bits - et le serveur Microsoft SQL en est un exemple.
Les processus 32 bits sous Windows 64 bits ne présentent aucun inconvénient par rapport aux processus 64 bits en utilisant l'espace d'adressage virtuel du noyau partagé (également appelé espace système ). Tous les processus, qu'ils soient 64 bits ou 32 bits, sous Windows 64 bits partagent le même espace système 64 bits.
Étant donné que l'espace système est partagé entre tous les processus , sous Windows 32 bits , les processus qui créent une grande quantité de descripteurs (comme les threads, les sémaphores, les fichiers, etc.) consomment de l'espace système par les objets du noyau et peuvent même manquer de mémoire si vous avez beaucoup de mémoire disponible au total. En revanche, sur Windows 64 bits , l'espace du noyau est de 64 bits et n'est pas limité à 4 Go. Tous les appels système effectués par les applications 32 bits sont convertis en appels 64 bits natifs en mode utilisateur .
la source
Vous avez la même restriction de base lors de l'exécution d'un processus 32 bits sous Win64. Votre application fonctionne dans un sous-système 32 mais qui fait de son mieux pour ressembler à Win32, et cela inclura les restrictions de mémoire pour votre processus (2 Go inférieurs pour vous, 2 Go supérieurs pour le système d'exploitation)
la source
La limite n'est pas de 2g ou 3gb, ses 4gb pour 32 bits.
La raison pour laquelle les gens pensent que son 3 Go est que le système d'exploitation affiche 3 Go de libre alors qu'ils ont vraiment 4 Go de RAM système.
Sa RAM totale de 4 Go. Donc, si vous avez une carte vidéo de 1 Go qui compte comme faisant partie de la RAM totale visualisée par le système d'exploitation 32 bits.
4Gig pas 3 pas 2 compris?
la source