Memoria virtual


En informática , la memoria virtual o el almacenamiento virtual [b] es una técnica de gestión de la memoria que proporciona una "abstracción idealizada de los recursos de almacenamiento que están realmente disponibles en una máquina determinada" [3] que "crea la ilusión en los usuarios de una gran cantidad de recursos". (memoria principal". [4]

El sistema operativo de la computadora , usando una combinación de hardware y software, mapea las direcciones de memoria usadas por un programa, llamadas direcciones virtuales , en direcciones físicas en la memoria de la computadora . El almacenamiento principal , visto por un proceso o tarea, aparece como un espacio de direcciones contiguo o una colección de segmentos contiguos . El sistema operativo gestiona los espacios de direcciones virtuales y la asignación de memoria real a la memoria virtual. Hardware de traducción de direcciones en la CPU, a menudo denominado unidad de administración de memoria(MMU), traduce automáticamente direcciones virtuales a direcciones físicas. El software dentro del sistema operativo puede ampliar estas capacidades, utilizando, por ejemplo, almacenamiento en disco , para proporcionar un espacio de direcciones virtuales que puede exceder la capacidad de la memoria real y, por lo tanto, hacer referencia a más memoria de la que está físicamente presente en la computadora.

Los principales beneficios de la memoria virtual incluyen liberar a las aplicaciones de tener que administrar un espacio de memoria compartido, la capacidad de compartir la memoria utilizada por las bibliotecas entre procesos, mayor seguridad debido al aislamiento de la memoria y poder usar conceptualmente más memoria de la que podría estar disponible físicamente, usando la técnica de paginación o segmentación.

La memoria virtual facilita la programación de aplicaciones al ocultar la fragmentación de la memoria física; delegando al núcleo la carga de administrar la jerarquía de la memoria (eliminando la necesidad de que el programa maneje superposiciones explícitamente); y, cuando cada proceso se ejecuta en su propio espacio de direcciones dedicado, obviando la necesidad de reubicar el código del programa o acceder a la memoria con direccionamiento relativo .

La memoria virtual es una parte integral de una arquitectura informática moderna ; Las implementaciones generalmente requieren soporte de hardware, generalmente en forma de una unidad de administración de memoria integrada en la CPU . Si bien no es necesario, los emuladores y las máquinas virtuales pueden emplear soporte de hardware para aumentar el rendimiento de sus implementaciones de memoria virtual. [5] Los sistemas operativos más antiguos, como los de los mainframes de la década de 1960 y los de las computadoras personales de principios a mediados de la década de 1980 (por ejemplo, DOS ), [6] generalmente no tienen funcionalidad de memoria virtual, [ dudoso ] aunque las excepciones notables para los mainframes de la década de 1960 incluyen:

Durante la década de 1960 y principios de la de 1970, la memoria de la computadora era muy costosa. La introducción de la memoria virtual proporcionó una capacidad para que los sistemas de software con grandes demandas de memoria se ejecutaran en computadoras con menos memoria real. Los ahorros de esto proporcionaron un fuerte incentivo para cambiar a la memoria virtual para todos los sistemas. La capacidad adicional de proporcionar espacios de direcciones virtuales agregó otro nivel de seguridad y confiabilidad, lo que hizo que la memoria virtual fuera aún más atractiva para el mercado.


La memoria virtual combina RAM activa y memoria inactiva en DASD [a] para formar una amplia gama de direcciones contiguas.
La computadora Atlas de la Universidad de Manchester fue la primera computadora en presentar una verdadera memoria virtual.