La función de memoria virtual / paginación permite que un núcleo "virtualice" la memoria a los procesos del espacio de usuario. El núcleo puede tomar páginas de la memoria física y organizarlas mediante paginación para que parezcan contiguas a un proceso de espacio de usuario.
Se puede establecer un límite en la memoria de un proceso de espacio de usuario y si el proceso va más allá se produce un "error de página", lo que provoca una excepción de CPU que se devuelve al núcleo. Esto evita que el programa de espacio de usuario se meta con la memoria asignada al núcleo u otros programas, sin el permiso del núcleo.
Por lo general, los programas de espacio de usuario solicitan al núcleo que extienda este límite a través de interfaces bien definidas (llamadas por las funciones C malloc()
y, free()
por ejemplo). El núcleo es responsable de realizar un seguimiento de la cantidad y la memoria que se asigna a un programa.
Este mecanismo de "falla de página" también puede permitir que el kernel intercambie la página a la que el proceso intentaba acceder con una desde el disco, si el kernel puede sobreaprovisionar memoria (y tanto Windows como Linux lo admiten), de ahí por qué se llama intercambio. Si el acceso a la memoria era realmente inválido (es decir, el proceso está intentando acceder a la memoria que no solicitó primero), normalmente el proceso se eliminará con un SIGSEGV.
Por lo tanto, el "intercambio" es una característica adicional (en Linux puede deshabilitarla por completo si lo desea) que depende de la memoria virtual / paginación, pero no es necesaria solo porque una CPU tiene memoria / paginación virtual. Los conceptos no son los mismos, pero el intercambio depende de la paginación / memoria virtual que exista.
Además, después de leer más de cerca su pregunta, "paginación" a veces se utiliza como sinónimo de "intercambio", pero nunca he oído hablar de "intercambio", lo que significa que la memoria de todo el proceso se intercambia frente a "paginación", lo que significa solo parte de Se ha cambiado.
Pero, ¿por qué Linux necesita una partición de intercambio entonces? Si la memoria física está llena, algunos procesos se externalizarán al disco duro y se asignará un nuevo proceso desde la memoria virtual a la memoria física.
La "memoria virtual" es memoria física, simplemente "reasignada". El hardware MMU no se puede asignar directamente a ningún dispositivo de almacenamiento. La MMU puede generar una falla que le dice al núcleo que un proceso intentó acceder a la memoria que no debería tener, y el núcleo puede usar este mecanismo para ver que un proceso quiere recuperar algo del disco que creía que estaba en la memoria y luego hacer el " intercambiar". El punto es que es el sistema operativo el que decide guardar páginas en el disco para que pueda usar esas páginas para otros procesos, no el hardware.