web-dev-qa-db-fra.com

Un système d'exploitation 32 bits peut-il utiliser tous les 8 Go? RAM Fichier de page + 20 Go?

Ce que je comprends des systèmes d’exploitation 32 bits, c’est que l’adresse est exprimée en 32 bits, de sorte que le système32 = 4G d’espace mémoire - Je suppose que l’unité est en octets, donc 4 Go.

Est-ce que cela signifie que si un ordinateur doté d'un système d'exploitation 32 bits (qu'il s'agisse de Windows ou d'Unix) possède un total de plus de 4 Go de RAM + fichier de page sur le disque dur, par exemple 8 Go RAM et 20GB, sa mémoire ne sera jamais "épuisée"?

Par "épuisé" je veux dire que l'augmentation de 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 la même manière, si cette machine OS 32 bits dispose de fichiers de page de 2 Go RAM et de 2 Go, augmenter la taille du fichier de page n’améliorera pas les performances. Est-ce vrai?

97
athos

Ce que je comprends du système d’exploitation 32 bits, c’est que l’adresse est exprimée en 32 bits, de sorte que le système d’exploitation peut utiliser tout au plus 2 ^ 32 = 4 Go d’espace mémoire.

Le plus que le processus peut adresse est de 4 Go. Vous êtes potentiellement déroutant mémoire avec espace adresse . Un processus peut avoir plus de mémoire que d'espace d'adressage. Ceci est parfaitement légal et assez courant dans le traitement vidéo et autres applications gourmandes en mémoire. Un processus peut se voir allouer des dizaines de Go de mémoire et l'échanger à volonté dans l'espace d'adressage. Seulement 2 Go peuvent aller dans l'espace d'adressage user à la fois.

Si vous avez un garage pour quatre voitures chez vous, vous pouvez toujours posséder cinquante voitures. Vous ne pouvez 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.

Cela signifie-t-il un système d'exploitation 32 bits, qu'il s'agisse de Windows ou d'unix, si la machine a RAM + fichier de page sur disque dur supérieur à 4 Go, par exemple 8 Go RAM et 20 Go de fichier de page , il n'y aura jamais de "mémoire épuisée"?

Absolument cela ne veut pas dire cela. Un seul processus pourrait utiliser plus de mémoire que cela! Encore une fois la quantité de mémoire utilisée par un processus est presque totalement indépendante de 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 espace d'adressage de la mémoire virtuelle , ils partagent memory .

Mon argument, au cas où ce ne soit pas clair, est que vous devriez cesser de penser à la mémoire et à l’espace d’adressage comme étant identiques, car ils ne sont pas du tout identiques.

si ce système d'exploitation 32 bits dispose de 2 Go RAM et de 2 Go, l'augmentation de la taille du fichier de page n'a pas d'incidence négative sur les performances. Est-ce vrai?

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?

145
Eric Lippert

Il est vrai que la CPU ne peut traiter qu’un maximum de 4 Go de RAM. Cependant, les CPU actuelles utilisent un MMU ( Unité de gestion de la mémoire ) pour traduire les adresses de mémoire spécifiques au processus en adresses de mémoire physique.

Ce MMU est utilisé pour toutes sortes d’astuces, 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 peut échanger des données). par ici).

Bien que les processeurs 32 bits ne prennent en charge que 4 Go de mémoire par processus, ils peuvent adresser jusqu'à 64 Go de RAM lorsque vous utilisez 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.

66
Dave Webb

S'agissant plus particulièrement des variantes Windows 32 bits, ils 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 tous vos 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 en mots 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.

Comme chaque pointeur ne fait que 32 bits de large, les pointeurs de chaque application ne peuvent traiter que 4 Go de mémoire, même si le système peut prendre en charge plus de 4 Go de RAM. Pour 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, vous pouvez avoir de nombreuses applications utilisant plus de 4 Go de RAM combinés, mais tout 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.

si ce système d'exploitation 32 bits dispose de 2 Go RAM et de 2 Go, l'augmentation de la taille du fichier de page n'a pas d'incidence négative sur les performances. Est-ce vrai?

Augmenter la taille du fichier d'échange augmentera les performances de généralement pas (sauf si votre RAM et votre fichier d'échange sont définis sur le minimum absolu ou sur une valeur si basse que votre ordinateur est 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 performance (puisque le disque dur est beaucoup plus lent que votre RAM).

15
Breakthrough

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’adresse, qui sur architecture Intel est 36 bits depuis/ Pentium Pro publié en 1995.

La fameuse limite de 4 Go vient du fait que la plupart des logiciels informatiques utilisent Modèle de mémoire plate où 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.

0
Dmitry Grigoryev