Ce que je comprends des systèmes d’exploitation 32 bits, c’est que l’adresse est exprimée en 32 bits. Par conséquent, le système d’exploitation peut utiliser au maximum 2 32 = espace mémoire 4G.
Cela signifie-t-il que si une machine dotée d'un système d'exploitation 32 bits (Windows ou Unix) dispose de plus de 4 Go de RAM + fichier de page sur disque dur, par exemple 8 Go de RAM et 20 Go de fichier de page, sa mémoire ne sera jamais "épuisée "?
Par "épuisé", je veux dire que l'augmentation de la RAM ou du fichier d'échange n'aidera pas la performance; Bien sûr, il est toujours possible qu'une application continue à demander de la mémoire à l'OS mais échoue.
De même, si cette machine OS 32 bits dispose de 2 Go de RAM et de 2 Go de fichier d'échange, augmenter la taille du fichier d'échange ne sera pas préjudiciable aux performances. Est-ce vrai?
Réponses:
Le processus que le processus peut traiter est au maximum de 4 Go. Vous confondez potentiellement la mémoire avec l' espace d'adressage . Un processus peut avoir plus de mémoire que d'espace d'adressage. C'est parfaitement légal et assez courant dans le traitement vidéo et autres applications gourmandes en mémoire. Des dizaines de Go de mémoire peuvent être alloués à un processus et échangés à volonté dans l'espace d'adressage. Seuls 2 Go peuvent aller dans l' espace d'adressage utilisateur à la fois.
Si vous avez un garage pour quatre voitures chez vous, vous pouvez toujours posséder cinquante voitures. Vous ne pouvez tout simplement pas les garder tous dans votre garage. Vous devez avoir un stockage auxiliaire ailleurs pour pouvoir en stocker au moins 46; Les voitures que vous gardez dans votre garage et celles que vous gardez sur le parking dans la rue sont à vous.
Absolument cela ne veut pas dire cela. Un seul processus pourrait utiliser plus de mémoire que cela! Là encore, la quantité de mémoire utilisée par un processus n'a presque pas de lien avec la quantité d'espace d'adressage virtuel utilisée par un processus. Tout comme le nombre de voitures que vous conservez dans votre garage n'a aucun rapport avec le nombre de voitures que vous possédez.
De plus, deux processus peuvent partager des pages de mémoire non privées . Si vingt processus chargent tous la même DLL, ils partagent tous les pages de mémoire de ce code. Ils ne partagent pas d' espace d'adressage de mémoire virtuelle , ils partagent de la mémoire .
Ce que je veux dire, au cas où ce ne serait pas clair, c'est que vous devriez arrêter de penser à la mémoire et à l'espace d'adressage comme étant la même chose, car ils ne sont pas du tout la même chose.
Vous avez cinquante voitures, un garage pour quatre voitures et un parking de 100 places dans la rue. Vous augmentez la taille du parking à 200 places. Est-ce que certaines de vos voitures vont plus vite parce que vous avez maintenant 150 places de stationnement supplémentaires au lieu de 50 places de stationnement supplémentaires?
la source
Il est vrai que la CPU ne peut traiter qu’un maximum de 4 Go de RAM. Cependant, les CPU actuelles utilisent une MMU ( unité de gestion de la mémoire ) pour convertir les adresses de mémoire spécifiques au processus en adresses de mémoire physique.
Cette MMU est utilisée pour toutes sortes d’astuces différentes, de l’isolation de la mémoire (le processus A ne peut pas manipuler la mémoire du processus B) au partage de la mémoire (le processus A peut accéder à la même région de mémoire physique que le processus B et échanger des données de cette façon).
Bien que les processeurs 32 bits ne prennent en charge que 4 Go de mémoire par processus, ils peuvent gérer jusqu'à 64 Go de RAM lors de l'utilisation de l' extension d'adresse physique . Cela permet au processus A d’utiliser la première tranche de 4 Go de mémoire, alors que le processus B utilise la tranche suivante de 4 Go. Au total, plus de 4 Go de mémoire physique sont utilisés, mais la quantité totale de mémoire utilisée par un processus unique est toujours limitée à 4 Go .
PAE est pris en charge sous Linux depuis la version 2.3.23 du noyau et sur certaines versions de Windows Server 32 bits, mais pas sous Windows XP 32, Vista ou 7 32 bits.
Si votre processeur ne prend pas en charge PAE, vous serez limité à 4 Go de mémoire physique (ou moins, en fonction d'autres facteurs).
Veuillez noter que votre système d'exploitation peut toujours expulser des parties de la mémoire physique sur le disque (fichier d'échange), quel que soit le processeur prenant en charge PAE. Cela garantit que vous pouvez démarrer plusieurs processus utilisant plus de 4 Go combinés. Le seul impact de PAE est de savoir si vous pouvez conserver les 4 Go du processus B dans la mémoire physique tout en exécutant le processus A.
la source
S'agissant plus particulièrement des variantes Windows 32 bits, elles supportent plus de 4 Go de RAM depuis les variantes Windows 2003 (et vous pouvez également obtenir un hack du noyau pour Windows 7 afin de vous permettre d'utiliser toute votre mémoire RAM en 32 bits). Cependant, cela a un coût, comme vous l'avez expliqué dans la première partie de votre question.
Dans un système d'exploitation 32 bits, la taille d'un pointeur (adresse mémoire) est identique à la longueur de mot de la CPU, 32 bits, ce qui permet (comme vous l'avez mentionné) de disposer d'un espace mémoire de 2 ^ 32 = 4 Go. Windows adopte également une approche de «mémoire virtuelle» pour les applications, de sorte que chaque application dispose de son propre espace mémoire.
Étant donné que chaque pointeur ne fait que 32 bits de large, les pointeurs de chaque application ne peuvent gérer que 4 Go de mémoire, même si le système peut prendre en charge plus de 4 Go de RAM. Autant que je sache, c'est le seul inconvénient à l'utilisation de plus de 4 Go de RAM dans un système d'exploitation 32 bits. Au total, de nombreuses applications combinant plus de 4 Go de RAM peuvent être combinées, mais un processus particulier ne peut allouer / accéder que jusqu'à 4 Go.
Pour revenir à votre question, disons que vous avez un programme qui utilise 2 Go de RAM. Si vous avez 10 instances de ce programme, c'est 20 Go. Tous les 8 Go de votre RAM seront utilisés, ainsi que 12 Go supplémentaires du fichier d'échange. Donc, oui, sous les systèmes d'exploitation 32 bits, il est plus que possible d'utiliser cette mémoire.
Augmenter la taille du fichier d'échange n'améliorera généralement pas les performances (à moins que votre RAM et votre fichier d'échange soient définis sur le minimum absolu ou sur une valeur telle que votre ordinateur reste constamment bloqué). Cela empêchera toutefois votre ordinateur de manquer de mémoire (virtuelle). Chaque fois que quelque chose doit être purgé dans le fichier d'échange, vous subissez déjà un énorme problème de performances (car le disque dur est beaucoup plus lent que votre RAM).
la source
Lorsqu'un processeur est dit 32 bits, cela signifie qu'il peut fonctionner avec des nombres 32 bits en utilisant une seule instruction. Cela a peu à voir avec la largeur de son bus d’adresses, qui sur architecture Intel est à 36 bits depuis la sortie de Pentium Pro en 1995.
La fameuse limite de 4 Go vient du fait que la plupart des logiciels informatiques utilisent un modèle de mémoire plat dans lequel chaque octet de mémoire peut être adressé par un pointeur. Puisqu’un pointeur doit tenir dans un registre à utiliser et que les registres ont une largeur de 32 bits, vous êtes limité à 4 Go.
la source
mmap
augmenter la mémoire.