Vue grand-angle de programmeurs informatiques utilisant un PC au bureau

Qu’est-ce que la mémoire virtuelle ?

Mémoire virtuelle : définition

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.

Comment fonctionne la mémoire virtuelle ?

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.

IBM Power

Modernisez et automatisez avec IBM Power

Joe Cropper, IBM Master Inventor, STSM, IBM Power Hybrid Cloud Platform, vous explique comment IBM Power peut vous aider à moderniser vos applications.

Qu’est-ce que la logique de page ?

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.

Comprendre le thrashing et les défauts de page

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 :

  • Défaut de page mineur : des défauts de page mineurs (ou « légers ») indiquent qu’une page en particulier se trouve dans la mémoire physique mais n’a pas encore été mappée dans la table des pages ou dans la mémoire partagée de ce processus.
  • Défaut de page majeur : un défaut de page devient majeur lorsqu’une page souhaitée est introuvable dans la RAM, ce qui signifie que la page doit être chargée à partir d’un disque, allongeant ainsi le temps de chargement.
  • Défaut de page invalide : l’erreur de page la plus grave tente de bloquer les opérations qui cherchent à accéder à la mémoire illégale. L’action qui en résulte, un défaut de segmentation, provoque généralement l’arrêt du programme.

Méthodes de pagination à la demande

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 : 

  • Certains systèmes utilisent une approche LRU (Least Recently Used). Cet algorithme d’expulsion du cache revient à dire « utilisez-le sous peine de le perdre ». L’approche LRU permet d’optimiser l’utilisation de la mémoire en nettoyant les caches en fonction de la durée pendant laquelle ses éléments sont restés inutilisés. Si le cache atteint sa capacité maximale, l’élément qui y est resté le plus longtemps sans être consulté est supprimé de ce cache. 
  • L’approche FIFO (First-in First-out) concerne la page la plus ancienne chargée le plus tôt de manière séquentielle. Si le cache est plein, cette page sera la première à être supprimée.
  • L’approche Second Chance remet en question l’approche FIFO, en vérifiant derrière elle pour s’assurer que la page sur le point d’être éjectée n’a pas été utilisée récemment.
  • Comme son mot l’indique, l’approche Optimal désigne une situation idéale dans laquelle un algorithme (très talentueux) extrapole la page qui a le moins de chances d’être utilisée à l’avenir et la marque pour élimination ultérieure. Du fait de la complexité des prévisions requises par l’approche Optimal, elle est souvent considérée comme plus utile pour les discussions théoriques et la planification que pour la mise en œuvre concrète.
Phill Powell

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Solutions connexes
IBM Storage Fusion

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.

Découvrir IBM Storage Fusion
Solutions de virtualisation IBM

Optimisez et faites évoluer les charges de travail dans les environnements virtuels et physiques grâce à une virtualisation efficace et flexible.

Découvrir les solutions de virtualisation IBM
Services d'infrastructure IBM

Une expertise technique complète pour vos serveurs et stockage IBM Systems.

Découvrir les services d’infrastructure IBM
Passez à l’étape suivante

Optimisez votre infrastructure grâce à des services de données unifiés et à la virtualisation, et profitez de charges de travail flexibles et performantes dans des environnements hybrides.

  1. Découvrir IBM Storage Fusion
  2. Découvrir les solutions de virtualisation IBM