Memoria virtual

“La memoria virtual es un concepto que permite al software usar más memoria principal” y permitir la ejecución de procesos que pueden no estar completamente en memoria.

La mayoría de las computadoras tienen cuatro tipos de memoria: registros en la CPU, la memoria cache (dentro y fuera de la CPU), la memoria física (generalmente en forma de RAM, donde la CPU puede escribir y leer directa y razonablemente rápido) y el disco duro que es mucho más lento, pero más grande.

“La memoria virtual es la separación de la memoria lógica del usuario y de la memoria física [del equipo]. Esta separación permite ofrecer a los programadores una memoria virtual extremadamente grande cuando sólo se dispone de una memoria física más pequeña”. Sin embargo, la memoria virtual no es fácil de implementar y puede reducir considerablemente el rendimiento si no se emplea con cuidado.

La memoria virtual se implementa comúnmente mediante la paginación por demanda. También puede implementarse en un sistema con segmentación. Varios sistemas proporcionan un esquema de segmentación con paginación, en donde los segmentos descomponen las páginas. Así la visión del usuario es la segmentación, pero el sistema operativo puede implementar esta visión con paginación por demanda. La segmentación por demanda también puede proporcionar la memoria virtual.

En un sistema de paginación por demanda los procesos residen en la memoria secundaria (generalmente un disco). Cuando queremos ejecutar un proceso, lo intercambiamos a la memoria. Sin embargo, en lugar de intercambiar todo el proceso, empleamos un intercambiador perezoso. Un intercambiador perezoso nunca intercambia una página en la memoria a menos que dicha página se vaya a necesitar.

Fuente: Apuntes de la materia Sistemas Operativos Multiusuario de la FCA – UNAM