La fonction de mémoire virtuelle / pagination permet à un noyau de «virtualiser» la mémoire dans les processus de l'espace utilisateur. Le noyau peut prendre des pages de la mémoire physique et les organiser par pagination afin qu'elles apparaissent contiguës à un processus de l'espace utilisateur.
Une limite peut être définie sur la mémoire d'un processus de l'espace utilisateur et si le processus va au-delà, une "erreur de page" se produit, ce qui provoque une exception de CPU qui rebondit sur le noyau. Cela empêche le programme de l'espace utilisateur de jouer avec la mémoire allouée au noyau ou à d'autres programmes, sans l'autorisation du noyau.
Généralement, les programmes de l'espace utilisateur demandent au noyau d'étendre cette limite via des interfaces bien définies (appelées par les fonctions C malloc()
et free()
par exemple.). Le noyau est responsable du suivi de la quantité et de la mémoire allouée à un programme.
Ce mécanisme de "défaut de page" peut également permettre au noyau d'échanger la page à laquelle le processus tentait d'accéder avec une à partir du disque, si le noyau est capable de surcharger la mémoire (et que Windows et Linux le prennent en charge), c'est pourquoi il est appelé échange. Si l'accès à la mémoire était en effet invalide (c'est-à-dire que le processus tente d'accéder à la mémoire qu'il n'a pas demandé en premier), alors le processus sera généralement tué avec un SIGSEGV.
Ainsi, le «swapping» est une fonctionnalité supplémentaire (sous Linux, vous pouvez réellement la désactiver entièrement si vous le souhaitez) qui dépend de la mémoire virtuelle / pagination, mais n'est pas requise simplement parce qu'un processeur possède une mémoire virtuelle / pagination. Les concepts ne sont pas les mêmes, mais l'échange dépend de la pagination / mémoire virtuelle pour exister.
De plus, après avoir lu de plus près votre question, "paging" est parfois utilisé comme synomyme de "swapping" - mais je n'ai jamais entendu parler de "swapping" signifiant que la mémoire de tout le processus est permutée vs. "paging" signifiant seulement une partie de il est échangé.
Mais pourquoi Linux a-t-il alors besoin d'une partition de swap? Si la mémoire physique est pleine, certains processus seront externalisés sur le disque dur et un nouveau processus sera mappé de la mémoire virtuelle à la mémoire physique.
La «mémoire virtuelle» est de la mémoire physique, juste «remappée». Le matériel MMU ne peut pas être directement mappé à un périphérique de stockage. La MMU peut renvoyer une erreur qui indique au noyau qu'un processus a tenté d'accéder à la mémoire qu'il ne devrait pas avoir - et le noyau peut utiliser ce mécanisme pour voir qu'un processus veut récupérer quelque chose du disque qu'il pensait être en mémoire, puis faire le " échanger". Le fait est que c'est le système d'exploitation qui décide d'enregistrer les pages sur le disque afin qu'il puisse utiliser ces pages pour d'autres processus, pas le matériel.