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


Ce que je comprends du système d’exploitation 32 bits, c’est que l’adresse est exprimée en 32 bits.32 = 4G d'espace mémoire - Je suppose que l'unité est en octets, donc 4 Go.

Est-ce que cela signifie que si une machine avec un système d'exploitation 32 bits (que ce soit Windows ou Unix) possède plus de 4 Go de RAM sur son disque dur, par exemple 8 Go de RAM et 20 Go de page, sa mémoire ne sera jamais "épuisée "?

Par "usé" Je veux dire que l'augmentation de la RAM ou du fichier de page n'aidera pas les performances; Bien sûr, il est toujours possible qu'une application continue à demander de la mémoire au système d'exploitation mais échoue.

De même, si ce système d'exploitation 32 bits dispose de 2 Go de RAM et de 2 Go de fichier de page, l'augmentation de la taille du fichier de la page ne sera d'aucune aide. Est-ce vrai?


96
2017-12-13 12:59


origine


En passant, si vous avez plus de 4 Go de RAM, et seulement un système d'exploitation 32 bits, vous pouvez créer un disque RAM. Ceci est un disque dur dans votre RAM, et vous pouvez utiliser la RAM inutilisée / non adressée pour la placer. - Simon Verbeke
Vous ne pouvez pas. Un disque virtuel doit encore être créé sur le système d'exploitation, si le système d'exploitation ne peut pas utiliser la mémoire, vous ne pouvez pas non plus créer de disque virtuel. (Sauf si votre bios peut créer un disque virtuel, ce qui est rare). - AVee
La reponse courte est oui". Bien qu’un espace d’adressage soit généralement utilisé sur un processus 32 bits, le système d’exploitation lui-même peut en utiliser plus (soit par changement de banque comme dans les années 80, soit par astuces d’extension d’adresse comme PAE d’Intel). un programme à la fois, qui peut être composé de plusieurs processus (Chrome met des onglets dans différents processus) et le système d’exploitation lui-même utilisera la mémoire pour des choses telles que la mise en cache des données à partir de disques fixes locaux. utilisé. - rbanffy


Réponses:


Ce que je comprends au sujet 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 pourrait au maximum utiliser 2 ^ 32 = 4 Go d’espace mémoire.

Le plus que le processus pouvez adresse est de 4 Go. Vous êtes potentiellement confus Mémoire avec espace d'adressage. Un processus peut avoir plus de mémoire que l'espace d'adressage. C'est parfaitement légal et assez commun dans le traitement vidéo et autres applications gourmandes en mémoire.  Un processus peut se voir attribuer des dizaines de Go de mémoire et les transférer dans l'espace d'adressage à volonté. Seulement 2 Go peuvent entrer dans le utilisateur espace d'adressage à 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 stocker au moins 46 d'entre eux; les voitures que vous gardez dans votre garage et celles que vous gardez dans le parking en bas de la rue sont à vous.

Cela signifie-t-il un système d'exploitation 32 bits, que ce soit Windows ou Unix, si la machine a plus de 4 Go de RAM sur le disque dur, par exemple 8 Go de RAM et 20 Go de fichier?

Absolument ça ne veut pas dire ça. Un seul processus pourrait utiliser plus de mémoire que cela! Encore La quantité de mémoire utilisée par un processus n'a presque aucun rapport avec la quantité d'espace d'adressage virtuel utilisée par un processus. Tout comme le nombre de voitures que vous gardez 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 tous chargent la même DLL, les processus partagent tous les pages de mémoire pour ce code. Ils ne partagent pas espace d'adressage de la mémoire virtuelle, ils partagent Mémoire.

Mon argument, au cas où ce ne serait pas clair, est que Vous devriez cesser de penser à la mémoire et à l'espace d'adressage comme une seule et même chose, car ce n'est pas la même chose du tout.

Si ce système d'exploitation 32 bits dispose de 2 Go de RAM et de 2 Go de fichier de page, l'augmentation de la taille du fichier de page ne sera d'aucune utilité. Est-ce vrai?

Vous avez une cinquantaine de voitures et un garage pour quatre voitures et un parking de 100 voitures au bout de la rue. Vous augmentez la taille du parking à 200 places. Est-ce que l'une de vos voitures accélère grâce à 150 places de stationnement supplémentaires au lieu de 50 places de stationnement supplémentaires?


145
2017-12-13 15:17



Je trouve que cette réponse ne répond pas à la question et est presque trompeuse sur certains points. - Rig
@Rig: Génial, je suis heureux d'entendre vos critiques constructives. Maintenant, votre chance de écrire une meilleure réponse et montrez-nous le type de réponse que vous jugez moins trompeuse et plus pertinente. - Eric Lippert
@BlueRaja: Je soupçonne que vous êtes déroutant mémoire physique avec Mémoire. La mémoire physique est juste une optimisation qui permet un accès plus rapide à la mémoire. Tout comme les caches de processeur sont une optimisation qui permet un accès plus rapide à la mémoire. Mémoire est à toutes fins utiles espace réservé dans le fichier de page. Si une page donnée du fichier de pages est (1) mappée sur une adresse de mémoire virtuelle ou (2) copiée du disque sur la mémoire physique, cela n'a aucune incidence sur la question de savoir si attribué ou pas. - Eric Lippert
@BlueRaja: l'article de Raymond Chen sur le sujet pourrait aider. Il montre comment allouer 4 Go hors du fichier de page; C'est mémoire que le processus possède. Le processus ne peut pas adresse le tout en même temps bien sûr, mais il peut répondre n'importe quelle page en mappant une page sur une page de VM non utilisée, en l'utilisant pendant un certain temps, puis en la supprimant. blogs.msdn.com/b/oldnewthing/archive/2004/08/10/211890.aspx - Eric Lippert
Cette réponse aurait été plus claire, Eric, si vous aviez explicitement déclaré que Windows (et les autres systèmes d’exploitation) vous permettait de "réserver" de la mémoire sans l’avoir réellement dans votre espace d’adresse virtuel, puis de répondre à la question évidente "alors le résoudre? ". Je pense que la réponse à cela est "il y a une sorte de page ID que vous utilisez pour vous y référer afin de la publier dans l'espace d'adressage virtuel, et ensuite vous pouvez l'adresser", mais je ne sais pas, et ta réponse ne dit pas :) - Timwi


Il est vrai que le CPU ne peut adresser que 4 Go de RAM maximum. Cependant, les processeurs actuels utilisent un MMU (Unité de gestion de la mémoire) pour convertir les adresses mémoire spécifiques au processus en adresses de mémoire physique.

Cette MMU est utilisée pour toutes sortes de trucs, de l'isolation de la mémoire (processus A ne peut pas manipuler la mémoire du processus B) au partage de 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).

Bien que les processeurs 32 bits ne prennent en charge que 4 Go de mémoire par processus, ils peuvent traiter jusqu'à 64 Go de RAM Extension d'adresse physique. Cela permet au processus A d'utiliser le premier 4 Go de mémoire, tandis que le processus B utilise le 4 Go suivant. Au total, plus de 4 Go de mémoire physique sont utilisés, mais la quantité totale de mémoire utilisée par un seul processus est toujours plafonnée à 4 Go.

PAE est pris en charge sous Linux depuis la version 2.3.23 du noyau et sur certaines versions 32 bits de Windows Server, mais pas sous Windows XP, Vista ou Windows Vista 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 de page), quel que soit le processeur prenant en charge PAE. Cela garantit que vous pouvez démarrer plusieurs processus qui utilisent plus de 4 Go combinés. Le seul impact de PAE est de savoir si vous pouvez conserver le 4 Gb du processus B dans la mémoire physique lors de l'exécution du processus A.


67
2017-12-13 13:02



ça veut dire que si ça ne supporte pas, alors ce que j'ai dit plus haut est correct?
Windows XP prend en charge PAE (à partir de SP2, je pense), mais ignore la RAM au-delà de 4 Go, même lorsque la machine prend en charge PAE; voir ici. Il est utilisé pour la prévention de l'exécution des données basée sur le matériel - le bit NX / XD n'est disponible que dans une entrée de table de page PAE, et non une entrée de table de page "normale". - Wyzard
Le chipset peut également constituer un facteur limitant de la quantité de mémoire pouvant être prise en charge / utilisée, quel que soit le système d'exploitation ou le hack que vous choisissez. - Moab
J'ajouterais que la raison pour laquelle les versions grand public de Windows 32 bits ne prennent pas en charge plus de 4 Go de mémoire vive était qu'un nombre important de disques durs ne fonctionnaient pas correctement avec autant de mémoire. et, à l'époque, 4 Go de RAM étaient extrêmement rares en dehors des serveurs / stations de travail ultra-haut de gamme, la plupart des entreprises qui entretenaient les pilotes n'étaient pas intéressées à dépenser de l'argent pour mettre à jour les pilotes. - Dan Neely
@DanNeely l'OS Est-ce que avoir du soutien pour la mémoire, c'est limité en raison de problèmes de licence. Bien que je reconnaisse qu'il s'agit d'un hack tiers, il ne concerne que les variantes grand public de Windows. Distributions Windows sur serveur, à partir de Windows 2000, ont pris en charge plus de 4 Go de mémoire (réf. le premier lien). - Breakthrough


S'agissant spécifiquement des variantes Windows 32 bits, ils ont pris en charge plus de 4 Go de RAM depuis les variantes Windows 2003 (et vous pouvez également obtenir une piratage du noyau pour Windows 7 pour vous permettre d'utiliser toute votre RAM en 32 bits). Cependant, cela a un coût, comme vous l'avez souligné 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 la même que celle du processeur, 32 bits, ce qui permet (comme vous l'avez mentionné) un espace mémoire de 2 ^ 32 = 4 Go. Windows prend également une approche de «mémoire virtuelle» pour les applications, de sorte que chaque application dispose de son propre espace mémoire.

Puisque chaque pointeur n’a que 32 bits de large, chaque demandeLes pointeurs ne peuvent adresser que 4 Go de mémoire, même si le système peut prendre en charge plus de 4 Go de mémoire vive. Pour autant que je sache, il s'agit de la seule mise en garde concernant l'utilisation de plus de 4 Go de RAM dans un système d'exploitation 32 bits. Au total, vous pouvez avoir plusieurs applications utilisant plus de 4 Go de RAM combinés, mais un processus particulier ne peut allouer / accéder qu'à 4 Go.


Revenons à votre question, disons que vous avez un programme qui utilise 2 Go de RAM. Si vous avez 10 instances de ce programme, cela fait 20 Go. Tous les 8 Go de votre RAM seront épuisé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 de RAM et de 2 Go de fichier de page,   la taille du fichier de la page n'aidera pas les performances. Est-ce vrai?

Augmenter la taille du fichier d'échange sera généralement pas Augmentez les performances (à moins que votre RAM et votre fichier d'échange ne soient définis au minimum absolu, ou que votre ordinateur ne soit trop faible). Cela empêchera toutefois votre ordinateur de manquer de mémoire (virtuelle). Chaque fois que quelque chose doit être purgé sur le fichier d'échange, vous prenez déjà un énorme coup de performance (puisque le disque dur est plus lent que votre RAM).


15
2017-12-13 13:18



Sur les 4 Go d'espace d'adressage que reçoit chaque processus, seuls 2 Go sont réellement disponibles pour le programme. l'autre 2 Go est réservé au noyau. le / 3 Go l'option de démarrage peut permettre à certains programmes d'utiliser plus de RAM. - Wyzard
@Breakthrough: "Augmenter la taille du fichier d'échange n'augmentera jamais les performances" Je ne pense pas que cela soit vrai. Par exemple, s'il y a plus de swap, le système d'exploitation peut échanger de manière plus agressive les données de programme inutilisées et utiliser la mémoire vive gratuite, par ex. mise en cache du disque. Dans certaines configurations, cela peut améliorer les performances. Il y a une bonne réponse sur ServerFault sur la raison pour laquelle un fichier d'échange est important, qui concerne ces problèmes: serverfault.com/questions/23621/... - sleske
Faites attention aux déclarations générales comme "L'augmentation de la taille du fichier d'échange n'augmentera jamais les performances", il est tout à fait possible qu'un fichier de page trop petit entraîne plus de dégâts sur le disque qu'un fichier de page plus volumineux! Voir les réponses et commentaires dans cette question. - Mark Booth
@sleske Bon point, je l'ai mis à jour pour être plus du genre "généralement pas". Bien que je convienne que cela peut faire une énorme différence sur un serveur, pour la plupart des gens, ce que je cherchais à faire comprendre, c’est qu’ils feraient mieux d’obtenir plus de mémoire vive (puisque comme il peut obtenir). - Breakthrough


Lorsqu'un processeur est dit 32 bits, cela signifie qu'il peut fonctionner avec des nombres de 32 bits en utilisant une seule instruction. Cela n'a rien à voir avec la largeur de son bus d'adresse, qui sur l'architecture Intel est de 36 bits depuis Pentium Pro publié en 1995.

La célèbre limitation de 4 Go provient du fait que la plupart des logiciels utilisés Modèle à mémoire plate où chaque octet de mémoire peut être adressé par un pointeur. Comme un pointeur doit tenir dans un registre pour être utilisé et que les registres ont une largeur de 32 bits, vous êtes limité à 4 Go.


0
2018-06-17 13:33



Ceci est incorrect, comme indiqué dans d'autres réponses précédentes ci-dessus. - ChrisInEdmonton
Pourriez-vous souligner un fait particulier que j'ai eu tort? - Dmitry Grigoryev
Un seul processus peut utiliser plus de 4 Go. Plus précisément, les réponses précédentes indiquent que "un processus peut avoir plus de mémoire que l'espace d'adressage". - ChrisInEdmonton
Voir par exemple blog.superuser.com/2011/04/23/... Maintenant, certainement, vous ne pouvez pas utiliser plus de 4 Go simultanément, mais un seul processus peut démapper et remapper la mémoire, donc peut utiliser plus de 4 Go en un seul processus, il y a juste un peu de comptabilité. Cet article de blog est plutôt spécifique à Windows. J'exécute des serveurs de bases de données avec> 4 Go de mémoire allouée, sur des installations Linux 32 bits. Bien sûr, ces jours-ci, vous utiliseriez Linux 64 bits. - ChrisInEdmonton
OK, mes excuses. Je n'ai pas pensé à la possibilité de mmap mémoire supplémentaire. - Dmitry Grigoryev