Memoria virtual

El sistema de memoria virtual implementa todas las funciones anteriores de forma integrada.

En un computador con memoria virtual (MV) las direcciones de los programas (generadas por la CPU) hacen referencia a un espacio mayor que el espacio físico realmente disponible en la memoria principal o memoria física (MF).

Los programas operan virtualmente con un tamaño físico de memoria principal mucho mayor que el realmente disponible. En estas máquinas hay que diferenciar, pues, entre el espacio de direcciones virtuales generado por la CPU y el espacio de direcciones físicas o reales existentes en memoria principal y determinado por el número de líneas del bus de direcciones.

El espacio virtual se soporta sobre un disco con la ayuda de un mecanismo de traducción que genera la dirección física de memoria principal a partir de la virtual. En la siguiente figura hemos representado el mecanismo de traducción de direcciones virtuales (DV) a direcciones físicas (DF).

Memoria virtual

Tanto la memoria principal como la memoria del disco se dividen en páginas de igual tamaño. El número de páginas de la memoria virtual en general es mayor que el número de páginas disponibles de la memoria física. Por este motivo, en cada momento sólo las copias de un conjunto de páginas virtuales del programa residen en la memoria física.

Este conjunto recibe el nombre de conjunto de trabajo o conjunto activo, y resulta relativamente estable a lo largo del tiempo, debido a la localidad referencial que manifiestan los programas. Esta es la clave del buen funcionamiento de la memoria virtual, al igual que ocurría con la memoria cache.

Los bits de una DV se consideran divididos en dos campos, el número de página virtual (NPV) los más significativos, y el desplazamiento dentro de la página (DP), los menos significativos.

El número de bits del campo DP lo determina el tamaño de página (nº de bits de DP = log2 tamaño de página). El número de bits del campo NPV lo determina el número de páginas virtuales (nº de bits de NPV = log2 nº de páginas virtuales).

Los bits de una DF se consideran divididos también en dos campos, el número de página física (NPF) los más significativos, y el desplazamiento dentro de la página (DP), los menos significativos. El número de bits del campo DP de una DF es el mismo que el de una DV, puesto que las páginas tienen igual tamaño en MV y MF. El número de bits del campo NPF lo determina el número de páginas físicas de MF (nº de bits de NPF = log2 nº de páginas físicas).

Las DVs generadas por la CPU se traducen a DFs con la ayuda de una Tabla de Páginas (TP). Esta tabla contiene tantas entradas como páginas existen en la MV, y la posición en la tabla de una entrada correspondiente a una página virtual concreta coincide con su NPV. Cada entrada contiene un primer campo de bits de control, de los que por el momento haremos referencia tan sólo a uno, el bit de presencia (P).

Si este bit está activo (por ejemplo a 1) significa que la página virtual correspondiente a esa entrada está presente en la MF, y en este caso el segundo campo de la entrada contiene el correspondiente NPF. Si el bit P está inactivo (por ejemplo a 0) significa que la correspondiente página virtual no está en la MF, sino en el disco.

En este caso el segundo campo de la entrada apunta a la dirección del disco donde se encuentra la página virtual. Como en un momento se pueden estar ejecutando más de un programa (multiprogramación o multiusuario) existirán más de una TP, una para cada programa (proceso) activo. Por ello, el acceso a la TP se realiza con la ayuda de un registro base de la tabla de páginas (RBTP) asociado a cada programa.

Para traducir una DV en DF se busca en la correspondiente entrada de la TP. Si el bit P de esta entrada vale 1, se dice que ha ocurrido un acierto de página, y se lee el contenido del segundo campo que en los aciertos constituye el NPF en la memoria principal.

La DF completa se obtiene concatenando los bits de NPF con los de DP de la DV. Si el bit P de la entrada de la TP vale 0, se dice que ha ocurrido un fallo de página, lo que significa que la página virtual donde se ubica la DV que se está traduciendo, no se encuentra en MF. En este caso el fallo de página se sirve buscado la página en el disco, ubicándola en MF y actualizando la correspondiente entrada de la TP.

Fuente: Estructura de Computadores, Facultad de Informática, UCM