La mémoire virtuelle, une technique de gestion de la mémoire, permet à un système d’exploitation (OS) surchargé de créer une forme de mémoire synthétique qui lui permet de fonctionner au-delà de ses limites de mémoire.
Fondamentalement, lorsque trop de programmes informatiques épuisent la mémoire, la mémoire virtuelle permet au système d’exploitation de réutiliser la mémoire vive (RAM) pour une utilisation sur le disque dur.
Une analogie financière simple décrit parfaitement la situation : voyez la mémoire physique de votre ordinateur comme l’argent sur votre compte courant personnel. Tout va bien et tout fonctionne bien jusqu’à épuisement de vos fonds. Lorsque vous n’avez plus rien, votre banque (qui offre une protection contre les découverts sur les comptes courants) émet un découvert (mémoire virtuelle) qui couvre temporairement les dépenses du compte.
Un tel découvert comporte des limites évidentes. Premièrement, un plafond financier contrôle la taille des dépenses que la banque prendra en charge. Deuxièmement, un délai détermine la durée pendant laquelle votre institution financière permettra à la situation de continuer sans afflux de capital d’urgence dans votre compte.
La mémoire virtuelle est un composant essentiel des systèmes informatiques qui permet un fonctionnement général plus fluide, mais il est important de noter que ce n’est pas une solution permanente durable. Elle est destinée à fournir une quantité de mémoire d’urgence. Il s’agit plutôt d’un correctif qui permet de faire le travail, mais seulement de façon temporaire.
La mémoire virtuelle est une création moderne de l’informatique ; au fond, elle met simplement à jour l’ancien concept d’« emprunter à Pierre pour payer Paul », selon lequel les ressources sont transférées d’une source à l’autre.
Restez au fait des tendances les plus étonnantes du secteur dans le domaine de l’IA, de l’automatisation, des données et bien d’autres avec la newsletter Think. Consultez la Déclaration de confidentialité d’IBM.
Une unité centrale de traitement (CPU) est le principal composant fonctionnel d’un ordinateur, et elle utilise différentes formes de mémoire. La RAM est une forme d’utilisation de la mémoire plus rapide et accessible, mais sa taille n’est pas infinie. Le CPU, quant à lui, offre un grand espace de stockage, mais avec des temps d’accès plus lents.
La vraie mémoire est installée sur le CPU. La mémoire réelle fait référence à la mémoire vive où les données sont temporairement conservées pour une utilisation active et immédiate. (Les programmeurs désignent également la mémoire réelle sous le nom de mémoire physique ou mémoire principale.) En revanche, la mémoire secondaire est considérée comme non volatile, ce qui signifie que ces dispositifs de stockage conservent leurs capacités de stockage même lorsque la machine est éteinte et déconnectée de sa source d’alimentation. Elle diffère donc de la RAM, tout comme plusieurs autres variables de performance.
Si les deux types étaient reconstitués en automobiles, la RAM serait comme une petite voiture de sport tape-à-l’œil : rapide, coûteuse et avec à peine assez de place pour un conducteur et un passager (petite capacité). La mémoire secondaire est plus lente et moins chère, un peu comme un monospace économique, avec une capacité bien supérieure à celle de la mémoire principale.
Le disque dur, également appelé disque dur HDD, fonctionne comme une unité de stockage et un lecteur combinés, tandis que le disque dur lui-même est le plateau physique du disque dur où les données magnétiques sont encodées.
Dans la plupart des cas, l’utilisation du disque dur a été remplacée par un disque SSD (solid state drive). Le SSD remplit les mêmes fonctions, mais utilise de la mémoire flash sous forme de puces mémoire non volatiles qui ne nécessitent pas l’utilisation de pièces mobiles. Les SSD soutiennent la comparaison avec les HDD grâce à leur vitesse robuste, leur profil physique plus fin et leur consommation d’énergie réduite.
La mémoire virtuelle fonctionne en convertissant temporairement la RAM qui a été utilisée précédemment, mais qui est depuis restée inactive et inutilisée pendant un certain temps. Le système d’exploitation extrait les données de cette mémoire vive à peine utilisée et les place dans un fichier d’échange (ou fichier de page) sur le disque dur.
Le système d’exploitation met alors en service la RAM nouvellement nettoyée. La mémoire supplémentaire « empruntée » à cette RAM permet d’exécuter les multiples programmes de l’utilisateur de l’ordinateur sans aucun problème de performance du système ni aucun ralentissement apparent de la vitesse de fonctionnement.
En ce qui concerne les données, les pages servent de pièce de monnaie et fonctionnent comme le support d’échange de base. En termes de gestion de la mémoire virtuelle, les modules qu’elle utilise sont des pages, la plus petite unité de données. Les pages sont des blocs contigus (adjacents) d’espace d’adresse virtuel.
Les pages ont généralement un format fixe. À l’origine, les pages pesaient uniformément 4 Ko, et cette taille est traditionnellement devenue la norme du secteur. Ces derniers temps, les systèmes plus modernes utilisent une taille fixe nettement plus grande, y compris des tailles allant jusqu’à 2 Mo ou 1 Go, voire plus.
En mémoire virtuelle, la plupart des pages font 4 Ko ou 8 Ko, selon l’architecture utilisée. Microsoft Windows, Linux et macOS d’Apple sont tous conçus autour d’une taille de page de 4 Ko. La taille de la page de la mémoire virtuelle UNIX est structurée selon l’architecture matérielle particulière de chaque système, soit en 32 bits, soit en 64 bits. (Les systèmes UNIX consacrent généralement de 3 à 4 Go à chaque processus exécuté.)
Dans un système d’exploitation particulier, toutes les pages sont généralement conformes à une taille de page unique. L’exception à cette règle concerne le partitionnement dynamique, qui fournit de la mémoire de différentes tailles, en fonction de la demande. Le fait d’avoir des pages de taille identique permet aux systèmes d’exploitation de les gérer toutes de concert plus facilement.
De plus, en raison de leur taille correspondante, le système d’exploitation peut plus facilement empêcher la fragmentation externe, qui se produit lorsque des poches de mémoire inutilisée prennent racine entre les blocs de mémoire alloués. Résultat : trop peu de mémoire disponible pour être allouée en un seul bloc utile.
En utilisant les pages, un système d’exploitation peut cartographier la mémoire logique d’un processus, essentiellement en la traduisant pour une mémoire physique non contiguë sous forme de cadres de page. Les cadres de page sont des blocs de mémoire physique (RAM) qu’un système d’exploitation utilise comme type de conteneur pour les pages de mémoire. La taille du cadre de la page correspond à celle de la page elle-même (4 Ko ou plus).
Un CPU crée des adresses de mémoire virtuelles, qui servent de référence d’emplacement de mémoire et sont utilisées par les processus logiciels exécutés sur ce système d’exploitation. Les programmeurs utilisent des tables de pages pour suivre et gérer les cadres de page et pour servir de structure de données principale. Une entrée de table de pages est utilisée pour lier une adresse virtuelle à une adresse physique au sein du système d’exploitation.
Un numéro de page virtuelle (VPN) utilise les 20 premiers bits d’une adresse virtuelle pour identifier l’espace d’adressage virtuel dans l’espace de mémoire virtuelle de ce processus informatique. Le numéro de page identifie la page afin que l’unité de gestion mémoire (MMU) puisse la récupérer depuis un cadre de mémoire physique ou sur le disque.
Pendant ce temps, le reste de l’adresse sert de déplacement dans la page, qui indique l’emplacement physique exact de cette page dans le système d’exploitation, jusqu’à l’emplacement des octets individuels.
Dans un monde idéal, la RAM d’un ordinateur suffirait pour exécuter des programmes. Cependant, l’informatique moderne se prête parfaitement au multitâche et à l’exploitation simultanée de plusieurs programmes, ce qui peut facilement perturber le processus d’allocation de mémoire . Cette demande accrue sollicite régulièrement de manière excessive la mémoire disponible du système d’exploitation.
Lorsque l’espace disque disponible est complètement épuisé, la mémoire virtuelle intervient pour assurer l’exécution de vos programmes. Cependant, cette extension opérationnelle a généralement un coût important : la vitesse d’exploitation. La mémoire virtuelle fonctionne plus lentement que la RAM physique (car l’accès au stockage prend plus de temps). Ainsi, plus un système d’exploitation consomme de mémoire virtuelle, plus un opérateur risque de subir une baisse de performance.
Ce type de ralentissement des performances est appelé « thrashing ». Le thrashing désigne également un état opérationnel prolongé et dysfonctionnel dans lequel un système d’exploitation consacre la majeure partie de sa capacité de traitement à déplacer des données dans et depuis la mémoire au lieu d’exécuter du code.
L’autre type de phénomène qui se produit régulièrement est connu sous le nom de « défaut de page ». Les défauts de page se produisent lorsqu’un programme qui fonctionne essaie de récupérer une page de données qui n’est pas mappée dans sa mémoire vive physique à ce moment-là.
Cette situation entraîne une interruption matérielle, tandis que le gestionnaire des défauts de page dans le noyau du système d’exploitation est activé. Le noyau de l’OS accède aux données nécessaires à partir d’une source de stockage secondaire. Ensuite, le système d’exploitation met à jour la table de pages qui suit toutes les adresses virtuelles et les adresses physiques correspondantes avant de revenir à l’opération normale du programme.
Il existe plusieurs types de défauts de page, chacun étant classé en fonction de sa gravité perçue :
Un système d’exploitation peut rationaliser le traitement notamment grâce à la pagination à la demande. Cette technique implique que le système d’exploitation renonce à charger en amont un programme entier pour ne charger que les pages nécessaires à un moment donné.
L’avantage, c’est que le système peut ainsi exécuter plus de programmes. L’inconvénient peut être une forte incidence de défauts de page (pouvant être à l’origine de thrashing) causés par l’interruption constante des opérations du programme pour récupérer les pages depuis le stockage.
Diverses méthodologies basées sur des algorithmes sont utilisées conjointement avec la pagination de la demande. Chacun de ces algorithmes de remplacement de pages aborde le problème sous un angle différent :
Bénéficiez d’opérations plus rapides et plus résilientes en unifiant le stockage, la protection et l’orchestration pour les workloads d’IA, de VM et de conteneur.
Optimisez et faites évoluer les charges de travail dans les environnements virtuels et physiques grâce à une virtualisation efficace et flexible.
Une expertise technique complète pour vos serveurs et stockage IBM Systems.