No estoy seguro de si la memoria virtual es en realidad un componente físico, o las personas simplemente lo consideran un método para optimizar los procesos de memoria.
La memoria virtual es un concepto.
Como dice anrieff, los sistemas que admiten memoria virtual tendrán una MMU que realmente maneja la asignación. El procesador utilizará direcciones virtuales, que pueden ser cualquier dirección en el espacio de direcciones de 32 o 64 bits que admite. Las direcciones virtuales no están limitadas por la cantidad de memoria física.
Como mencioné en mi comentario, la memoria virtual no tiene que asignarse a nada. Hay dos conjuntos de tablas involucradas:
las tablas de páginas de MMU , que pueden asignarse a la memoria física real o no, según el bit "presente" . Puedes tener páginas que no están "presentes"; La MMU no sabe ni le importa lo que puedan contener, pero no están asignadas a una DRAM física real. Si intenta acceder a uno de estos, el sistema genera un error de página al sistema operativo.
el sistema operativo realiza un seguimiento de la asignación de memoria a los procesos y a sí mismo, y asume la responsabilidad de manejar los errores de página. Puede decidir qué hacer con las páginas no presentes mientras el proceso que accedió a la memoria está en pausa. Las posibles opciones incluyen:
Swap: la página se intercambia. Asigne una DRAM real y lea desde el disco en él, luego regrese al proceso.
IO asignada en memoria: similar, pero se lee desde un archivo específico.
Espacio PCI / AGP: la solicitud pasa por el bus a, por ejemplo, Una GPU en lugar de la memoria principal.
Ceros: o el sistema operativo mantiene preparada alguna DRAM precozada, o se detiene para escribir ceros en una página antes de dársela.
Inválido: finalmente, es completamente posible que el sistema operativo no regrese y simplemente elimine el proceso que solicitó esa página. Un ejemplo común es el "overcommit" de la memoria de Linux: los procesos pueden solicitar y asignar más memoria que el espacio de intercambio de DRAM + disponible. Esto está bien siempre y cuando no lo usen. Si lo hacen todos lo usan y el sistema se queda sin memoria real, comenzará a matar procesos para recuperar el sistema. Otras situaciones de crisis pueden incluir la IO asignada en memoria a un archivo a través de la red que se ha ido, o el intercambio en una unidad que ha fallado.
Puede asignar deliberadamente una página inutilizable (opción mmap PROT_NONE en Linux). Esto es ocasionalmente útil para encontrar ciertos tipos de errores.
Lea otras preguntas en las etiquetas memory