web-dev-qa-db-fra.com

Quelle est la différence entre "mémoire virtuelle" et "espace d'échange"?

Quelqu'un peut-il m'indiquer clairement quelle est la différence entre mémoire virtuelle et espace d'échange?

Et pourquoi dit-on que pour une machine 32 bits, l'accès maximum à la mémoire virtuelle est de 4 Go seulement?

70
algo-geeks

Il y a une excellente explantation de la mémoire virtuelle sur superutilisateur .

En termes simples, la mémoire virtuelle est une combinaison de RAM et de l'espace disque que les processus en cours peuvent utiliser.

L'espace d'échange est la partie de la mémoire virtuelle présente sur le disque dur, utilisée lorsque RAM est plein.

Quant à savoir pourquoi le processeur 32 bits est limité à 4 Go de mémoire virtuelle, il est bien adressé ici :

Par définition, un processeur 32 bits utilise 32 bits pour faire référence à l'emplacement de chaque octet de mémoire. 2 ^ 32 = 4,2 milliards, ce qui signifie qu'une adresse mémoire de 32 bits ne peut faire référence qu'à 4,2 milliards d'emplacements uniques (soit 4 Go).

105
Viral Shah

Il existe une certaine confusion en ce qui concerne le terme mémoire virtuelle et fait référence aux deux concepts très différents suivants

  1. Utilisation de pages de disque pour étendre la quantité conceptuelle de mémoire physique d’un ordinateur - Le terme correct pour cela est en réalité Paging
  2. Une abstraction utilisée par divers systèmes d'exploitation/processeurs pour créer l'illusion de chaque processus s'exécutant dans un espace d'adressage contigu distinct.

Espace d'échange, OTOH, est le nom de la partie du disque utilisée pour stocker des pages RAM supplémentaires, lorsque vous ne les utilisez pas.

Une réalisation importante à réaliser est que le premier est possible de manière transparente en raison du support matériel et du système d'exploitation de ce dernier.

Afin de mieux comprendre tout cela, vous devez considérer comment la "mémoire virtuelle" (comme dans la définition 2) est prise en charge par la CPU et le système d'exploitation.

Supposons que vous ayez un pointeur 32 bits (les points 64 bits sont similaires, mais utilisez des mécanismes légèrement différents). Une fois la "mémoire virtuelle" activée, le processeur considère que ce pointeur est constitué de trois parties.

  • Les 10 bits les plus élevés sont une entrée de répertoire page
  • Les 10 bits suivants sont un entrée de table de page
  • Les 12 derniers bits constituent le décalage de page

Maintenant, lorsque la CPU essaie d’accéder au contenu d’un pointeur, elle consulte d’abord la table Page Directory - une table composée de 1024 entrées (dans le fichier X86). architecture dont l'emplacement est désigné par le registre CR3). L'entrée de répertoire de page 10 bits est un index de cette table, qui pointe vers l'emplacement physique de la table de pages . Ceci, à son tour, est une autre table de 1024 entrées dont chacune est un pointeur dans la mémoire physique et plusieurs bits de contrôle importants. (Nous y reviendrons plus tard). Une fois qu'une page a été trouvée, les 12 derniers bits sont utilisés pour trouver une adresse dans cette page.

Il y a plusieurs plus de détails (TLB, grandes pages, PAE, sélecteurs, protection de page), mais la courte explication ci-dessus illustre bien l'essentiel.

En utilisant ce mécanisme de traduction, un système d'exploitation peut utiliser un ensemble différent de pages physiques pour chaque processus, donnant ainsi à chaque processus l'illusion de disposer de toute la mémoire pour lui-même (chaque processus obtenant son propre répertoire de pages).

En plus de cela mémoire virtuelle , le système d'exploitation peut également ajouter le concept de pagination L'un des bits de contrôle discutés précédemment permet de spécifier si une entrée est "Présent". S'il n'est pas présent, une tentative d'accès à cette entrée entraînerait une exception Page Fault . Le système d'exploitation peut capturer cette exception et agir en conséquence. Les systèmes d'exploitation prenant en charge l'échange/la pagination peuvent donc décider de charger une page à partir de l'espace de permutation , de corriger les tables de traduction, puis de relancer l'accès à la mémoire.

C’est là que les deux termes se combinent: un système d’exploitation prenant en charge la mémoire virtuelle et la pagination peuvent donner aux processus l’illusion de disposer de plus de mémoire que ce qui est réellement présent en paginant (permutant) des pages dans et hors de la zone de permutation.

En ce qui concerne votre dernière question (pourquoi dit-on que le processeur 32 bits est limité à 4 Go de mémoire virtuelle). Cela fait référence à la "mémoire virtuelle" de la définition 2 et est un résultat immédiat de la taille du pointeur. Si la CPU ne peut utiliser que des pointeurs 32 bits, vous ne disposez que de 32 bits pour exprimer des adresses différentes, cela vous donne 2 ^ 32 = 4 Go de mémoire adressable.

J'espère que cela rend les choses un peu plus claires.

58
Yonatan

À mon humble avis, il est terriblement trompeur d'utiliser le concept d'espace d'échange comme équivalent à la mémoire virtuelle. VM est un concept beaucoup plus général que l’espace de swap. Entre autres choses, VM permet aux processus de faire référence à des adresses virtuelles lors de l’exécution, qui sont traduites en adresses physiques avec prise en charge du matériel et des tables de pages. Ainsi, les processus ne concernent pas la quantité de mémoire physique dont dispose le système ni l'emplacement où l'instruction ou les données résident réellement dans la hiérarchie de la mémoire physique. VM autorise ce mappage L'élément référencé (instruction ou données) peut résider dans L1, ou L2, ou dans la RAM, ou enfin sur le disque, auquel cas il est chargé dans la mémoire principale.

L'échange d'espace est simplement un emplacement sur la mémoire secondaire où les pages sont stockées lorsqu'elles sont inactives. S'il n'y a pas assez de RAM, le système d'exploitation peut décider de permuter les pages d'un processus pour laisser la place à d'autres pages de processus. Le processeur n'exécute jamais d'instructions ni de lecture/écriture de données directement à partir de l'espace de permutation.

Notez qu'il serait possible d'avoir un espace d'échange dans un système sans machine virtuelle. En d’autres termes, les processus qui accèdent directement aux adresses physiques peuvent toujours en conserver des parties sur le disque.

12
SavorALinux

Bien que le fil soit assez ancien et qu'il ait déjà été répondu. J'aimerais quand même partager ce lien car c'est l'explication la plus simple que j'ai trouvée jusqu'à présent. Le lien ci-dessous contient des diagrammes pour une meilleure visualisation.

Différence clé: la mémoire virtuelle est une abstraction de la mémoire principale. Il étend la mémoire disponible de l'ordinateur en stockant les parties inactives du contenu RAM sur un disque. Chaque fois que le contenu est requis, il le récupère dans la RAM. Échangez de la mémoire ou de l'espace d'échange. une partie du disque dur utilisée pour la mémoire virtuelle, qui sont donc également utilisées de manière interchangeable.

La mémoire virtuelle est silencieuse différente de la mémoire physique. Les programmeurs ont un accès direct à la mémoire virtuelle plutôt qu'à la mémoire physique. La mémoire virtuelle est une abstraction de la mémoire principale. Il est utilisé pour masquer les informations de la mémoire physique réelle du système. Il étend la mémoire disponible de l'ordinateur en stockant les parties inactives du contenu de la RAM sur un disque. Lorsque le contenu est requis, il le récupère dans la RAM. La mémoire virtuelle crée l'illusion d'un espace d'adressage complet avec des adresses commençant par zéro. Il est principalement préféré pour sa fonctionnalité d'optimisation grâce à laquelle il réduit les besoins en espace. Il est composé de la mémoire disponible RAM) et de l’espace disque.

La mémoire d'échange s'appelle généralement comme espace d'échange. L'espace d'échange désigne la partie de la mémoire virtuelle réservée en tant qu'emplacement de stockage temporaire. L'espace d'échange est utilisé lorsqu'il est disponible RAM n'est pas en mesure de répondre aux besoins en mémoire système. Par exemple, dans le système de mémoire Linux, le noyau localise chaque page dans la mémoire physique ou dans l'espace d'échange. Le noyau maintient également une table dans laquelle sont conservées les informations concernant les pages remplacées et les pages stockées dans la mémoire physique. Les pages inutilisées depuis longtemps sont envoyées dans la zone d’espace de permutation. Ce processus est appelé permutation. Si la même page est requise, elle est permutée dans la mémoire physique en permutant une page différente, ce qui permet de conclure que mémoire swap et mémoire virtuelle sont interconnectées, car swap memory est utilisé pour la technique de la mémoire virtuelle.

différence-entre-mémoire-virtuelle-et-mémoire d'échange

4
ram619