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.
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
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
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!