Maison  >  Article  >  La mémoire virtuelle fait-elle partie de la mémoire de l’ordinateur ?

La mémoire virtuelle fait-elle partie de la mémoire de l’ordinateur ?

青灯夜游
青灯夜游original
2020-08-19 15:19:146853parcourir

La mémoire virtuelle est une partie de la mémoire physique de l'ordinateur. La mémoire virtuelle est une technologie de gestion de la mémoire du système informatique. Elle est généralement divisée en plusieurs fragments de mémoire physique, et certains sont temporairement stockés sur un disque externe pour l'échange de données en cas de besoin.

La mémoire virtuelle fait-elle partie de la mémoire de l’ordinateur ?

Le système d'exploitation a les concepts de mémoire virtuelle et de mémoire physique. Il y a longtemps, alors qu'il n'existait pas de concept de mémoire virtuelle, les programmes utilisaient des adresses physiques pour l'adressage. La plage qu'un programme peut adresser est limitée, en fonction du nombre de lignes d'adresse du CPU. Par exemple, sur une plate-forme 32 bits, la plage d'adressage est de 2 ^ 32, ce qui correspond à la 4G. Et cela est corrigé. S'il n'y a pas de mémoire virtuelle et que 4 Go de mémoire physique sont attribués à chaque démarrage d'un processus, de nombreux problèmes peuvent survenir :

  • Parce que ma mémoire physique est limitée Oui, lorsqu'il y a plusieurs processus à exécuter, 4 Go de mémoire doivent être alloués. Évidemment, si votre mémoire est plus petite, elle sera allouée rapidement, donc les processus qui n'ont pas reçu de ressources ne peuvent qu'attendre. Lorsqu'un processus termine son exécution, le processus en attente est chargé en mémoire. Cette opération fréquente de chargement de mémoire est très inefficace

  • Étant donné que les instructions accèdent directement à la mémoire physique, alors mon processus peut modifier les données d'autres processus, et même modifier les données dans l'adresse du noyau l'espace est quelque chose que nous ne voulons pas voir

  • Comme la mémoire est allouée de manière aléatoire, l'adresse à laquelle le programme s'exécute est également incorrecte.

Ainsi, en réponse aux différents problèmes qui vont se poser ci-dessus, la mémoire virtuelle est apparue.

Lorsqu'un processus est en cours d'exécution, il obtiendra 4 Go de mémoire virtuelle. Vous pouvez penser à cette mémoire virtuelle, chaque processus pense disposer de 4 Go d'espace. Mais en fait, la mémoire physique correspondant à la mémoire virtuelle ne peut correspondre qu'à un petit peu de mémoire physique. , La quantité de mémoire utilisée correspondra à la quantité de mémoire physique utilisée.

La mémoire virtuelle 4G obtenue par le processus est un espace d'adressage continu (ce n'est que ce que pense le processus), mais en fait, elle est généralement divisée en plusieurs fragments de mémoire physique, et certains sont stockés sur des disques externes Sur la mémoire, les données sont échangées en cas de besoin.

Lorsqu'un processus commence à accéder à une adresse, il peut passer par le processus suivant

  • Chaque fois que je souhaite accéder à une adresse dans l'espace d'adressage, je dois traduire l'adresse Tous les processus partagent l'intégralité de cette mémoire physique pour l'adresse de mémoire physique réelle

  • Chaque processus mappe uniquement l'espace d'adressage virtuel dont il a actuellement besoin à la mémoire physique

  • <.>
  • Le processus doit savoir quelles données de l'espace d'adressage se trouvent dans la mémoire physique, lesquelles ne le sont pas (cette partie est peut-être stockée sur le disque), et où elles se trouvent dans la mémoire physique, qui doit être enregistrée. à travers la table des pages

  • Chaque entrée dans la table des pages est divisée en deux parties. La première partie enregistre si la page est dans la mémoire physique et la deuxième partie enregistre l'adresse du physique. page mémoire (si c'est le cas)

  • Lorsqu'un processus accède à une adresse virtuelle, il examinera d'abord la table des pages s'il s'avère que les données correspondantes ne sont pas dans la mémoire physique. , une exception de défaut de page se produira

  • Dans le processus de traitement de l'exception de page manquante, le système d'exploitation bloque immédiatement le processus et remplace la page correspondante du disque dur dans la mémoire, puis prépare le processus Si la mémoire est pleine et qu'il n'y a pas d'espace libre, recherchez une autre couverture de page, quant à la page spécifiquement couverte, cela dépend de la façon dont l'algorithme de remplacement de page du système d'exploitation est conçu.

Concernant la connexion entre la mémoire virtuelle et la mémoire physique, l'image suivante peut nous aider à consolider.

La mémoire virtuelle fait-elle partie de la mémoire de l’ordinateur ?

La table des pages fonctionne comme indiqué ci-dessous

La mémoire virtuelle fait-elle partie de la mémoire de l’ordinateur ?

  • Notre CPU veut accéder au virtuel adresse Pour la page virtuelle (VP3) où elle se trouve, selon la table des pages, trouver la valeur de la troisième entrée dans la table des pages et déterminer le bit valide. Si le bit valide est 1, le cache DRMA atteint. Selon le numéro de page physique, le contenu de la page physique est trouvé et renvoyé.

  • Si le bit valide est 0, l'exception de défaut de page de paramètre se produit et le gestionnaire d'exception de défaut de page du noyau est appelé. Le noyau sélectionne une page comme page écrasée via l'algorithme de remplacement de page et actualise le contenu de la page dans l'espace disque. Mettez ensuite en cache le fichier de disque mappé VP3 sur la page physique. Puis dans la troisième entrée de la table des pages, le bit valide devient 1, et la deuxième partie stocke le contenu pouvant correspondre à l'adresse de la page mémoire physique.

  • Une fois l'exception de défaut de page traitée, revenez à l'instruction avant l'interruption et réexécutez-la. À ce moment, le cache frappe et exécute 1.

  • Mappez le contenu trouvé dans le cache de notification. Le processeur obtient la valeur du cache de notification et se termine.

Résumons le fonctionnement de la mémoire virtuelle

Lorsque chaque processus est créé, le noyau allouera 4 Go de mémoire virtuelle au processus. Lorsque le processus n'a pas démarré, il ne s'agit que d'une disposition de la mémoire. En fait, les données et le code du programme (tels que le segment .text.data) à l'emplacement correspondant dans la mémoire virtuelle ne sont pas immédiatement copiés dans la mémoire physique. Il s'agit simplement d'un mappage entre la mémoire virtuelle et le fichier disque (appelé mémoire). cartographie). À l'heure actuelle, les données et le code sont toujours sur le disque. Lorsque le programme correspondant est exécuté, le processus recherche la table des pages et constate que l'adresse dans la table des pages n'est pas stockée dans la mémoire physique, mais sur le disque, donc une exception d'erreur de page se produit, donc les données sur le disque sont copiées. à la mémoire physique.

De plus, lorsque le processus est en cours d'exécution, lorsque la mémoire est allouée dynamiquement via malloc, la mémoire virtuelle est uniquement allouée, c'est-à-dire que l'entrée de la table des pages correspondant à cette mémoire virtuelle est définie en conséquence lorsque le processus y accède réellement. this Une exception de défaut de page est déclenchée lorsque les données sont récupérées.

On peut considérer que l'espace virtuel est mappé à l'espace disque (en fait, il est également mappé à l'espace disque selon les besoins, via mmap, qui est utilisé pour établir la relation de mappage entre l'espace virtuel et l'espace disque)

Avantages de l'utilisation du mécanisme de mémoire virtuelle

  • Étant donné que l'espace mémoire de chaque processus est cohérent et fixe (4G sur les plateformes 32 bits) , Par conséquent, lors de la liaison d'un fichier exécutable, l'éditeur de liens peut définir l'adresse mémoire sans se soucier de l'adresse mémoire réelle finale des données. Ceci est laissé au noyau pour compléter la relation de mappage

  • Quand différent Lorsqu'un processus utilise le même morceau de code, comme le code d'un fichier de bibliothèque, une seule copie de ce code peut être stockée dans la mémoire physique. Différents processus n'ont besoin que d'y mapper leur propre mémoire virtuelle, ce qui peut le faire. économiser de la mémoire physique

  • Lorsque le programme doit allouer de l'espace continu, il lui suffit d'allouer de l'espace continu dans la mémoire virtuelle et n'a pas besoin de mémoire physique continue. fragments de mémoire intermittents. De cette façon, nous pouvons utiliser efficacement notre mémoire physique

Pour plus de connaissances connexes, veuillez visiter :

Site Web PHP chinois !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn