Vista de ángulo alto de programadores informáticos que utilizan una PC de escritorio en un escritorio de oficina

¿Qué es la memoria virtual?

Definición de memoria virtual

La memoria virtual, una técnica de gestión de memoria, permite que un sistema operativo (SO) sobrecargado cree una forma sintética de memoria que le permite operar más allá de sus limitaciones de memoria.

Esencialmente, cuando demasiados programas informáticos agotan la memoria, la memoria virtual permite que el SO reutilice la memoria de acceso aleatorio (RAM) para el uso de la unidad de disco duro.

Una analogía financiera rápida describe acertadamente la situación: piense en la memoria física de su computadora como el dinero en su cuenta corriente personal. Todo va bien y funciona correctamente hasta que se agotan los fondos. Una vez que toca fondo, su banco (que ofrece protección contra sobregiros en cuentas corrientes) emite un sobregiro (memoria virtual) que cubre temporalmente los gastos de la cuenta. 

Tal sobregiro contiene límites obvios. En primer lugar, un límite financiero controla el tamaño de los gastos que respaldará el banco. Además, un límite de tiempo rige cuánto tiempo 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 crucial tener en cuenta que no es una solución permanente sostenible. Está destinada a proporcionar una cantidad de memoria de emergencia. Más como un arreglo rápido que hace el trabajo, pero solo por el momento. 

La memoria virtual es una creación moderna de la computación; en su núcleo, simplemente actualiza el antiguo concepto de “pedir prestado a Pedro para pagar a Pablo”, en el que los recursos se desplazan de una fuente a otra.

Cómo funciona la memoria virtual

La unidad central de procesamiento (CPU) es el componente funcional principal de una computadora y usa 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. El disco duro de la CPU, alternativamente, 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 donde los datos se retienen temporalmente para un 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 dichos dispositivos de almacenamiento conservan las capacidades de almacenamiento incluso cuando la máquina está apagada y desconectada de su fuente de alimentación. Eso difiere de la RAM, al igual que varias otras variables de rendimiento. 

Si los dos tipos se reconstituyeran como automóviles, la RAM sería como un pequeño y llamativo automóvil deportivo: rápido, costoso y con apenas espacio suficiente para un conductor y un pasajero (pequeña capacidad). La memoria secundaria es más lenta y barata, como una minivan económica, con 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 unidad de almacenamiento y reproductor combinados, mientras que el disco duro en sí es la placa física dentro del HDD y donde se codifican los datos magnéticos.

En la mayoría de los casos, el uso de HDD fue reemplazado por unidades de estado sólido (SSD). Las SSD cumplen las mismas funciones, pero usanmemoria flash en forma de chips de memoria no volátil que no requieren el uso de piezas móviles. Las SSD se comparan favorablemente con las HDD en virtud de su robusta velocidad, perfil físico más delgado y menor consumo de energía.

La memoria virtual funciona convirtiendo temporalmente la RAM que se había utilizado antes, pero que desde entonces ha permanecido inactiva y sin usar durante algún tiempo. El SO 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.

Luego, el sistema operativo pone en servicio inmediato la RAM recién limpiada. La memoria adicional “prestada” de esa RAM ayuda a ejecutar los múltiples programas del usuario de la computadora sin ningún problema de rendimiento del sistema o ralentización percibida en la velocidad de operación.

IBM Power

Modernice y automatice con IBM Power

Joe Cropper, IBM Master Inventor, STSM, plataforma de nube híbrida IBM Power, le guía a través de una demostración de cómo IBM Power puede ayudarle a modernizar sus aplicaciones.

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

En cuanto a los datos, las páginas sirven como la moneda del reino y funcionan como el medio básico de intercambio. En términos de gestión de memoria virtual, los módulos que incorpora 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 suelen tener un tamaño fijo. Originalmente, las páginas pesaban de manera uniforme 4 KB y este tamaño ha sido tradicionalmente el estándar de la industria. Últimamente, los sistemas más modernos están empleando 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 4 KB u 8 KB, según la arquitectura seguida. Microsoft Windows, Linux y macOS de Apple están diseñados alrededor de un tamaño de página de 4 KB. El tamaño de la página de memoria virtual de UNIX se estructura de acuerdo con la arquitectura de hardware particular de cada sistema como un sistema de 32 o 64 bits (los sistemas UNIX suelen dedicar de 3 GB a 4 GB a cada proceso ejecutado).

Dentro de un SO en particular, todas las páginas generalmente se ajustarán a un tamaño de página. La excepción a esta regla implica la partición dinámica, que proporciona memoria de varios tamaños, según la demanda particular. Tener páginas del mismo tamaño facilita que un SO las gestione correctamente todas en conjunto.

Además, debido a su tamaño coincidente, es más fácil para el SO evitar la fragmentación externa, que tiene lugar cuando los bolsillos de memoria no utilizados se arraigan 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 SO puede mapear la memoria lógica de un proceso, esencialmente traduciéndola para 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 un tipo de contenedor para las páginas de memoria. El tamaño del marco de la página coincide con el de la propia página, ya sea 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 SO. Los programadores emplean tablas de páginas para rastrear y gestionar marcos de página y para servir como la 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 SO. 

Un número de página virtual (VPN) utiliza los primeros 20 bits de una dirección virtual para servir como identificador para el 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 SO, hasta las ubicaciones de bytes individuales.

Comprender el thrashing y las fallas de página

En un mundo perfecto, la RAM de una computadora sería suficiente para ejecutar programas. Sin embargo, la informática moderna se presta magníficamente a la multitarea y a la ejecución de múltiples programas simultáneamente, 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 SO. 

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 operativa suele tener un costo significativo: la velocidad operativa. La memoria virtual funciona a un ritmo más lento que la RAM física (porque las unidades de almacenamiento tardan más en acceder). Por lo tanto, cuanto 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 desaceleración del rendimiento se llama “thrashing”. Thrashing también se utiliza para referirse a un estado prolongado y disfuncional de operaciones en el que un sistema operativo dedica la mayor parte de su capacidad de procesamiento a mezclar 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 “falla de página”. Las fallas de página se producen cuando un programa en funcionamiento intenta tomar 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 controlador de fallas de página en el kernel del SO. El kernel del SO accede a los datos necesarios desde una fuente de almacenamiento secundaria. Luego, el SO 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 fallas de página, cada una clasificada en función de su gravedad percibida:

  • Falla menor de página: las fallas menores (o “blandas”) de página denotan 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 mapeado en la tabla de páginas de ese proceso o en la memoria compartida.
  • Falla de página principal: las fallas de página se vuelven importantes cuando una página deseada no se encuentra en la RAM en absoluto, lo que significa que la página debe cargarse desde un disco, lo que garantiza que el proceso de carga resultante tome más tiempo.
  • Falla de página no válida: la falla de página más grave intenta bloquear los movimientos que buscan acceder a la memoria ilegal. La acción resultante, una falla de segmentación, generalmente hace que el programa deje de funcionar.

Métodos de paginación de demanda

Una forma en que un sistema operativo agiliza el procesamiento es mediante paginación bajo demanda. Esta técnica evita la carga frontal de un programa completo, y en su lugar, el SO carga solo aquellas páginas necesarias en un momento determinado.

Por otro lado, el sistema puede ejecutar más programas de esta manera. El inconveniente puede ser una alta incidencia de fallas de página (que pueden llevar al thrashing) causadas por interrumpir constantemente las operaciones para recuperar páginas del almacenamiento.

Se utilizan diversas metodologías basadas en algoritmos junto con la paginación de demanda. Cada uno de estos algoritmos de reemplazo de páginas aborda el problema con un giro distinto: 

  • Algunos sistemas emplean un enfoque de uso menos reciente (LRU). Este algoritmo de desalojo de caché podría describirse como “úselo o piérdalo”. El LRU ayuda a optimizar el uso de la memoria limpiando cachés en función de cuánto tiempo han estado sin usar sus elementos. Si la memoria caché alcanza su capacidad máxima, el elemento que ha residido en la memoria caché durante más tiempo sin tener acceso a él se elimina de esa memoria caché. 
  • El método FIFO (primero en entrar, primero en salir) se refiere a la página más antigua que se cargó primero de forma secuencial. Si la caché se llena, esa página será la primera desalojada.
  • La segunda oportunidad, en realidad, cuestiona el método FIFO, comprobando que la página que está a punto de ser expulsada no se empleó recientemente de ninguna manera.
  • Como la palabra implica, Optimal denota una mejor situación posible en la que un algoritmo (muy talentoso) extrapola qué página tiene la menor probabilidad de ser utilizada en el futuro y la marca para su posterior eliminación. Debido a que Optimal requiere un pronóstico tan complicado, a menudo se considera más útil para debates teóricos y fines de planificación en lugar de 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 el almacenamiento, la protección y la orquestación para cargas de trabajo de IA, VM y contenedores.

Explorar IBM Storage Fusion
Soluciones de virtualización de IBM

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

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

Experiencia técnica integral 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, lo que permite 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