La memoria virtual, una técnica de gestión de memoria, permite a un sistema operativo (SO) sobrecargado crear una forma sintética de memoria que le permite funcionar más allá de sus limitaciones de memoria.
Básicamente, cuando demasiados programas informáticos agotan la memoria, la memoria virtual permite al sistema operativo reutilizar la memoria de acceso aleatorio (RAM) para su uso en el disco duro.
Una rápida analogía financiera describe muy bien la situación: imagina que la memoria física de su ordenador es el dinero de su cuenta corriente personal. Todo va bien y funciona correctamente hasta que se agotan los fondos. Una vez que se llega al límite, su banco (que ofrece protección contra descubiertos en las cuentas corrientes) concede un descubierto (memoria virtual) que cubre temporalmente los gastos de la cuenta.
Un sobregiro de este tipo contiene límites obvios. En primer lugar, un límite financiero controla el tamaño de los gastos que el banco apoyará. Además, hay un límite de tiempo que rige el tiempo que su institución financiera permitirá que la situación continúe sin una afluencia de capital de emergencia en su cuenta.
La memoria virtual es un componente esencial de los sistemas informáticos y permite un funcionamiento más fluido en las operaciones generales, pero es fundamental señalar que no es una solución sostenible y permanente. Su objetivo es proporcionar una cantidad de memoria de emergencia. Es más bien una solución rápida que, en cierto modo, cumple su función, pero solo de forma temporal.
La memoria virtual es una creación moderna de la informática; en esencia, no es más que una actualización del antiguo concepto de "quitarle a Pedro para dárselo a Pablo", en el que los recursos se transfieren de una fuente a otra.
Manténgase al día sobre las tendencias más importantes e intrigantes del sector en materia de IA, automatización, datos y mucho más con el boletín Think. Consulte la Declaración de privacidad de IBM.
La unidad central de procesamiento (CPU) es el componente funcional principal de un ordenador y utiliza diferentes formas de memoria. La RAM es una forma de uso de memoria más rápida y de acceso más rápido, pero no ilimitada en tamaño. La unidad de disco duro de la CPU, por su parte, ofrece mucho espacio de almacenamiento en disco, pero a tiempos de acceso más lentos.
La memoria real está instalada en la CPU. La memoria real se refiere al hardware de RAM en el que los datos se conservan temporalmente para su uso inmediato y activo. (Los programadores también se refieren a la memoria real como memoria física o memoria principal.) Por el contrario, la memoria secundaria se considera no volátil, lo que significa que estos dispositivos de almacenamiento conservan su capacidad de almacenamiento incluso cuando el equipo está apagado y desconectado de la fuente de alimentación. Eso difiere de la RAM, al igual que otras variables de rendimiento.
Si los dos tipos se reconstituyeran como automóviles, la RAM sería como un pequeño y llamativo coche deportivo: rápido, costoso y con apenas espacio suficiente para un controlador y un pasajero (pequeña capacidad). La memoria secundaria es más lenta y más barata, como una monovolumen económica, y tiene una capacidad considerablemente mayor que la que ofrece la memoria primaria.
El disco duro, también llamado unidad de disco duro (HDD), funciona como una combinación de unidad de almacenamiento y reproductor, mientras que el propio disco duro es el plato físico dentro del HDD y donde se codifican los datos magnéticos.
En la mayoría de los casos, el uso del disco duro ha sido sustituido por la unidad de estado sólido (SSD). El SSD cumple las mismas funciones pero utiliza memoria flash en forma de chips de memoria no volátil que no requieren el uso de piezas móviles. Las SSD salen ganando frente a las HDD gracias a su gran velocidad, su diseño más fino y su menor consumo energético.
La memoria virtual funciona convirtiendo temporalmente la RAM que se había utilizado anteriormente, pero que desde entonces ha permanecido inactiva y sin utilizar durante algún tiempo. El sistema operativo extrae los datos de esa RAM apenas utilizada y los coloca en un archivo de intercambio (o archivo de paginación) en la unidad de disco duro.
A continuación, el sistema operativo pone en funcionamiento de inmediato la memoria RAM recién limpiada. La memoria adicional "tomada prestada" de esa RAM ayuda a ejecutar los múltiples programas del usuario del ordenador sin que se produzcan fallos en el rendimiento del sistema ni ralentizaciones percibidas en la velocidad de funcionamiento.
En lo que respecta a los datos, las páginas son la moneda de cambio y funcionan como el medio básico de intercambio. En términos de gestión de la memoria virtual, los módulos que utiliza son páginas, la unidad de datos más pequeña. Las páginas son bloques contiguos (adyacentes) de espacio de dirección virtual.
Las páginas vienen en un tamaño fijo, generalmente. Originalmente, las páginas pesaban uniformemente 4 KB y este tamaño ha sido tradicionalmente el estándar del sector. Últimamente, los sistemas más modernos utilizan un tamaño fijo considerablemente mayor, incluidos tamaños de hasta 2 MB o 1 GB o incluso más.
En la memoria virtual, la mayoría de las páginas tienen un tamaño de 4 KB u 8 KB, dependiendo de la arquitectura utilizada. Microsoft Windows, Linux y macOS de Apple están todos diseñados alrededor de un tamaño de página de 4 KB. El tamaño de página de la memoria virtual de UNIX se estructura de acuerdo con la arquitectura de hardware particular de cada sistema, ya sea como un sistema de 32 bits o de 64 bits. (Los sistemas UNIX suelen dedicar de 3 GB a 4 GB a cada proceso ejecutado).
Dentro de un sistema operativo concreto, todas las páginas suelen ajustarse a un mismo tamaño de página. La excepción a esta regla es el particionamiento dinámico, que almacena memoria de varios tamaños, según la demanda particular. Tener páginas del mismo tamaño facilita que un sistema operativo las gestione correctamente todas de forma coordinada.
Además, gracias a que tienen el mismo tamaño, al sistema operativo le resulta más fácil evitar la fragmentación externa, que se produce cuando se forman espacios de memoria no utilizada entre los bloques de memoria asignados. El resultado: muy poca memoria disponible para asignar en un único fragmento útil.
Mediante el uso de páginas, un sistema operativo puede mapear la memoria lógica de un proceso, traduciéndola esencialmente a memoria física no contigua en forma de marcos de página. Los marcos de página son bloques de memoria física (RAM) que un sistema operativo utiliza como tipo de contenedor para las páginas de memoria. El tamaño del marco de página coincide con el de la propia página, ya sea de 4 KB o un tamaño mayor.
Una CPU crea direcciones de memoria virtual, que actúan como una referencia de ubicación de memoria que será utilizada por los procesos de software que se ejecutan en ese sistema operativo. Los programadores utilizan tablas de páginas para rastrear y gestionar los marcos de las páginas y como estructura de datos principal. Se utiliza una entrada en la tabla de páginas para vincular una dirección virtual a una dirección física dentro del sistema operativo.
Un número de página virtual (VPN) utiliza los primeros 20 bits de una dirección virtual para servir como identificador del espacio de direcciones virtuales dentro del espacio de memoria virtual de ese proceso informático. El número de página identifica la página para que la unidad de gestión de memoria (MMU) pueda recuperarla de un marco de memoria física o del disco.
Mientras tanto, la parte restante de la dirección sirve como desplazamiento de página, que especifica la ubicación física exacta de esa página dentro del sistema operativo, hasta las ubicaciones de bytes individuales.
En un mundo perfecto, la RAM de un ordenador sería suficiente para ejecutar programas. Sin embargo, la informática moderna se presta magníficamente a la multitarea y a operar varios programas al mismo tiempo, lo que puede confundir fácilmente el proceso de asignación de memoria. Esta mayor demanda impone habitualmente exigencias excesivas a la memoria disponible del sistema operativo.
Cuando el espacio disponible en disco se agota por completo, la memoria virtual interviene para mantener sus programas en ejecución. Sin embargo, esta extensión de operación suele tener un coste significativo: la velocidad de funcionamiento. La memoria virtual funciona a un ritmo más lento que la RAM física (porque se tarda más en acceder a las unidades de almacenamiento). Por lo tanto, cuanta más memoria virtual agote un sistema operativo, más probable es que un operador experimente una caída en el rendimiento.
Esta forma de ralentización del rendimiento se denomina "thrashing". El término thrashing también se utiliza para referirse a un estado de funcionamiento prolongado y disfuncional en el que un sistema operativo dedica la mayor parte de su capacidad de procesamiento a mover datos dentro y fuera de la memoria en lugar de ejecutar código.
Otro tipo de fenómeno que ocurre con regularidad se conoce como “fallo de página”. Los fallos de página se producen cuando un programa en funcionamiento intenta capturar una página de datos que no está asignada en su RAM física en ese momento.
Esto provoca una interrupción de hardware, mientras se activa el gestor de fallos de página en el núcleo del sistema operativo. El kernel del sistema operativo accede a los datos necesarios desde una fuente de almacenamiento secundaria. Luego, el sistema operativo actualiza la tabla de páginas que rastrea todas las direcciones virtuales y sus direcciones físicas correspondientes antes de volver a la operación normal del programa.
Existen varias formas de fallos de página, cada una clasificada en función de su gravedad percibida:
Una de las formas en que un sistema operativo optimiza el procesamiento es mediante la paginación bajo demanda. Esta técnica renuncia a la carga frontal de un programa completo y, en su lugar, el sistema operativo carga solo las páginas necesarias en un momento determinado.
Por otro lado, el sistema puede ejecutar más programas de esta manera. La desventaja puede ser una elevada incidencia de fallos de página (que podrían provocar un thrashing) provocados por la interrupción constante del funcionamiento del programa para recuperar páginas del almacenamiento.
Se utilizan varias metodologías basadas en algoritmos junto con la paginación por demanda. Cada uno de estos algoritmos de reemplazo de páginas aborda el problema con un giro distinto:
Desbloquee operaciones más rápidas y resilientes unificando almacenamiento, protección y orquestación para cargas de trabajo de IA, máquinas virtuales y contenedores.
Optimice y escale las cargas de trabajo tanto en entornos virtuales como físicos con una virtualización eficiente y flexible.
Amplios conocimientos técnicos para sus servidores y almacenamiento de IBM Systems.