Maison >Opération et maintenance >exploitation et maintenance Linux >Quel est le mécanisme de mémoire virtuelle de Linux
1. Chaque processus possède son propre espace mémoire 4G indépendant, et l'espace mémoire de chaque processus a une structure similaire.
La gestion de la mémoire Linux adopte la gestion des pages, en utilisant des tables de pages à plusieurs niveaux. Le mécanisme de traduction d'adresses dynamique, la mémoire principale et la mémoire auxiliaire réalisent conjointement la mémoire virtuelle. Il établira son propre espace mémoire, et les données, le code, etc. de ce processus seront copiés du disque vers son propre espace de processus. Quelles données se trouvent où ? Ils sont tous enregistrés par task_struct dans la table de contrôle de processus. Il y a une liste chaînée enregistrée dans task_struct, et l'allocation d'espace mémoire dans l'enregistrement est enregistrée,
Les adresses contenant des données, les adresses dépourvues de données, celles qui sont lisibles et celles qui sont accessibles en écriture peuvent être enregistrées via cette liste chaînée. L'espace mémoire alloué par chaque processus peut être mappé avec l'espace disque correspondant.
2. Chaque programme peut voir un espace d'adressage complet et continu. Ces espaces ne sont pas directement liés à la mémoire physique, mais le système d'exploitation fournit un concept abstrait de mémoire,
. Cela permet à chaque processus de disposer d'un espace d'adressage continu et complet. Pendant le processus d'exécution du programme, la conversion de l'adresse virtuelle en adresse physique est terminée.
Nous savons également que l'espace d'adressage d'un processus est segmenté et qu'il existe des segments de données, des segments de code, des segments bbs, des tas, des piles, etc. Chaque segment a un rôle spécifique.
En même temps, l'ordinateur n'a pas beaucoup de mémoire (n processus doivent correspondre à n*4G de mémoire). Pour créer un processus, vous devez copier les fichiers programme sur le disque dans la mémoire correspondant au processus,
.Dans le cas où un programme correspond à plusieurs processus, la mémoire est gaspillée.
3. L'espace mémoire 4G de chaque processus n'est qu'un espace mémoire virtuel. Chaque fois que vous accédez à une adresse dans l'espace mémoire, vous devez traduire l'adresse en une adresse physique réelle. Tous les processus partagent la même mémoire physique,. Chaque processus mappe et stocke uniquement l'espace mémoire virtuel dont il a actuellement besoin dans la mémoire physique. Le processus doit savoir quelles adresses mémoire se trouvent dans la mémoire physique, lesquelles ne le sont pas et où elles se trouvent dans la mémoire physique,
. La table des pages doit être enregistrée. Chaque entrée de la table des pages est divisée en deux parties. La première partie enregistre si la page est dans la mémoire physique. La deuxième partie enregistre l'adresse de la mémoire physique lorsque le processus accède à une adresse virtuelle. ,
Vérifiez la table des pages. Si les données correspondantes ne sont pas dans la mémoire physique, le processus de traitement des exceptions de page manquante consiste à copier les données requises par le processus du disque vers la mémoire physique,
Si la mémoire est pleine , s'il n'y a pas d'espace libre, recherchez une page à écraser. Bien entendu, si la page écrasée a été modifiée, cette page doit être réécrite sur le disque.
4. L'espace mémoire de chaque processus est cohérent et fixe, de sorte que l'éditeur de liens peut définir l'adresse mémoire lors de la liaison du fichier d'exécution, sans avoir à se soucier de l'adresse mémoire réelle finale de ces données,Cela a une mémoire indépendante Avantages de l'espace : lorsque différents processus utilisent le même 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 de mapper leur propre mémoire virtuelle pour économiser de la mémoire que lorsque le programme doit allouer de l'espace mémoire continu
. Seul l'espace contigu doit être alloué dans l'espace mémoire virtuelle sans avoir besoin d'espace contigu dans la mémoire physique réelle, et la fragmentation peut être utilisée.
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!