¿Cuál es la necesidad de memoria virtual en las computadoras?

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?

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.

Si su computadora carece de la memoria de acceso aleatorio (RAM) necesaria para ejecutar un programa u operación, Windows usa memoria virtual para compensar. Memoria virtual combina la RAM de su computadora con espacio temporal en su disco duro. Cuando la RAM se agota, la memoria virtual mueve los datos de la RAM a un espacio llamado archivo de paginación.

Dos razones: la principal es que originalmente, la memoria de la computadora era extremadamente costosa (piense en millones de dólares por megabyte), por lo que encontrar una forma de conservarla y hacer que la máquina actúe como si tuviera más memoria disponible de la que realmente era la principal motivación. Hoy en día, el costo no es una gran preocupación, pero otro beneficio de la forma en que funciona la memoria virtual permite que las direcciones virtuales que están muy separadas entre sí se asignen a la memoria física que en realidad está cerca. Esto permite que la operación de la memoria caché sea más eficiente y puede generar ganancias de rendimiento, siempre que la paginación / intercambio (uso de almacenamiento de disco secundario en lugar de memoria real) no sea significativa.

La memoria virtual solo agrega un poco de ayuda a la asignación de memoria.

La memoria virtual es espacio en el disco duro y no es lo mismo de la memoria de acceso aleatorio (RAM), que es 1000 veces más rápida y eficiente.

¡El único problema con la RAM es que se puede agotar y solo se recicla cuando no hay más energía en los chips de RAM / apagado / reinicio! Entonces, cuanto más tiempo ejecute su computadora, más lento se ejecutará debido a la asignación de toda la RAM.

Por lo tanto, usar la memoria virtual solo ayuda a aumentar la RAM del sistema de que no se asigne todo demasiado rápido, y evita que su computadora funcione lentamente cuando abre nuevos programas.

Esta es la razón por la que no desea una asignación de memoria virtual realmente alta e intenta mantener su archivo de página a 4 Gb como máximo, ya que una programación que se ejecuta en la memoria virtual quiere ejecutarse tan rápido como la RAM.

More Interesting

La pantalla de mi computadora portátil Asus no funciona, pero otros periféricos funcionan perfectamente. ¿Qué tengo que hacer?

¿Es demasiado tarde para entrar en el aprendizaje automático?

¿Pytest y Selenium WebDriver (python) son diferentes?

¿Cuál es la mayor influencia que ha tenido la neurociencia en la visión por computadora y viceversa?

¿Cómo asignan los sistemas de gestión de bases de datos la memoria para su grupo de búferes?

¿Cuáles son algunos buenos documentos que todo graduado de CS debería leer y que esté interesado en algoritmos?

¿Cómo se aplica el aprendizaje automático en la fabricación?

¿Por qué algunos procesadores más baratos tienen una frecuencia de reloj más alta (número de GHz) a veces?

¿Cuál fue la función principal de los tubos de vacío en las computadoras de primera generación?

¿Cuál es la diferencia entre IIT y IIIT? Si estoy interesado en informática (programación, etc.), ¿en cuál debería estar interesado?

¿Qué curso debería estudiar para piratería ética después del 10?

¿Por qué el desenfoque de movimiento (radial) toma tanto tiempo, aunque mi Intel Core i7 solo tiene un 15-20% de actividad?

En Xcode, ¿por qué no puedes construir y ejecutar un archivo C ++? Por ejemplo, ¿por qué tiene que crear un proyecto completo si lo único que desea ejecutar es un archivo C ++ para programar concursos, etc.?

¿Cuáles son algunos de los problemas NP-Complete más notables?

¿Recomiendas estudiar el enfoque bayesiano hacia el aprendizaje automático?