J'essaierai de commencer lentement, puis de rassembler tout cela pour vous. C'est comme ça:
La mémoire virtuelle, telle qu'elle est couramment utilisée, fait référence à la «pagination». Comme son nom l'indique, la pagination est comme un bloc-notes humain.
Lorsque vous travaillez sur des sommes simples ou que vous apprenez des informations simples, vous faites tout dans votre tête: il vous suffit de charger toutes les informations, de les traiter et d'obtenir la réponse. C'est comme un ordinateur qui charge des fichiers à partir du disque dur - il charge les programmes ou les images ou autres informations dont il a besoin pour travailler dans sa "mémoire réelle" (ou "mémoire physique") et fonctionne avec eux avec son "cerveau" ( son processeur).
Cependant, lorsque vous apprenez des informations complexes ou travaillez avec des sommes complexes, vous ne pourrez peut-être pas tout mettre dans votre tête à la fois. Vous êtes confus, vous commencez à ralentir, vous n'arrivez pas à tout garder en même temps et vous devez oublier quelque chose pour vous souvenir d'autre chose.
La solution humaine consiste à utiliser un bloc-notes. Nous notons sur les pages toutes les choses dont nous ne pouvons pas nous souvenir en même temps, mais nous y faisons référence en faisant les sommes. Nous ne pourrons peut-être pas nous souvenir d'une énorme liste de chiffres de ventes pour le mois, mais nous pouvons regarder les pages, obtenir les informations un peu à la fois et traiter chaque bit. C'est comme si l'ordinateur «paginait» sa mémoire - écrivant des pages pleines d'informations, les plaçant dans la «mémoire virtuelle» pour référence ultérieure, et réalisant qu'il avait besoin d'une page, et rechargeant cette page de la mémoire virtuelle dans la mémoire réelle. Sous linux et unix, l'endroit où ces pages sont stockées est littéralement appelé un "fichier d'échange", et les pages de données en mémoire sont littéralement appelées "pages". Différents systèmes ont des noms différents pour ces choses, mais le concept général est à peu près le même.
Donc, la pagination est très simple. Toutes les pages d'informations ne tiennent pas en mémoire, donc certaines pages sont placées sur le disque et chargées à nouveau plus tard.
Maintenant, là où cela devient plus compliqué, c'est que les systèmes modernes offrent un mappage de la mémoire et une protection de la mémoire, qui sont généralement gérés par le même système matériel de l'ordinateur: l'unité de gestion de la mémoire, ou MMU.
Dans un ordinateur multitâche (moderne), qui peut exécuter de nombreux programmes à la fois et dispose d'une protection de la mémoire, chaque programme est généralement séparé des autres programmes exécutés sur le même système. De cette façon, un programme ne peut pas modifier un autre programme simplement en accédant à sa mémoire - la MMU sépare physiquement l'espace d'adressage d'un programme de celui des autres. En d'autres termes, les programmes de l'utilisateur ne voient pas les programmes d'autres utilisateurs ni même d'autres programmes. Ils ne voient pas la "mémoire réelle" - ils voient leur propre "mémoire virtuelle".
Maintenant, ce concept d'isolement de la mémoire et le concept de fichier d'échange sont deux choses conceptuellement différentes, c'est probablement pourquoi vous êtes confus. Cependant, la clé est qu'ils fonctionnent tous les deux à l'aide de la MMU - l'unité de gestion de la mémoire, qui divise la mémoire en pages et mappe les pages à un espace d'adressage virtuel.
Ainsi, lorsqu'un programme demande de la mémoire à une certaine "adresse de mémoire", ce qui se passe réellement, c'est que les pages de mémoire de ce programme et leurs adresses correspondantes ("l'espace d'adressage" du programme) sont recherchées, et la page qui correspond à ce bloc de mémoire est trouvé. Cette page peut être chargée quelque part dans la mémoire réelle, auquel cas le programme est autorisé à accéder, ou, elle peut être paginée vers un disque. S'il est paginé, il déclenche alors un «défaut de page» - le disque est accessible et la page est chargée en mémoire. Le programme fonctionne donc même lorsqu'il n'y a pas assez de mémoire, mais il s'exécute LENTEMENT, s'il doit utiliser le disque pour ce qui serait normalement un accès mémoire très rapide.
Maintenant, s'il n'y a pas assez d'espace pour charger cette page en mémoire, vous avez un problème. Dans ce cas, une page OTHER déjà en mémoire doit être "échangée" sur le disque, de sorte que la page du premier programme peut être chargée. Ou, ils peuvent également être des pages du même programme. Vous le voyez parfois dans les programmes graphiques, par exemple, sur des systèmes fortement chargés, lorsqu'une partie de l'image est chargée lentement et dessinée rapidement, puis la partie suivante est chargée également lentement et dessinée rapidement, et lorsque vous reprenez le travail avec la première partie, c'est encore lent. C'est parce qu'ils sont chargés pour être travaillés, puis échangés à nouveau, donc quelque chose d'autre peut être travaillé. Évidemment, c'est une façon très lente de travailler, et ce dont vous avez vraiment besoin, c'est de plus de VRAIE mémoire.