Vista desde un ángulo elevado de programadores informáticos utilizando un ordenador de sobremesa en un escritorio de oficina

¿Qué es la memoria virtual?

Memoria virtual, definida

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.

Cómo funciona la memoria virtual

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.

IBM Power

Modernice y automatice con IBM Power

Joe Cropper, IBM Master Inventor, STSM, IBM Power Hybrid Cloud plataforma en la nube híbrida, le muestra cómo IBM Power puede ayudarle a modernizar sus aplicaciones.

¿Qué es la lógica de las páginas?

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.

Comprender el thrashing y los fallos de página

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:

  • Fallo de página menor: los fallos de página menores (o "suaves") indican una situación en la que una página en particular se puede localizar en la memoria física, pero aún no se ha asignado en la tabla de páginas o la memoria compartida de ese proceso.
  • Fallo principal de página: los fallos de página se vuelven graves cuando una página deseada no está ubicada en la RAM en absoluto, lo que significa que la página debe cargarse desde un disco, asegurando que el proceso de carga resultante tarde más.
  • Error de página no válido: el rrror de página más grave intenta bloquear los mover que buscan acceder a una memoria ilegal. La acción resultante (un fallo de segmentación) normalmente provoca que el programa cese la operación.

Métodos de paginación bajo demanda

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: 

  • Algunos sistemas emplean el enfoque de uso menos reciente (LRU). Este algoritmo de desalojo de caché podría describirse como "úselo o piérdalo". LRU ayuda a optimizar el uso de la memoria limpiando las cachés en función del tiempo que sus elementos han permanecido sin utilizar. Si la caché alcanza su capacidad máxima, el elemento que haya permanecido en la caché durante más tiempo sin que se acceda a ella se elimina de esa caché. 
  • El primero en entrar, primero en salir (FIFO) se refiere a la página más antigua que se cargó antes de forma secuencial. Si la caché se llena, esa página será la primera que se desaloje.
  • La segunda oportunidad, en realidad, cuestiona el método FIFO, comprobando que la página que está a punto de ser expulsada no se haya utilizado recientemente de ninguna manera.
  • Como la palabra implica, Optimal denota la mejor situación posible en la que un algoritmo (con mucho talento) extrapola qué página tiene menos probabilidades de utilizarse en el futuro y la marca para su posterior eliminación. Dado que Optimal requiere un pronóstico tan complicado, a menudo se considera más útil para debates teóricos y fines de planificación que para la implementación real.
Phill Powell

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Soluciones relacionadas
IBM Storage Fusion

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.

Explorar IBM Storage Fusion
Soluciones de virtualización de IBM

Optimice y escale las cargas de trabajo tanto en entornos virtuales como físicos con una virtualización eficiente y flexible.

Explore las soluciones de virtualización de IBM
Servicios de infraestructura de IBM

Amplios conocimientos técnicos para sus servidores y almacenamiento de IBM Systems.

Explore los servicios de infraestructura de IBM
Dé el siguiente paso

Potencie su infraestructura con servicios de datos unificados y virtualización, permitiendo cargas de trabajo elásticas y de alto rendimiento en entornos híbridos.

  1. Descubra IBM® Storage Fusion
  2. Explore las soluciones de virtualización de IBM