La mémoire virtuelle est une technique de gestion de la mémoire qui permet à un ordinateur d'exécuter des programmes et d'accéder à des données supérieures à la quantité de mémoire physique disponible sur le système. Il fonctionne en créant un espace d'adressage virtuel pour chaque processus, qui constitue une plage contiguë d'adresses que le processus peut utiliser. Cet espace d'adressage virtuel est ensuite mappé sur la mémoire physique du système, de sorte que lorsqu'un processus accède à une adresse virtuelle, l'unité de gestion de mémoire (MMU) de la CPU traduit l'adresse virtuelle en adresse physique.
La mémoire virtuelle est rendue possible grâce à l'utilisation d'un mécanisme de pagination. Les pages sont des blocs de mémoire de taille fixe, généralement de 4 kilo-octets (Ko) ou plus, et chaque adresse virtuelle est divisée en un numéro de page et un décalage dans la page. Lorsqu'un processus accède à une adresse virtuelle, la MMU vérifie si la page contenant cette adresse se trouve dans la mémoire physique. Si la page est en mémoire, la MMU traduit l'adresse virtuelle en adresse physique et l'accès est terminé.
Si la page n'est pas en mémoire, la MMU génère une exception de défaut de page. Le système d'exploitation (OS) gère ensuite le défaut de page en sélectionnant une page de la mémoire physique à expulser et en la remplaçant par la page nécessaire du disque. Ce processus est appelé remplacement de page. Le système d'exploitation utilise divers algorithmes pour déterminer les pages à expulser, et ces algorithmes sont conçus pour minimiser le nombre de défauts de page et ainsi améliorer les performances du système.
La mémoire virtuelle est un élément essentiel des systèmes d'exploitation modernes et permet aux ordinateurs d'exécuter des programmes bien plus volumineux que la quantité de mémoire physique disponible. Il assure également une isolation entre les processus, de sorte que chaque processus dispose de son propre espace d'adressage virtuel privé et ne puisse pas accéder à la mémoire des autres processus.
|