Combien de mémoire d'un processus 32 bits d'accès sur un système d'exploitation 64 bits?
Sur Windows, dans des circonstances normales, un processus 32 bits ne peuvent accéder de 2 go de RAM (ou 3 GO avec un commutateur spécial dans le coffre.fichier ini). Lors de l'exécution d'un processus 32 bits sur un système d'exploitation 64 bits, la quantité de mémoire disponible? Existe-il des commutateurs spéciaux ou des paramètres qui peuvent changer cette situation?
Vous devez vous connecter pour publier un commentaire.
2 GO par défaut. Si la demande est grande espace d'adressage courant (en lien avec OPTION), elle est de 4 GO (pas de 3 GO, voir http://msdn.microsoft.com/en-us/library/aa366778.aspx)
Ils sont toujours limité à 2 GO depuis de nombreuses application dépend de la peu de points à zéro.
since many application depends on the top bit of pointers to be zero
vous dire que la 32e bits du système d'adressage n'est pas considéré ou utilisé en traversant l'espace d'adressage du processus.S'agit-il?4 GO moins ce qui est en cours d'utilisation par le système si vous créez un lien avec /LARGEADDRESSAWARE.
Bien sûr, vous devez être plus prudent avec l'arithmétique des pointeurs si vous définissez ce drapeau.
Personne ne semble le toucher sur le fait que si vous avez beaucoup de différentes applications 32 bits, le sous-système wow64 pouvez mapper n'importe où dans la mémoire au-dessus de la 4G, donc sur un windows 64-bit avec suffisamment de mémoire, vous pouvez exécuter beaucoup plus d'applications 32 bits que sur un natif système 32 bits.
Un processus 32 bits est encore limitée aux mêmes contraintes dans un système d'exploitation 64 bits. Le problème est que la mémoire les pointeurs sont uniquement 32 bits de large, de sorte que le programme ne peut pas affecter les résoudre n'importe quelle adresse mémoire de plus de 32 bits.
Un seul processus 32 bits sous un OS 64 bits est limité à 2 go. Mais si il est compilé en un fichier EXE avec IMAGE_FILE_LARGE_ADDRESS_AWARE ensemble de bits, il a une limite de 4 GO, pas 2 go - voir https://msdn.microsoft.com/en-us/library/aa366778(SV.85).aspx
Dans les deux cas, le noyau de l'espace d'adressage virtuel est partagé entre tous les processus. C'est pourquoi, même si vous avez un très grand nombre de processus 32 bits, ils peuvent exécuter de mémoire, en dépit du fait que vous avez beaucoup de mémoire disponible pour votre système d'exploitation 64 bits, disons, de 16 GO - le processus 32 bits au total peuvent rapidement de la le noyau de l'espace d'adressage virtuel à leur disposition (un maximum de 2 GO).
Les choses que vous entendez à propos de démarrage spéciale de drapeaux, de 3 GO /3 go de commutateurs, ou /userva sont sur tous les systèmes d'exploitation 32 bits et ne pas appliquer sur une version 64 bits de Windows.
Voir https://msdn.microsoft.com/en-us/library/aa366778(v=vs. 85).aspx pour plus de détails.
Que sur les systèmes d'exploitation 32 bits, contrairement à la croyance, il n'y a pas de limite physique de 4 go pour les systèmes d'exploitation 32 bits. Par exemple, le Serveur 32 bits des Systèmes d'Exploitation comme Microsoft Windows Server 2008 (32 bits peut accéder à 64 GO (Windows Server 2008 éditions Enterprise et Datacenter) – par le biais de l'Extension d'Adresse Physique (PAE), qui a d'abord été introduit par Intel, le Pentium Pro, et plus tard par AMD dans l'Athlon processeur, il définit une page de tableau de la hiérarchie à trois niveaux, avec des entrées de la table de 64 bits au lieu de 32, en permettant à ces Processeurs, d'accéder directement à une adresse physique de l'espace de plus de 4 gigaoctets – donc, théoriquement, un 32-bit OS peut accéder à 2^64 octets théoriquement, ou 17,179,869,184 gigaoctets, mais le segment est limité par
4GB
. Toutefois, en raison des raisons de marketing, Microsoft ont limité au maximum la mémoire accessible sur la non-systèmes d'exploitation pour serveurs de seulement 4 GO, ou, même, 3GO de manière efficace. Ainsi, un seul processus peut accéder à plus de 4GO sur un 32-bit OS et Microsoft SQL server est un exemple.Vous avez la même restriction de base lors de l'exécution d'un processus 32 bits sous Win64. Votre application s'exécute dans un 32 mais sous-système qui fait de son mieux pour ressembler Win32, et ce sera d'inclure les restrictions de mémoire pour votre (plus bas de 2 go pour vous, haut de 2 go pour l'OS)
La limite n'est pas 2g ou 3gb ses 4 go pour 32 bits.
La raison pour laquelle les gens pensent ses 3 go, c'est que l'OS montre 3 go libre lorsqu'ils ont 4 go de ram système.
Son total de mémoire vive de 4 go. Donc si vous avez 1 go carte vidéo qui est considéré comme une partie de la mémoire ram totale perçue par le 32-bit OS.
4Gig pas 3 pas 2 got it?