Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 7: Memoria Virtual
Tema 7: Memoria Virtual
Estudiar el funcionamiento de
sustitucin de segmentos.
Introducir la memoria virtual con segmentos paginados como una alternativa de sntesis de
las dos anteriores
Contenido:
1. Gestin de memoria
2. Memoria virtual
3. Memoria virtual segmentada
4. Memoria con segmentos paginados
5. Ejemplo de sistema de memoria virtual: procesador Pentium II
1.
Gestin de memoria
Con este mecanismo se puede superar la limitacin del tamao de la memoria principal, pero
tiene el inconveniente de hacer depender el programa de las dimensiones concretas de la memoria
del computador para el que se codifica, obligando a revisar la divisin modular del programa
cuando cambie la configuracin de la mquina.
Memoria principal
Disco
M1
M2
M1
M3
M4
M2
e/s
1.2. Reubicacin
En sistemas con multiprogramacin se necesita que varios programas residan
simultneamente en memoria. El tiempo de CPU se va distribuyendo entre ellos de acuerdo a una
poltica de prioridades determinada. La ubicacin en memoria de los programas no se conoce en
tiempo de compilacin, por lo que no se pueden generar direcciones absolutas. Para conseguir una
asignacin dinmica de memoria en tiempo de ejecucin se utilizan registros de reubicacin. La
direccin efectiva se obtiene sumando a la direccin generada por el compilador el contenido del
registro de reubicacin asignado al programa.
1.3. Paginacin
La paginacin tambin surgi de la necesidad de mantener ms de un programa residente en
memoria cuando la capacidad de sta es inferior a la suma de los tamaos de los programas. Se
trata de un mecanismo automtico de solapamiento mltiple que practica el Sistema Operativo
para hacer posible la multiprogramacin. El espacio de memoria principal se divide en bloques de
tamao fijo denominados pginas. Los programas se dividen tambin en pginas y residen en el
disco. El Sistema Operativo se encarga de asignar pginas fsicas a los programas en ejecucin
(multiprogramacin). De esta forma el tiempo de CPU puede distribuirse entre los programas
residentes.
1.4. Proteccin
Un papel importante de la gestin de memoria es la proteccin. Si varios programas
comparten la memoria principal debe asegurarse que ninguno de ellos pueda modificar el espacio
de memoria de los dems. Como casi todos los lenguajes permiten el uso de punteros dinmicos, los
test en tiempo de compilacin no son suficientes para garantizar la proteccin. Esta debe
mantenerla en tiempo de ejecucin el sistema de gestin de memoria (MMU).
1.5. Comparticin
Esta funcin parece estar en contradiccin con la anterior. Sin embargo, con frecuencia los
programas de un sistema multiprogramado deben poder compartir y actualizar informacin, por
ejemplo, un sistema de bases de datos. Adems, no es necesario tener varias copias de una rutina si
se permite que todos los programas accedan a una misma copia.
2.
Memoria virtual
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 fsico realmente disponible en la
memoria principal o memoria fsica (MF).
Los programas operan virtualmente con un tamao fsico de memoria principal mucho mayor
que el realmente disponible. En estas mquinas hay que diferenciar, pues, entre el espacio de
direcciones virtuales generado por la CPU y el espacio de direcciones fsicas o reales existentes en
memoria principal y determinado por el nmero de lneas del bus de direcciones.
El espacio virtual se soporta sobre un disco con la ayuda de un mecanismo de traduccin que
genera la direccin fsica de memoria principal a partir de la virtual. En la siguiente figura hemos
representado el mecanismo de traduccin de direcciones virtuales (DV) a direcciones fsicas (DF).
CPU
Nmero de Pgina Virtual (NPV)
v
Memoria virtual
Pgina 0
Pgina 1
Sumador
Pgina 2
Tabla de Pginas
Pgina 3
Pgina 4
control pv 0
control pv 1
control pv 2
pag. f sica 1
ACIERTO
Pgina 5
2v
control pv v-2
pag. f sica 0
control pv v-1
pag. en disco
w
Memoria fsica
pginas
FALLO
Pgina 0
Pgina 1
pv v-1
Pgina 2
2w
Pgina2
v-3
Pgina2
v-2
Pgina2 v-1
pginas
Memoria de Disco
Pgina f-2
Pgina f-1
Tanto la memoria principal como la memoria del disco se dividen en pginas de igual
tamao. El nmero de pginas de la memoria virtual en general es mayor que el nmero de
pginas disponibles de la memoria fsica. Por este motivo, en cada momento slo las copias de un
conjunto de pginas virtuales del programa residen en la memoria fsica. 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 ocurra con la memoria cache.
Los bits de una DV se consideran divididos en dos campos, el nmero de pgina virtual
(NPV) los ms significativos, y el desplazamiento dentro de la pgina (DP), los menos significativos.
El nmero de bits del campo DP lo determina el tamao de pgina (n de bits de DP = log2 tamao
3
de pgina). El nmero de bits del campo NPV lo determina el nmero de pginas virtuales (n de
bits de NPV = log2 n de pginas virtuales). Los bits de una DF se consideran divididos tambin en
dos campos, el nmero de pgina fsica (NPF) los ms significativos, y el desplazamiento dentro de
la pgina (DP), los menos significativos. El nmero de bits del campo DP de una DF es el mismo
que el de una DV, puesto que las pginas tienen igual tamao en MV y MF. El nmero de bits del
campo NPF lo determina el nmero de pginas fsicas de MF (n de bits de NPF = log2 n de
pginas fsicas).
Las DVs generadas por la CPU se traducen a DFs con la ayuda de una Tabla de Pginas
(TP). Esta tabla contiene en principio tantas entradas como pginas existen en la MV, y la posicin
en la tabla de una entrada correspondiente a una pgina 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 slo a uno, el bit de presencia (P). Si este bit est activo (por ejemplo a 1) significa
que la pgina 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 pgina virtual no est en la MF, sino en el disco. En
este caso el segundo campo de la entrada apunta a la direccin del disco donde se encuentra la
pgina virtual. Como en un momento se pueden estar ejecutando ms de un programa
(multiprogramacin o multiusuario) existirn ms 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 pginas
(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 pgina, 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 pgina, lo que significa que la pgina virtual donde se ubica la DV
que se est traduciendo, no se encuentra en MF. En este caso el fallo de pgina se sirve buscado la
pgina en el disco, ubicndola en MF y actualizando la correspondiente entrada de la TP.
Cada programa (proceso) puede ocupar una gran cantidad de memoria virtual. Por ejemplo,
en la arquitectura VAX, cada proceso puede tener hasta 231 = 2 GBytes de memoria virtual.
Utilizando pginas de 29 = 512 bytes, eso significa que se necesitan tablas de pginas de 222
entradas por proceso. La cantidad de memoria dedicada slo a tablas de pginas podra ser
inaceptablemente alta.
Para solucionar este problema, la mayora de los esquemas de memoria virtual almacenan
las tablas de pginas en la propia memoria virtual, en lugar de utilizar la memoria fsica. Esto
significa que la tabla de pginas tambin est sujeta a paginacin, igual que el resto de los
programas y datos. Cuando un programa se est ejecutando, al menos una parte de su tabla de
pginas, incluyendo el elemento correspondiente a la pgina actualmente en ejecucin, debe estar
en la memoria principal.
2.1.1.
Algunos procesadores hacen uso de un esquema de dos o ms niveles para organizar las
tablas de pginas. En este esquema, hay una pgina de directorio de nivel 1 en la que cada
elemento apunta a una tabla de pginas de nivel 2, y as sucesivamente. En la siguiente figura se
muestra una TP organizada en tres niveles: N1, N2 y N3. Tpicamente, la longitud mxima de una
tabla de pginas se restringe al tamao de una pgina.
Nivel 1
Direccin Virtual
Nivel 2
Nivel 3
Despla. Pgina
RBP
Tabla Paginas N1
+
Entrada TP
Tabla Paginas N2
Entrada TP
Tabla Paginas N3
Entrada TP
Direccin Fsica
Nmero de pgina fsica
Despla. Pgina
2.1.2.
Esta alternativa elimina de la TP las entradas que no apuntan a una pgina de la memoria
fsica, reduciendo las entradas a nmero igual al de pginas de la memoria fsica. El campo NPV de
la DV se hace corresponder sobre una tabla de dispersin (tabla hash) mediante una funcin de
dispersin sencilla. La tabla de dispersin incluye un puntero a una TP invertida, que contiene los
elementos de la TP. Existe un elemento en la tabla de dispersin y en la tabla de pginas invertida
para cada pgina de memoria fsica, en vez de para cada pgina de memoria virtual.
Se necesita, pues, una zona fija de la memoria fsica para las tablas, independientemente del
nmero de programas o pginas virtuales que se admitan. Puesto que ms de una DV puede
apuntar al mismo elemento de la pgina de dispersin, se utiliza una tcnica de encadenamiento
para solucionar este problema. La tcnica de dispersin da lugar a cadenas usualmente cortas, con
uno o dos elementos. Esta alternativa de TP se utiliza en el PowerPC.
Direccin Virtual
N Pgina Virtual
Desplazamiento
Tabla de Dispersin
Tabla de Pginas
Funcin de
Dispersin
NPV
NPF
Enlace
NPF
Direccin Fsica
N Pgina Fsica
Desplazamiento
2.1.3.
En principio toda referencia a memoria virtual requiere dos accesos a la memoria fsica: uno
para acceder al elemento de la TP, y otro para acceder a la memoria fsica. Por tanto, un esquema
de memoria virtual como el que acabamos de estudiar duplicara el tiempo de acceso a memoria.
Para evitar este inconveniente los esquemas de memoria virtual utilizan una cache especial
para los elementos de la TP, llamada usualmente buffer de traduccin anticipada (TLB,
Translation Lookaside Buffer).
El TLB funciona lo mismo que una memoria cache, y contiene aquellas entradas de la TP a
las que se han accedido recientemente. Por el principio de localidad temporal, la mayora de las
referencias a memoria correspondern a posiciones incluidas en pginas recientemente utilizadas.
Por ese motivo, la mayora de las referencias involucran a entradas de la TP presentes en el TLB.
Normalmente el TLB utiliza una correspondencia totalmente asociativa, por lo que una entrada de
la TP puede ubicarse en cualquier posicin del TLB
RWX
NPV
DP
RWX
NPV
Memoria
Asociativa
NPF
Fallo de pgina
Violacin de acceso
NPF
DP
Direccin Fsica
DP
TLB
NPV
NPF
Fallo de pgina
N PF
DP
Memoria cache
etiqueta
lnea
palabra
Comparador
etiqueta
datos
MUX
acierto
fallo
Esto significa que el tamao de la cach viene impuesto por el tamao de la pgina y el grado
de asociatividad. Por ejemplo, si tenemos un tamao de pgina de 1K, el DP tendr 10 bits. Si el
nmero de palabras por bloque es 8 (3 bits de palabra) quedarn 7 bits para el campo de conjunto
de la direccin fsica de la cache. Si la asociatividad fuese 1 (correspondencia directa) con esos 7
bits podramos distinguir tan slo entre 128 marcos de bloque o lneas de la cach, lo que
impondra un tamao de cach de 128 x 8 = 1024 = 1K.
Para aumentar este tamao tendramos que aumentar la asociatividad. Por ejemplo, si el
grado de asociatividad es 2, el tamao de la cach sera de 2K. Cuando aumenta el grado de
asociatividad, tambin aumentan las comparaciones que debemos realizar con la etiqueta obtenida
del TLB, ya que se deben comparar con ella todas las etiquetas del conjunto de la cache (tantas
como vas)
2.2.2.
RWX
N PV
DP
(TLB)
RWX
PID
NPV
NPF
Fallo de pgina
=
Violacin de acceso
N PF
DP
Direccin Fsica
Prebsqueda
Aleatoria
Elige una pgina aleatoriamente, sin mirar el nmero de referencias o el tiempo que la
pgina lleva en memoria principal. En general esta poltica tiene unos resultados pobres, excepto
en entornos donde existe poca localidad como en las bases de datos.
2.5.2.
Se sustituye la pgina que lleva ms tiempo residente en memoria. Utiliza una cola FIFO y
hace un uso pobre de la localidad temporal
2.5.3.
Es una mejora de la FIFO en la que tambin se chequea si una pgina ha sido referenciada,
haciendo mejor uso de la localidad temporal. Para implementar esta poltica se mantiene una cola
como en la FIFO, pero circular, con un puntero a la pgina candidata a ser sustituida, y un flag de
uso asociado a cada pgina. El flag de uso se pone a 1 cuando la pgina es referenciada con
posterioridad a su carga inicial en la memoria fsica. Al producirse un fallo de pgina se examina el
flag de uso de la pgina sealada por el puntero de la FIFO. Si est a 0 la correspondiente pgina
es sustituida, pero si vale 1 se borra el flag de uso (se pone a 0) y se avanza el puntero una posicin,
continuando este procedimiento hasta encontrar una pgina con el flag de uso a 0.
2.5.4.
Optima (MIN)
Se trata de la mejor poltica posible: sustituir la pgina que vaya a tardar ms tiempo en ser
referenciada en el futuro (Belady). Aunque esta poltica tiene el mnimo nmero posible de fallos de
pgina (de aqu el nombre de poltica MIN), no se puede llevar a la prctica en tiempo real, y se
utiliza como una referencia terica para medir la eficiencia de otras polticas en entornos
experimentales.
Veamos el comportamiento de cada una de las polticas frente al siguiente perfil de
referencias a pginas: 2, 3, 2, 1, 5, 2, 4, 5, 3, 2, 5, 2:
Como vemos, sobre la segunda memoria fsica (que es de mayor tamao que la primera) se
produce un fallo de pgina ms que sobre la primera, para el mismo perfil de referencias. Este
comportamiento es el que se denomina anomala Bealy.
3.
Direccin Virtual
Nmero Segmento(NS)
Desplaz. (DP)
P = bit de presencia
L = Longitud del segmento
Desplaz.(DP)
Direccin Fsica
11
La lista de huecos se mantiene ordenada en orden creciente de las direcciones iniciales de los
huecos, y se ubica el segmento en el primer hueco con capacidad suficiente para albergarlo. Con
esta poltica, cuando transcurre un cierto tiempo, se acumulan un nmero elevado de huecos
pequeos prximos a la cabeza de la lista, penalizando las bsquedas. Esto se puede evitar
adelantando cclicamente, despus de cada bsqueda un hueco la posicin inicial de la lista.
4.
Tipo acceso
RWX
Direccin Virtual
N Segmento
N Pgina
DP
Tabla de segmentos
Reg. Tabla Segmentos
P NPF
P = bit de presencia
L = Longitud del segmento
NPF
DP
Direccin Fsica
12
5.
13
32
Desplazamiento
Direccin
Virtual
15
Nmero de segmento
TI RPL
Selector de segmento
Cada elemento de la tabla de segmentos consta de 64 bits, como muestra la siguiente figura:
32
Base(8bits)
Tipo
Base(8 bits)
Lmite (16 bits)
Descriptor
de
segmento
Base ( 32 bits): direccin de comienzo del segmento dentro del espacio lineal de direcciones
Lmite ( 20 bits): tamao del segmento
Nivel de privilegio(DPL) (2 bits)
Bit de segmento presente(P) ( 1 bit): indica si el segmento est disponible en memoria
principal
Bit S (1 bit): determina si el segmento es del sistema
Tipo (4 bits) determina el tipo de segmento e indica los atributos de acceso
Bit de granularidad (G) (1 bit): indica si el campo lmite se interpreta en unidades Bytes o
4KBytes
Bit D/B (1 bit): indica si los operandos y modos de direccionamiento son de 16 32 bits (en
segmentos de cdigo)
en la tabla de pginas. El uso de pginas de 4 MBytes reduce las necesidades de memoria. Con
pginas de 4 KBytes, una memoria principal de 4 GBytes necesita del orden de 4 MBytes de
memoria slo para la tabla de pginas. Con pginas de 4 MBytes, una nica tabla, de 4 KBytes de
longitud, es suficiente para la gestin de las pginas.
Direccin lgica (virtual)
Segmento
Desplazamiento
Direccin lineal
Dir
Pgina
Desplaz.
Tabla de
segmentos
Directorio
de pginas
Segmentacin
Paginacin
Tabla de
pginas
Direccin
fsica
Memoria
principal
15