La mémoire virtuelle est une zone de l’espace de stockage de la mémoire secondaire d’un système informatique (comme un disque dur ou un lecteur à semi-conducteurs) qui agit comme si elle faisait partie de la RAM ou de la mémoire primaire du système.
En principe, les données nécessaires à l’exécution des applications sont stockées dans la RAM, où elles sont accessibles rapidement par le CPU. Mais lorsque des applications volumineuses sont exécutées, ou lorsque de nombreuses applications sont exécutées en même temps, la RAM du système peut devenir pleine.
Pour contourner ce problème, certaines données stockées dans la RAM et qui ne sont pas activement utilisées peuvent être temporairement déplacées vers la mémoire virtuelle (qui est physiquement située sur un disque dur ou un autre périphérique de stockage). Cela libère de l’espace dans la RAM, qui peut alors être utilisé pour accueillir les données auxquelles le système doit accéder de manière imminente.
En échangeant les données entre la RAM et la mémoire virtuelle lorsqu’elles ne sont pas nécessaires et en les ramenant de la mémoire virtuelle à la RAM lorsqu’elles sont nécessaires, un système peut continuer à fonctionner de manière fluide avec beaucoup moins de RAM physique qu’il n’en aurait autrement besoin.
La mémoire virtuelle permet à un système d’exécuter des applications plus importantes ou d’exécuter plus d’applications en même temps sans manquer de RAM. Plus précisément, le système peut fonctionner comme si ses ressources totales en RAM étaient égales à la quantité de RAM physique, plus la quantité de RAM virtuelle.
- Pourquoi la mémoire virtuelle est-elle nécessaire ?
- Mémoire virtuelle vs mémoire physique
- Comment fonctionne la mémoire virtuelle ?
- Comment augmenter la mémoire virtuelle dans un système
- Types de mémoire virtuelle : La pagination et la segmentation
- La pagination de la mémoire virtuelle
- Segmentation de la mémoire virtuelle
- Avantages et inconvénients de la mémoire virtuelle
- Avantages de la mémoire virtuelle
- Disadvantages of Virtual Memory
Pourquoi la mémoire virtuelle est-elle nécessaire ?
La mémoire virtuelle a été développée lorsque la RAM physique était très chère, et la RAM est toujours plus chère par gigaoctet que les supports de stockage tels que les disques durs et les lecteurs à état solide. Pour cette raison, il est beaucoup moins coûteux d’utiliser une combinaison de RAM physique et de mémoire virtuelle que d’équiper un système informatique avec plus de RAM.
Puisque l’utilisation de la mémoire virtuelle (ou l’augmentation de la mémoire virtuelle) n’a aucun coût financier supplémentaire (car elle utilise l’espace de stockage existant), elle offre un moyen pour un ordinateur d’utiliser plus de mémoire que ce qui est physiquement disponible sur le système.
Un autre moteur clé pour l’utilisation de la mémoire virtuelle est que tous les systèmes informatiques ont une limite (dictée par le matériel et les logiciels) sur la quantité de RAM physique qui peut être installée. L’utilisation de la mémoire virtuelle permet au système de continuer à fonctionner au-delà de ces limites de RAM physique.
Mémoire virtuelle vs mémoire physique
Puisque la RAM est plus chère que la mémoire virtuelle, il semblerait – toutes choses égales par ailleurs – que les ordinateurs devraient être équipés d’aussi peu de RAM et d’autant de mémoire virtuelle que possible.
Mais en fait, les caractéristiques de la mémoire virtuelle sont différentes de celles de la mémoire physique. La différence essentielle entre la mémoire virtuelle et la mémoire physique est que la RAM est très nettement plus rapide que la mémoire virtuelle.
Donc un système avec 2 Go de RAM physique et 2 Go de mémoire virtuelle n’offrira pas les mêmes performances qu’un système similaire avec 4 Go de RAM physique. Pour comprendre pourquoi, il est nécessaire de comprendre comment fonctionne la mémoire virtuelle.
Comment fonctionne la mémoire virtuelle ?
Lorsqu’une application (y compris le système d’exploitation) est en cours d’exécution, elle stocke l’emplacement des threads du programme et d’autres données à une adresse virtuelle, tandis que les données sont réellement stockées à une adresse physique dans la RAM. Si, plus tard, cet espace RAM est requis de manière plus urgente par un autre processus, alors les données peuvent être échangées hors de la RAM et dans la mémoire virtuelle.
La responsabilité de garder la trace de toutes ces données lorsqu’elles sont échangées entre la mémoire physique et la mémoire virtuelle incombe au gestionnaire de mémoire de l’ordinateur. Le gestionnaire de mémoire maintient une table qui fait correspondre les adresses virtuelles utilisées par le système d’exploitation et les applications aux adresses physiques dans lesquelles les données sont réellement stockées. Lorsque les données sont échangées entre la RAM et la mémoire virtuelle, la table est mise à jour afin qu’une adresse virtuelle donnée pointe toujours vers l’emplacement physique correct.
Un ordinateur ne peut exécuter des threads et manipuler des données que si elles sont stockées dans la RAM plutôt que dans la mémoire virtuelle. Et il faut un temps non négligeable pour échanger les données nécessaires dans la RAM. Par conséquent, il s’ensuit que l’utilisation de la mémoire virtuelle implique un hit de performance.
Dit autrement, un système avec 4 Go de RAM offrira généralement des performances plus élevées qu’un système avec 2 Go de RAM et 2 Go de mémoire virtuelle en raison du hit de performance causé par le swapping, et c’est pour cette raison que l’on dit que la mémoire virtuelle est plus lente que la RAM.
Un problème potentiel de la mémoire virtuelle est que si la quantité de RAM présente est trop faible par rapport à la quantité de mémoire virtuelle, alors un système peut finir par dépenser une grande partie de ses ressources CPU à échanger des données dans les deux sens. Pendant ce temps, les performances des travaux utiles s’arrêtent quasiment – un processus connu sous le nom de thrashing.
Pour éviter le thrashing, il est généralement nécessaire de réduire le nombre d’applications exécutées simultanément, ou simplement d’augmenter la quantité de RAM dans le système.
Les systèmes d’exploitation, tels que la plupart des versions de Windows, recommandent généralement aux utilisateurs de ne pas augmenter la mémoire virtuelle au-delà de 1,5 fois la quantité de RAM physique présente. Ainsi, un système avec 4 Go de RAM ne devrait pas avoir une mémoire virtuelle de plus de 6 Go.
Pour minimiser la baisse de performance causée par le swapping entre la mémoire physique et la mémoire virtuelle, il est préférable d’utiliser le périphérique de stockage le plus rapide connecté au système pour héberger la mémoire virtuelle, et de localiser la zone de stockage de la mémoire virtuelle sur sa propre partition.
La mémoire virtuelle peut agir de concert avec la mémoire principale d’un ordinateur pour permettre des opérations plus rapides et plus fluides.
Comment augmenter la mémoire virtuelle dans un système
La plupart des systèmes d’exploitation permettent aux utilisateurs d’augmenter la mémoire virtuelle à partir d’une page de configuration.
- Dans Windows, les utilisateurs peuvent également permettre au système de gérer la quantité de mémoire virtuelle fournie de manière dynamique.
- De même, dans le Mac OS, les utilisateurs peuvent utiliser le panneau des préférences pour allouer la mémoire virtuelle.
Types de mémoire virtuelle : La pagination et la segmentation
La mémoire virtuelle peut être gérée de différentes manières par le système d’exploitation d’un système, et les deux approches les plus courantes sont la pagination et la segmentation.
La pagination de la mémoire virtuelle
Dans un système qui utilise la pagination, la RAM est divisée en un certain nombre de blocs – généralement de 4k – appelés pages. Les processus se voient ensuite allouer juste assez de pages pour répondre à leurs besoins en mémoire. Cela signifie qu’il y aura toujours une petite quantité de mémoire gaspillée, sauf dans le cas inhabituel où un processus nécessite exactement un nombre entier de pages.
Durant le cours normal des opérations, les pages (c’est-à-dire les blocs de mémoire de 4K de taille) sont échangées entre la RAM et un fichier de pages, qui représente la mémoire virtuelle.
Segmentation de la mémoire virtuelle
La segmentation est une approche alternative de la gestion de la mémoire, où au lieu de pages de taille fixe, les processus se voient allouer des segments de longueur différente pour répondre exactement à leurs besoins. Cela signifie que, contrairement à ce qui se passe dans un système paginé, aucune mémoire n’est gaspillée dans un segment.
La segmentation permet également de diviser les applications en espaces d’adressage logiquement indépendants, ce qui peut les rendre plus faciles à partager, et plus sûrs.
Mais un problème avec la segmentation est que, comme chaque segment est d’une longueur différente, il peut conduire à une « fragmentation » de la mémoire. Cela signifie qu’au fur et à mesure que les segments sont alloués et désalloués, de petits morceaux de mémoire peuvent être laissés éparpillés qui sont trop petits pour être utiles.
A mesure que ces petits morceaux s’accumulent, de moins en moins de segments de taille utile peuvent être alloués. Et si le système d’exploitation commence à utiliser ces petits segments, il y en a alors un nombre énorme dont il faut garder la trace, et chaque processus devra utiliser de nombreux segments différents, ce qui est inefficace et peut réduire les performances.
Avantages et inconvénients de la mémoire virtuelle
Même si la RAM est aujourd’hui relativement bon marché par rapport à son coût lorsque la mémoire virtuelle a été développée, elle reste extrêmement utile et elle est toujours employée dans de nombreux systèmes informatiques, voire la plupart. Le principal problème de la mémoire virtuelle concerne les performances.
Avantages de la mémoire virtuelle
- permet d’exécuter plus d’applications en même temps.
- permet d’exécuter des applications plus importantes dans des systèmes qui n’ont pas assez de RAM physique seule pour les exécuter.
- fournit un moyen d’augmenter la mémoire qui est moins coûteux que d’acheter plus de RAM.
- Provides a way to increase memory in a system which has the maximum amount of RAM that its hardware and operating system can support.
Disadvantages of Virtual Memory
- Does not offer the same performance as RAM.
- Can negatively affect the overall performance of a system.
- Takes up storage space which could otherwise be used for long term data storage.