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 para los usuarios de una gran (memoria principal". [4]

El sistema operativo de la computadora , utilizando una combinación de hardware y software, asigna las direcciones de memoria utilizadas 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 gestió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 así 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 compartida, la capacidad de compartir la memoria utilizada por las bibliotecas entre procesos, una mayor seguridad debido al aislamiento de la memoria y la posibilidad de usar conceptualmente más memoria de la que podría estar disponible físicamente, utilizando 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 kernel 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 la arquitectura de una computadora 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 el 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 notables excepciones para 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 cara. La introducción de la memoria virtual brindó la posibilidad de 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 memoria virtual para todos los sistemas. La capacidad adicional de proporcionar espacios de direcciones virtuales agregó otro nivel de seguridad y confiabilidad, haciendo que la memoria virtual sea 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 que incluyó una verdadera memoria virtual.