Tabla de contenidos
En su definición más básica, la memoria virtual es la característica del sistema operativo que te permite utilizar el disco duro como RAM temporal. Intentemos comprender este concepto un poco más profundamente:
¿Qué debes hacer si la memoria de tu computadora no es suficiente para ejecutar varios programas simultáneamente en la computadora? Sabrás que no tienes suficiente RAM cuando el sistema operativo te muestre un mensaje que te indique que debes cerrar algunos programas si deseas ejecutar un programa en particular. Lo que en otras palabras significa que te estás quedando sin memoria.
Te puede interesar leer: Comparación de M4A vs MP3 ¿Cuál es el mejor formato de audio?
¿Cómo resuelves el problema de la poca memoria?
Una forma de resolver este problema, como dice el mensaje, es cerrar algunos de los programas en ejecución y ejecutar el programa deseado nuevamente. Pero eso no siempre es algo deseable. Es posible que no siempre tengas varios programas abiertos al mismo tiempo. A veces, la razón de la memoria insuficiente podría ser el hecho de que estás trabajando en algunas aplicaciones profesionales que están consumiendo tu memoria. Otra forma, por tanto, es aumentar esa RAM en el sistema. Sin embargo, no todos quieren gastar dinero extra en RAM.
Finalmente, la forma más fácil, inmediata y económica para resolver este problema es utilizar el disco duro como RAM además de la RAM principal. El disco duro es un medio de almacenamiento al igual que la RAM. Aunque es de acceso más lento, sigue siendo un medio de almacenamiento. ¿Cómo haces eso? El sistema operativo está programado para manejar el uso del disco duro como memoria además de la RAM. A este uso del disco duro como RAM, como se mencionó anteriormente, se le denomina memoria virtual.
Como su nombre indica, la idea es tener una memoria imaginaria o memoria lógica, que tenga un tamaño mayor que la RAM. Podría decirse que la memoria virtual se desborda de la RAM al disco duro para compensar el espacio requerido. De esta manera, los programas ven la memoria virtual como la memoria de la computadora con la que trabajar. El sistema operativo gestiona internamente cómo se maneja el asunto entre la RAM y el disco duro.
¿Qué es la memoria virtual?
Hay varias formas de implementar el concepto de memoria virtual, que discutiremos a continuación.
Memoria Virtual Paginada
Cuando hablamos de qué es la memoria virtual, lo primero que nos viene a la mente es la memoria virtual paginada. La memoria virtual es una memoria lógica (basada en software; no física) y comprende un espacio de direcciones virtuales que excede el espacio de direcciones de la RAM. En el caso de la memoria virtual paginada, este espacio de direcciones virtuales se divide en páginas. Las páginas son bloques de memoria del mismo tamaño, por ejemplo, 4 kb en la memoria virtual. Entonces, cuando la computadora carga una aplicación en la memoria, la divide en bloques de igual tamaño exactamente del tamaño de una página (4kb) y continúa llenando una serie de páginas con estos bloques de aplicación.
Estos bloques fijos se denominan tramas en la memoria física (RAM) y páginas en la memoria lógica (memoria virtual). En la práctica, las páginas de la aplicación se almacenan parcialmente en la RAM y parcialmente en el disco duro. Las páginas que no se necesitan actualmente van al disco duro. Las páginas que se necesitan inmediatamente se almacenan en la RAM física. Las páginas se almacenan en el disco duro en un archivo de intercambio, que almacena estas páginas secuencialmente.
Entonces, ¿cómo maneja la computadora el almacenamiento real de aplicaciones en la RAM o el disco duro? Lo hace mapeando el espacio de direcciones virtuales con el espacio de direcciones físicas. Este mapeo lo realizan los sistemas operativos mediante tablas de páginas.
Tablas de páginas
Las tablas de páginas se utilizan para contener información sobre las páginas de la MEMORIA VIRTUAL. La información incluye indicadores que indican si la página está actualmente almacenada en la RAM o no. Cuando la aplicación intenta acceder a una página y la tabla de páginas indica que la página reside en la RAM, la aplicación accede a la RAM y el programa continúa.
En caso de que la tabla indique que la página no reside en la RAM, se genera una «excepción de error de página» que le indica al «supervisor de paginación» del sistema operativo que organice el envío de la página solicitada a la RAM. Luego, el sistema operativo intercambia una página en la RAM con la página solicitada y devuelve el control a la aplicación.
Hay varias formas de implementar las tablas de páginas. Podría haber una sola tabla de páginas con toda la información que necesita el sistema. En este caso, las distintas aplicaciones simultáneas utilizan diferentes partes del espacio de direcciones virtuales para almacenamiento. Alternativamente, podría haber una tabla separada para cada aplicación.
En este caso, cada aplicación tiene su tabla de páginas particular para proporcionarle información de direccionamiento que corresponde a áreas de la memoria física. También existe la posibilidad de tener un árbol de tablas de páginas en caso de segmentos grandes en los programas.
Supervisor de paginación e intercambio
El componente supervisor de paginación del sistema operativo gestiona la traducción de direcciones de aplicaciones utilizando las tablas de páginas. Digamos que la aplicación intenta acceder a una dirección virtual que no está disponible en la RAM. Esto generará una excepción de error de página y el supervisor de paginación buscará la página en el disco duro y la copiará en la RAM. Una vez que la página se copia en la RAM, devolverá el control a la aplicación.
Aquí, si la ubicación en la RAM ya está ocupada, el supervisor de paginación tendrá que eliminar una página de la RAM e intercambiarla con la página que se requiere. Existen varios algoritmos que se han diseñado para gestionar este intercambio de páginas de manera óptima.
Paliza
En algún momento desde que usas computadoras, te habrás encontrado con una situación en la que tu computadora se vuelve muy lenta, nerviosa o incluso se atasca temporalmente mientras el sistema sigue accediendo continuamente al disco duro. Puedes experimentar esto incluso después de haber asignado suficiente memoria virtual para el sistema.
Esto sucede debido a un fenómeno llamado paliza. La paliza ocurre cuando el sistema operativo intercambia continuamente páginas de memoria virtual y RAM para ejecutar un programa. Como resultado, tu computadora puede incluso bloquearse. La razón más probable de esta situación es que tienes demasiados programas abiertos al mismo tiempo como para que todos tengan espacio en la RAM.
Cuando se produce una paliza, sirve como una llamada de atención de que finalmente necesitas actualizar tu RAM física y dejar de depender de la memoria virtual. La buena noticia es que la actualización suele ser sencilla e incluso puedes utilizar dos memorias RAM diferentes juntas.
Memoria Virtual Segmentada
Entonces, ¿qué es la memoria virtual segmentada? Este concepto surge a menudo cuando se habla de memoria virtual paginada. El concepto en el caso de la memoria virtual segmentada nuevamente es tener un espacio de direcciones virtuales que sea mucho mayor que el espacio disponible en la RAM. La diferencia con la paginación es que el espacio de direcciones se divide en segmentos de tamaño variable que se asignan dinámicamente cuando se ejecuta una aplicación.
El código de la aplicación está segmentado y tiene varios módulos como pila, bibliotecas de programas, programa principal, subrutinas, etc. Esto fomenta el uso de segmentos en ocasiones para la memoria virtual en lugar de páginas. Los segmentos contienen módulos completos de una aplicación. Para mapear los segmentos en la memoria virtual con los segmentos en la RAM, se utilizan tablas de segmentos. El direccionamiento se realiza en forma de número de segmento y desplazamiento.
Este tipo de memoria virtual es ventajoso porque los segmentos están identificados específicamente para la aplicación. Cuando estos segmentos se almacenan en el disco duro, se pueden almacenar como archivos individuales en lugar de tener un solo archivo que almacene la memoria completa. También existe la posibilidad de utilizar la segmentación y la paginación juntas. Puede haber segmentos que consten de varias páginas.
Intercambio de espacio de direcciones
Los sistemas operativos también proporcionan la funcionalidad de intercambio de espacio de direcciones. Esto significa que todo el espacio de direcciones llega al lugar donde se almacenaron los segmentos y páginas en la RAM, se intercambia o se escribe en archivos de intercambio para su uso posterior.
Cuando se produce el intercambio, el sistema operativo vuelve a leer los archivos de intercambio en la RAM, pero en este caso, el sistema operativo no vuelve a leer las páginas que se habían paginado en el momento del intercambio.
Conclusión
Entonces, ¿qué es la memoria virtual? Básicamente, es una forma crítica en la que un sistema operativo gestiona la memoria para intentar ofrecer un rendimiento perfecto. El uso de memoria virtual en las computadoras es sumamente ventajoso y permite el buen funcionamiento de las aplicaciones, incluso cuando la memoria física (RAM) se vuelve insuficiente.
Se puede implementar de varias formas, pero en cualquier caso, es un concepto que forma parte integral de todo sistema operativo. En la competencia actual entre varias marcas de hardware y software, un funcionamiento fluido y óptimo es la clave para atraer a los clientes y ofrecer productos a un precio más alto, dada su ventaja competitiva.