GNU/Linux >> Tutoriels Linux >  >> Linux

Gestion de la mémoire Linux - Mémoire virtuelle et pagination à la demande

La gestion de la mémoire est l'une des activités les plus complexes effectuées par le noyau Linux. Il a divers concepts/problèmes qui lui sont associés.

Cet article fait partie de notre série de présentations du noyau UNIX en cours.

Dans l'article précédent de la série de noyaux, nous avons discuté de la vue d'ensemble du processus UNIX et des noyaux réentrants.

Dans cet article, nous allons essayer d'aborder la mémoire virtuelle et la pagination à la demande car ce sont quelques-uns des concepts importants liés à la gestion de la mémoire.

Mémoire virtuelle

Le concept de mémoire virtuelle est l'un des aspects les plus puissants de la gestion de la mémoire. Depuis l'ère initiale des ordinateurs, le besoin de mémoire plus que la mémoire physique existante s'est fait sentir. Au fil des ans, de nombreuses solutions ont été utilisées pour surmonter ce problème et la plus réussie d'entre elles a été le concept de mémoire virtuelle.

La mémoire virtuelle donne l'impression que votre système a plus de mémoire qu'il n'en a réellement. Cela peut sembler intéressant et peut inciter à se demander comment cela est possible. Alors, comprenons le concept.

  • Pour commencer, nous devons d'abord comprendre que la mémoire virtuelle est une couche d'adresses mémoire qui correspondent à des adresses physiques.
  • Dans le modèle de mémoire virtuelle, lorsqu'un processeur exécute une instruction de programme, il lit l'instruction dans la mémoire virtuelle et l'exécute.
  • Mais avant d'exécuter l'instruction, il convertit d'abord l'adresse de la mémoire virtuelle en adresse physique.
  • Cette conversion est effectuée sur la base du mappage des adresses virtuelles aux adresses physiques qui est effectué sur la base des informations de mappage contenues dans les tables de pages (qui sont gérées par le système d'exploitation).

La mémoire virtuelle et physique est divisée en blocs de longueur fixe appelés pages. Dans ce modèle paginé, une adresse virtuelle peut être divisée en deux parties :

  • Un décalage (12 bits les plus bas)
  • Un numéro de cadre de page virtuel (reste des bits)

Chaque fois que le processeur rencontre une adresse virtuelle, il en extrait le numéro de cadre de page virtuelle. Ensuite, il traduit ce numéro de cadre de page virtuel en un numéro de cadre de page physique et les parties décalées l'aident à accéder à l'adresse exacte dans la page physique. Cette traduction des adresses se fait à travers les tables de pages.

Théoriquement on peut considérer qu'une table de pages contient les informations suivantes :

  • Un indicateur indiquant si l'entrée est valide ou non
  • Le numéro de cadre de page physique tel que décrit par cette entrée
  • Accéder aux informations concernant la page (comme en lecture seule, en lecture-écriture, etc.)

Une table de pages est accessible via un numéro de cadre de page virtuel en l'utilisant comme décalage pour les entrées de la table de pages. Par exemple, un numéro de cadre de page virtuel de '2' pointe vers l'entrée '1' dans la table des pages (les numéros d'entrée commencent par '0' ).

Dans l'image ci-dessous, VPFN signifie numéro de cadre de page virtuelle et PFN indique le numéro de cadre de page physique.

Il peut arriver qu'un processeur accède à une entrée de table de pages de processus avec un numéro de cadre de page virtuel et trouve l'entrée invalide. Dans ce cas, il est de la responsabilité du processeur de passer le contrôle au noyau et de lui demander de résoudre le problème. Différents processeurs passent le contrôle de différentes manières, mais ce phénomène est connu sous le nom de "défaut de page". Mais si l'entrée était valide, le processeur prend le numéro de cadre de page physique, multiplie par la taille de la page pour obtenir l'adresse de base de la page physique, puis ajoute le décalage pour obtenir l'adresse physique exacte.

Alors maintenant, nous comprenons qu'à travers le concept de mémoire virtuelle, chaque processus pense qu'il a toute la gamme d'adresses virtuelles à sa disposition et donc ce concept fait apparaître le système comme s'il avait plus de mémoire physique que réellement disponible.

Demande de radiomessagerie

Dans la section précédente, nous avons appris que si le processeur accède à la table des pages de processus avec un numéro de cadre de page virtuel pour lequel aucune entrée n'était présente dans la table, alors deux cas se présentent.

  1. Soit le processus a tenté d'accéder à une adresse mémoire invalide
  2. La page physique correspondant à l'adresse virtuelle n'a pas été chargée en mémoire physique

Parmi les deux cas ci-dessus, le cas 1 est le cas où le processus essaie d'adresser la mémoire à laquelle il n'est pas autorisé. Dans ce cas, un défaut de page est généré et le noyau termine le processus.

Alors que dans le cas '2', comme déjà expliqué, la page physique correspondant à l'adresse virtuelle n'est pas encore chargée en mémoire physique. Dans ce cas également, une erreur de page est générée et le noyau essaie alors d'amener la page de mémoire requise dans la mémoire physique à partir du disque dur.

Étant donné que cette opération consistant à amener une page du disque dur dans la mémoire physique prend du temps, un changement de contexte entre les processus se produit et un autre processus est mis en exécution. Pendant ce temps, la page du processus précédent est mise en mémoire physique et les tables de pages sont mises à jour, puis ce processus est à nouveau exécuté à partir de la même instruction qui a causé le "défaut de page".

C'est ce qu'on appelle la pagination à la demande où toutes les pages mémoire correspondant à un processus ne sont pas présentes dans la mémoire physique à un moment donné. Cela évite à la mémoire physique d'être encombrée par des pages de mémoire non requises, tandis que, si nécessaire, ces pages peuvent être importées dans la mémoire physique via un défaut de page (comme expliqué ci-dessus).


Linux
  1. Comment supprimer les tampons de mémoire et le cache sous Linux

  2. Surveillance et gestion de la mémoire

  3. Gestion de la mémoire Linux - Permutation, caches et VM partagées

  4. 5 logiciels de gestion scolaire gratuits et open source pour Linux

  5. Qu'est-ce qu'une page mappée en mémoire et une page anonyme ?

Surveillance du processeur et de la mémoire de Plesk

Commande Linux vmstat - Outil pour rapporter les statistiques de la mémoire virtuelle

Créer des lecteurs de CD et de DVD virtuels à l'aide de CDEmu sous Linux

Gestion des packages Linux avec YUM et RPM

Comment configurer swappiness dans Linux Memory Management ?

Mémoire inactive Linux