La memoria virtual es un área del espacio de almacenamiento de la memoria secundaria de un sistema informático (como un disco duro o una unidad de estado sólido) que actúa como si fuera una parte de la memoria RAM o primaria del sistema.
En principio, los datos necesarios para ejecutar aplicaciones se almacenan en la RAM, donde la CPU puede acceder a ellos rápidamente. Pero cuando se ejecutan aplicaciones de gran tamaño, o cuando se ejecutan muchas aplicaciones a la vez, la RAM del sistema puede llenarse.
Para sortear este problema, algunos datos almacenados en la RAM que no se utilizan activamente pueden trasladarse temporalmente a la memoria virtual (que se encuentra físicamente en un disco duro u otro dispositivo de almacenamiento). Esto libera espacio en la RAM, que puede utilizarse para alojar datos a los que el sistema necesita acceder de forma inminente.
Al intercambiar datos entre la RAM y la memoria virtual cuando no se necesitan y de vuelta de la memoria virtual a la RAM cuando se necesitan, un sistema puede seguir funcionando sin problemas con mucha menos RAM física de la que necesitaría de otro modo.
La memoria virtual permite a un sistema ejecutar aplicaciones más grandes o ejecutar más aplicaciones al mismo tiempo sin quedarse sin RAM. En concreto, el sistema puede funcionar como si sus recursos totales de RAM fueran iguales a la cantidad de RAM física, más la cantidad de RAM virtual.
- ¿Por qué es necesaria la memoria virtual?
- Memoria virtual frente a memoria física
- ¿Cómo funciona la memoria virtual?
- Cómo aumentar la memoria virtual en un sistema
- Tipos de memoria virtual: Paginación y segmentación
- Memoria virtual de paginación
- Segmentación de la memoria virtual
- Ventajas y desventajas de la memoria virtual
- Ventajas de la memoria virtual
- Disadvantages of Virtual Memory
¿Por qué es necesaria la memoria virtual?
La memoria virtual se desarrolló cuando la RAM física era muy cara, y la RAM sigue siendo más cara por gigabyte que los medios de almacenamiento como los discos duros y las unidades de estado sólido. Por esa razón, es mucho menos costoso utilizar una combinación de RAM física y memoria virtual que equipar un sistema informático con más RAM.
Dado que el uso de la memoria virtual (o el aumento de la memoria virtual) no tiene ningún coste financiero adicional (porque utiliza el espacio de almacenamiento existente), ofrece una forma de que un ordenador utilice más memoria de la que está disponible físicamente en el sistema.
Otro factor clave para el uso de la memoria virtual es que todos los sistemas informáticos tienen un límite (dictado por el hardware y el software) en la cantidad de RAM física que se puede instalar. El uso de la memoria virtual permite que el sistema siga funcionando más allá de esos límites de RAM física.
Memoria virtual frente a memoria física
Dado que la RAM es más cara que la memoria virtual, parecería -en igualdad de condiciones- que los ordenadores deberían estar equipados con la menor cantidad de RAM y la mayor cantidad de memoria virtual posible.
Pero en realidad las características de la memoria virtual son diferentes a las de la memoria física. La diferencia clave entre la memoria virtual y la memoria física es que la RAM es mucho más rápida que la memoria virtual.
Así que un sistema con 2 GB de RAM física y 2 GB de memoria virtual no ofrecerá el mismo rendimiento que un sistema similar con 4 GB de RAM física. Para entender por qué, es necesario comprender cómo funciona la memoria virtual.
¿Cómo funciona la memoria virtual?
Cuando una aplicación (incluido el sistema operativo) se está ejecutando, almacena la ubicación de los hilos del programa y otros datos en una dirección virtual, mientras que los datos se almacenan realmente en una dirección física de la RAM. Si más tarde ese espacio de la RAM se necesita con más urgencia por otro proceso, entonces los datos pueden ser intercambiados fuera de la RAM y en la memoria virtual.
La responsabilidad de mantener un registro de todos estos datos a medida que se intercambian entre la memoria física y virtual recae en el gestor de memoria del ordenador. El gestor de memoria mantiene una tabla que asigna las direcciones virtuales utilizadas por el sistema operativo y las aplicaciones a las direcciones físicas en las que se almacenan realmente los datos. Cuando los datos se intercambian entre la RAM y la memoria virtual, la tabla se actualiza para que una determinada dirección virtual apunte siempre a la ubicación física correcta.
Un ordenador sólo puede ejecutar hilos y manipular datos que estén almacenados en la RAM y no en la memoria virtual. Y se necesita una cantidad de tiempo no despreciable para intercambiar los datos que se necesitan en la RAM. En consecuencia, se deduce que el uso de la memoria virtual implica un impacto en el rendimiento.
En otras palabras, un sistema con 4 GB de RAM generalmente ofrecerá un mayor rendimiento que un sistema con 2 GB de RAM y 2 GB de memoria virtual debido al impacto en el rendimiento causado por el intercambio, y por esa razón se dice que la memoria virtual es más lenta que la RAM.
Un problema potencial con la memoria virtual es que si la cantidad de RAM presente es demasiado pequeña en comparación con la cantidad de memoria virtual, entonces un sistema puede terminar gastando una gran proporción de sus recursos de CPU intercambiando datos de ida y vuelta. Mientras tanto, el rendimiento del trabajo útil se detiene casi por completo – un proceso conocido como thrashing.
Para evitar el thrashing suele ser necesario reducir el número de aplicaciones que se ejecutan simultáneamente, o simplemente aumentar la cantidad de RAM en el sistema.
Los sistemas operativos, como la mayoría de las versiones de Windows, generalmente recomiendan que los usuarios no aumenten la memoria virtual más allá de 1,5 veces la cantidad de RAM física presente. Así, un sistema con 4 GB de RAM debería tener una memoria virtual de no más de 6 GB.
Para minimizar el golpe de rendimiento causado por el intercambio entre la memoria física y la virtual, lo mejor es utilizar el dispositivo de almacenamiento más rápido conectado al sistema para alojar la memoria virtual, y ubicar el área de almacenamiento de la memoria virtual en su propia partición.
La memoria virtual puede actuar en conjunto con la memoria principal de un ordenador para permitir operaciones más rápidas y fluidas.
Cómo aumentar la memoria virtual en un sistema
La mayoría de los sistemas operativos permiten a los usuarios aumentar la memoria virtual desde una página de configuración.
- En Windows, los usuarios también pueden permitir que el sistema gestione la cantidad de memoria virtual proporcionada de forma dinámica.
- De forma similar, en Mac OS, los usuarios pueden utilizar el panel de preferencias para asignar la memoria virtual.
Tipos de memoria virtual: Paginación y segmentación
La memoria virtual puede ser gestionada de diferentes maneras por el sistema operativo de un sistema, y los dos enfoques más comunes son la paginación y la segmentación.
Memoria virtual de paginación
En un sistema que utiliza la paginación, la memoria RAM se divide en un número de bloques – normalmente de 4k de tamaño – llamados páginas. A los procesos se les asignan las páginas suficientes para satisfacer sus necesidades de memoria. Esto significa que siempre habrá una pequeña cantidad de memoria desperdiciada, excepto en el caso inusual de que un proceso requiera exactamente un número entero de páginas.
Durante el curso normal de las operaciones, las páginas (es decir, los bloques de memoria de 4K de tamaño) se intercambian entre la RAM y un archivo de páginas, que representa la memoria virtual.
Segmentación de la memoria virtual
La segmentación es un enfoque alternativo a la gestión de la memoria, donde en lugar de páginas de un tamaño fijo, se asignan a los procesos segmentos de diferente longitud para satisfacer exactamente sus necesidades. Esto significa que, a diferencia de lo que ocurre en un sistema paginado, no se desperdicia memoria en un segmento.
La segmentación también permite dividir las aplicaciones en espacios de direcciones lógicamente independientes, lo que puede hacer que sean más fáciles de compartir, y más seguras.
Pero un problema de la segmentación es que, como cada segmento tiene una longitud diferente, puede llevar a la «fragmentación» de la memoria. Esto significa que a medida que se asignan y desasignan segmentos, pueden quedar dispersos pequeños trozos de memoria que son demasiado pequeños para ser útiles.
A medida que estos pequeños trozos se acumulan, cada vez se pueden asignar menos segmentos de tamaño útil. Y si el sistema operativo empieza a utilizar estos pequeños segmentos, entonces hay un gran número de ellos que hay que controlar, y cada proceso tendrá que utilizar muchos segmentos diferentes, lo que es ineficiente y puede reducir el rendimiento.
Ventajas y desventajas de la memoria virtual
Aunque la memoria RAM es ahora relativamente barata en comparación con su coste cuando se desarrolló por primera vez la memoria virtual, sigue siendo extremadamente útil y se sigue empleando en muchos, quizás la mayoría, de los sistemas informáticos. El problema clave de la memoria virtual está relacionado con el rendimiento.
Ventajas de la memoria virtual
- Permite ejecutar más aplicaciones al mismo tiempo.
- Permite ejecutar aplicaciones más grandes en sistemas que no tienen suficiente RAM física por sí solos para ejecutarlas.
- Proporciona una forma de aumentar la memoria que es menos costosa que comprar más RAM.
- Provides a way to increase memory in a system which has the maximum amount of RAM that its hardware and operating system can support.
Disadvantages of Virtual Memory
- Does not offer the same performance as RAM.
- Can negatively affect the overall performance of a system.
- Takes up storage space which could otherwise be used for long term data storage.