web-dev-qa-db-fra.com

Quelles sont les différences entre la mémoire virtuelle et la mémoire physique?

Je suis souvent confondu avec le concept de virtualisation dans les systèmes d'exploitation. Considérant RAM comme mémoire physique, pourquoi avons-nous besoin de la mémoire virtuelle pour exécuter un processus?

Où se trouve cette mémoire virtuelle lorsque le processus (programme) du disque dur externe est amené à la mémoire principale (mémoire physique) pour l'exécution.

Qui s'occupe de la mémoire virtuelle et quelle est la taille de la mémoire virtuelle?

Supposons que si la taille de RAM est de 4 Go (c'est-à-dire 2 ^ 32-1 espaces d'adressage)), quelle est la taille de la mémoire virtuelle?

84
starkk92

La mémoire virtuelle est, entre autres, une abstraction qui donne au programmeur l’illusion de disposer d’une mémoire infinie sur son système.

Les mappages de mémoire virtuelle sont conçus pour correspondre aux adresses physiques réelles. Le système d'exploitation crée et gère ces mappages - en utilisant le tableau de pages, entre autres structures de données, pour gérer les mappages. Les mappages de mémoire virtuelle se trouvent toujours dans la table des pages ou dans une structure de données similaire (dans le cas d'autres implémentations de la mémoire virtuelle, nous ne devrions peut-être pas l'appeler la "table des pages"). La table de pages se trouve également dans la mémoire physique - souvent dans des espaces réservés au noyau que les programmes utilisateur ne peuvent pas écraser.

La mémoire virtuelle est généralement plus grande que la mémoire physique - les mappages de mémoire virtuelle n'auraient aucune raison si la mémoire virtuelle et la mémoire physique avaient la même taille.

Seule la partie nécessaire d'un programme réside en mémoire, il s'agit généralement d'un sujet appelé "pagination". La mémoire virtuelle et la pagination sont étroitement liées, mais pas le même sujet. Il existe d'autres implémentations de la mémoire virtuelle, telles que la segmentation.

Je suppose que je me trompe, mais je parierais que les problèmes que vous avez du mal à comprendre sont liés à des implémentations spécifiques de la mémoire virtuelle, très probablement à la pagination. Il n’existe pas de à sens unique pour faire de la pagination - il existe de nombreuses implémentations et celle décrite par votre manuel n’est probablement pas la même que celle qui apparaît dans les systèmes d’exploitation réels tels que Linux/Windows - il existe probablement des différences subtiles.

Je pourrais parler de mille paragraphes sur la pagination ... mais je pense qu’il vaut mieux laisser une autre question cibler spécifiquement ce sujet.

76

Je copie sans vergogne les extraits de la page de manuel du haut

VIRT - Image virtuelle (ko) Quantité totale de mémoire virtuelle utilisée par la tâche. Il inclut tous les codes, les données et les bibliothèques partagées, ainsi que les pages qui ont été permutées et les pages mappées mais non utilisées.

SWAP - Taille échangée (Ko) Mémoire non résidente, mais présente dans une tâche. Il s'agit d'une mémoire qui a été permutée mais qui pourrait inclure une mémoire non résidente supplémentaire. Cette colonne est calculée par soustraction de la mémoire physique de la mémoire virtuelle

16
Cleonjoys

Voir ici: Mémoire virtuelle physique vs virtuelle

La mémoire virtuelle est stockée sur le disque dur et est utilisée lorsque la mémoire RAM est remplie. La mémoire physique est limitée à la taille des puces RAM installées sur l'ordinateur La mémoire virtuelle étant limitée par la taille du disque dur, la mémoire virtuelle peut augmenter la capacité de stockage.

6
Reihan_amn