La necesidad de memoria virtual surge del hecho de que la memoria física es “limitada”. ¿Cómo ejecutará la CPU las instrucciones del programa si el programa binario es grande para cargarse en la DRAM?
El sistema puede estar funcionando con poca memoria física que no permite que el cargador cargue todas las páginas del ejecutable en la memoria. Incluso si los procesos que actualmente se encuentran en la memoria se intercambian, no se cumplen los requisitos de memoria física del nuevo proceso.
La pregunta es ¿cómo ejecutamos programas en tal caso?
- ¿Qué piensan los investigadores del aprendizaje automático del enfoque de "un modelo para aprenderlos a todos"?
- ¿Cómo se puede percibir Internet a través de una interfaz cerebro-computadora?
- ¿Cuál es la mejor manera de explicar la desfragmentación en el contexto informático?
- ¿Qué es mejor que el aprendizaje automático?
- ¿Qué parte común de un compilador se presta más para ser optimizado por un algoritmo de aprendizaje automático?
Aquí es donde entra en juego la memoria virtual (también conocida como irreal). ¿Qué tal no confiar realmente en el hecho de que para ejecutar un programa, necesita cargar todas sus páginas en la memoria? Esto conduce a la búsqueda de demanda . La paginación de demanda es una técnica para implementar memoria virtual.
Para comenzar la ejecución del programa (también conocido como proceso), no es necesario cargar todo el programa en la memoria . A medida que la CPU hace referencias, y si las páginas físicas correspondientes a esas referencias no están presentes en la DRAM, el sistema genera un error de página : la página física de la memoria a la que se debe acceder no reside en la memoria.
El sistema operativo debe manejar este error de página. El proceso de falla se suspenderá y el controlador de fallas de página traerá la página deseada del disco a la memoria y actualizará la tabla de páginas. Tenga en cuenta que todo esto se realiza _solo_ después de que la traducción de la dirección ya se haya realizado a través de MMU; es decir, la dirección lógica generada por la CPU se traduce a la dirección física a través de la tabla de páginas.
¿Cómo ayuda la paginación de demanda aquí o cómo se relaciona con la memoria virtual?
El concepto fundamental es que no es necesario cargar todo el programa en la memoria para que la CPU comience la ejecución. Las páginas se cargan según la demanda. Puede haber ciertas secciones de código que nunca se pueden ejecutar. Por lo tanto, no hay beneficio de cargarlos y simplemente mantenerlos en la memoria. A medida que se hacen las referencias físicas, si la página deseada está en la memoria, está bien. De lo contrario, el proceso generará un error de página y la página se cargará en la memoria (esto puede provocar el intercambio de una página existente de nuevo al disco). La instrucción de falla se reiniciará.
La paginación por demanda nos permite ejecutar programas en la memoria, incluso si no hay suficiente memoria para empezar. Este es el principio detrás de la memoria virtual. Es un recuerdo irreal. Cada proceso tiene su propio espacio de direcciones virtuales contiguas que comprende código, datos, bss, montón y regiones de pila. El espacio de direcciones virtuales es un rango contiguo de direcciones lógicas (el generado por la CPU).
Por ejemplo, estamos ejecutando un programa con requisitos de memoria de 6 GB en un sistema de 32 bits. El rango de espacio de direcciones virtuales nos permitirá abordar 4 GB de memoria física al máximo. Sería menor a 4GB porque algunos códigos del núcleo del sistema operativo y sus estructuras de datos.
Una dirección lógica se traducirá en dirección física: número de trama física, desplazamiento en trama. Este marco físico puede o no estar presente en la memoria. Esto es lo principal para entender. Aunque el proceso tiene 4 GB de rango de direcciones lógicas para trabajar, la memoria virtual nos permite usar más que eso al no tener que guardar todas las páginas físicas para el proceso en la memoria.