Estaba revisando dos veces mis notas para 'Memoria virtual' y la definición en mi libro de texto es:
Proceso de asignación de una sección de almacenamiento secundario para actuar como parte de la memoria principal
Donde como dice Wikipedia :
La memoria virtual es una técnica de sistema informático que da a un programa de aplicación la impresión de que tiene memoria de trabajo contigua (un espacio de direcciones)
y (Wikipedia también dice)
Tenga en cuenta que "memoria virtual" es más que simplemente "usar espacio en disco para ampliar el tamaño de la memoria física"
¿Alguien puede ofrecer alguna aclaración sobre cuál es la correcta?
virtual-memory
Yacoby
fuente
fuente
Respuestas:
La memoria virtual es una capa de abstracción proporcionada a cada proceso. La computadora tiene, digamos, 2GB de RAM física, dirigida de 0 a 2G. Un proceso puede ver un espacio de direcciones de 4 GB, que tiene completamente para sí mismo. La asignación de direcciones virtuales a direcciones físicas es manejada por una unidad de administración de memoria, que es administrada por el sistema operativo. Normalmente esto se hace en "páginas" de 4KB.
Esto le da varias características:
Su libro de texto define la memoria virtual (incorrectamente) como solo # 3.
Incluso sin ningún intercambio, debe tener especialmente en cuenta la memoria virtual si escribe un controlador de dispositivo para un dispositivo que hace DMA (acceso directo a memoria). Su código de controlador se ejecuta en la CPU, lo que significa que sus accesos a la memoria son a través de la MMU (virtual). El dispositivo probablemente no pasa por la MMU, por lo que ve direcciones físicas sin formato. Entonces, como escritor de controladores, debe asegurarse de:
fuente
Intentaré comenzar lentamente, y luego armar todo esto para ti. Es como esto:
La memoria virtual, como se usa comúnmente, se refiere a "paginación". Como su nombre indica, la paginación es como un bloc de notas humano.
Cuando trabajas con sumas simples o aprendes información simple, lo haces todo en tu cabeza: solo cargas toda la información, la procesas y obtienes la respuesta. Esto es como una computadora que carga archivos desde el disco duro: carga los programas o imágenes u otra información que necesita para trabajar en su "memoria real" (o "memoria física") y trabaja en ellos con su "cerebro" ( su procesador).
Sin embargo, cuando está aprendiendo información compleja o trabajando con sumas complejas, es posible que no pueda acomodar todo eso en su cabeza a la vez. Te confundes, comienzas a reducir la velocidad, no logras mantener todo ahí a la vez y tienes que olvidar algo para recordar otra cosa.
La solución humana es usar un bloc de notas. Anotamos en las páginas todas las cosas que no podemos recordar a la vez, pero nos referimos a ellas mientras hacemos las sumas. Es posible que no podamos recordar una gran lista de cifras de ventas para el mes, pero podemos mirar las páginas, obtener la información poco a poco y procesar cada bit. Esto es como la computadora "paginando" su memoria: escribiendo páginas llenas de información, y poniéndola en "memoria virtual" para referencia posterior, y dándose cuenta de que necesita una página, y cargando esa página desde la memoria virtual a la memoria real. En Linux y Unix, el lugar donde se almacenan estas páginas se llama literalmente un "archivo de páginas", y las páginas de datos en la memoria se llaman literalmente "páginas". Los diferentes sistemas tienen diferentes nombres para estas cosas, pero el concepto general es muy similar.
Entonces, realmente, la paginación es muy simple. Todas las páginas de información no caben en la memoria, por lo que algunas páginas se colocan en el disco y se vuelven a cargar más tarde.
Ahora, donde se vuelve más complicado es que, los sistemas modernos cuentan con mapeo de memoria y protección de memoria, que generalmente es manejada por el mismo sistema de hardware en la computadora: la unidad de administración de memoria, o MMU.
En una computadora multitarea (moderna), que puede ejecutar muchos programas a la vez y cuenta con protección de memoria, cada programa generalmente está separado de otros programas que se ejecutan en el mismo sistema. De esta manera, un programa no puede alterar otro programa simplemente accediendo a su memoria: la MMU separa físicamente el espacio de direcciones de un programa del de los demás. En otras palabras, los programas del usuario no ven los programas de otros usuarios o incluso otros programas. No ven la "memoria real", ven su propia "memoria virtual".
Ahora, este concepto de aislamiento de memoria y el concepto de archivo de paginación son dos cosas conceptualmente diferentes, lo que probablemente es la razón por la que estás confundido. Sin embargo, la clave es que ambos funcionan utilizando la MMU, la unidad de administración de memoria, que divide la memoria en páginas y asigna las páginas a un espacio de dirección virtual.
Entonces, cuando un programa solicita la memoria en una determinada "dirección de memoria", lo que realmente sucede es que se buscan las páginas de memoria para ese programa y sus direcciones correspondientes (el "espacio de direcciones" del programa) y la página que corresponde a ese bloque de memoria se encuentra. Esa página puede cargarse en algún lugar de la memoria real, en cuyo caso el programa tiene acceso, o puede paginarse en un disco. Si está paginado, desencadena un "error de página": se accede al disco y la página se carga en la memoria. Por lo tanto, el programa funciona incluso cuando no hay suficiente memoria, pero se ejecuta LENTAMENTE, si tiene que usar el disco para lo que normalmente sería un acceso de memoria muy rápido.
Ahora, si no hay suficiente espacio para cargar esa página en la memoria, entonces tiene un problema. En ese caso, alguna OTRA página que ya está en la memoria debe "intercambiarse" en el disco, de modo que se pueda cargar la página del primer programa. O bien, pueden ser igualmente páginas del mismo programa. A veces, esto se ve en programas gráficos, por ejemplo, en sistemas con mucha carga, cuando parte de la imagen se carga lentamente y se dibuja rápidamente, luego la siguiente parte se carga igualmente lentamente y se dibuja rápidamente, y cuando vuelve a trabajar con la primera parte, es lento OTRA VEZ. Esto se debe a que se están cargando para trabajar, luego se cambian nuevamente, para que se pueda trabajar en otra cosa. Obviamente, esta es una forma muy lenta de trabajar, y lo que realmente necesita es más memoria REAL.
fuente
Sé que es demasiado tarde ... pero aún así me pareció útil.
fuente
Bueno, si entendemos la palabra virtual, creo que podemos entender cómo se relaciona con la memoria.
"Virtual" como se define en Dictionary.com: "simulado o extendido temporalmente por un software de computadora: un disco virtual en RAM; memoria virtual en un disco duro".
En el caso de la memoria virtual, el sistema está simulando la memoria del sistema utilizando recursos de memoria más lentos (es decir, disco duro, memoria USB, etc.). Cuando se requiere memoria adicional, el sistema intercambiará datos en la memoria del sistema que no son necesarios para el disco duro. unidad o recurso que ha configurado. Esto libera memoria del sistema para que su aplicación pueda continuar la tarea que estaba haciendo.
El intercambio es un proceso continuo y, por lo tanto, si actualiza su memoria, debería ver una mejora en el rendimiento ya que el sistema no debería requerir el intercambio para desacelerar la memoria.
fuente
La memoria virtual es una característica de un sistema operativo (SO) que permite que una computadora compense la escasez de memoria física transfiriendo temporalmente páginas de datos desde la memoria de acceso aleatorio (RAM) al almacenamiento en disco.
Lo que significa que es como un espejo o una memoria de muestra que se utiliza en una máquina virtual o una caja virtual para probar los sistemas operativos sin formatear la computadora.
fuente
La memoria virtual es un bloque de su disco duro que el sistema usa como un archivo de paginación además de la RAM física.
Se vuelve complicado, y a veces lento, porque Windows NO desfragmenta esta parte de su disco duro.
Los 2 mejores consejos que puedo ofrecer: 1) Virt Mem debe establecerse en min y max en aproximadamente 1.5X su memoria física. ex. 2GB RAM = 3070MB Virt. 2) Al desfragmentar, apague el archivo de paginación. Defrag 2x, y restablecer de nuevo al número original. Esto proporciona una porción de disco limpia y aumentará la velocidad del archivo de paginación.
fuente