Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ec7 PDF
Ec7 PDF
Contenido:
1. Gestin de memoria
2. Memoria virtual
1. Gestin de memoria
El sistema de memoria virtual de los actuales computadores surgi para liberar al
programador de una serie de tareas relacionadas con el uso que los programas deban realizar con
la memoria. La memoria virtual automatiza la gestin entre los dos niveles principales de la
jerarqua de memoria: memoria principal y disco. Antes de entrar en los mecanismos especficos de
la memoria virtual revisaremos una serie de funciones que deben incorporarse en la gestin de
memoria.
1.1. Solapamiento (overlay)
El tamao de la memoria principal disponible en los computadores ha aumentado de forma
sostenida desde sus orgenes. Sin embargo, el tamao de los programas ha crecido ms
rpidamente, por lo que la necesidad de ejecutar programas que no caban en la memoria principal
ha sido una constante en la historia de los computadores. Una forma de superar esta limitacin es
el uso de la tcnica de solapamiento (overlay).
Esta tcnica divide en mdulos el programa cuyo tamao sobrepasa la capacidad de la
memoria principal, y que reside por tanto en memoria secundaria (disco). Despus se introducen en
los lugares adecuados de cada mdulo, y al margen de la lgica propia del programa, las
instrucciones de E/S necesarias para cargar en memoria principal aquellos mdulos cuyas
instrucciones deban ejecutarse o cuyos datos vayan a ser referenciados en el inmediato futuro. Es
decir, el propio programa se ocupa de cargar por anticipado los mdulos que van a ser
referenciados.
1
Estructura de Computadores, Facultad de Informtica, UCM, Curso 11-12
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
M1 M2 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
El sistema de memoria virtual implementa todas las funciones anteriores de forma
integrada.
2
Estructura de Computadores, Facultad de Informtica, UCM, Curso 11-12
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) Desplaz. Pgina (DP) Direccin Virtual (DV)
v
Memoria virtual
Sumador
Pgina 2
Tabla de Pginas
Pgina 3
control pv 0 pag. f sica f-1 ACIERTO
Pgina 4 control pv 1 pag. f sica 2
control pv 2 pag. f sica 1
Direccin Fsica (DF)
Pgina 5
Pgina 1
Pgina 2
pv v-1
2w
v-3 pginas
Pgina2 Memoria de Disco
v-2
Pgina f-2
Pgina2
Pgina f-1
Pgina2 v-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
Estructura de Computadores, Facultad de Informtica, UCM, Curso 11-12
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.
2.1. Memoria virtual paginada
El mecanismo de traduccin de DV a DF que acabamos de describir corresponde a un
sistema de memoria virtual paginada. En l el espacio virtual (y fsico) se divide en pginas de
igual tamao. Veremos en el apartado siguiente otra alternativa en la que la MV se divide en
segmentos de longitud variable, dando lugar a la memoria virtual segmentada. Las entradas de la
TP de una MV paginada, adems del NPF contiene unos bits de control, de los que hemos
mencionado el bit de presencia P.
Como se muestra en la siguiente figura, existen otros bits que controlan los derechos de
acceso a la pgina: lectura (R), escritura (W) y ejecucin (X), este ltimo slo para pginas de
cdigo. Tambin suele existir un bit que indica si la pgina ha sido modificada (datos) y necesita
escribirse en disco cuando sea sustituida. Los dems bits de control dependen de cada procesador.
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.
4
Estructura de Computadores, Facultad de Informtica, UCM, Curso 11-12
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. Tablas de pginas de varios niveles
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.
Direccin Virtual
Nivel 1 Nivel 2 Nivel 3 Despla. Pgina
RBP
Tabla Paginas N1
+
Tabla Paginas N3
Entrada TP +
Entrada TP
Direccin Fsica
Nmero de pgina fsica Despla. Pgina
5
Estructura de Computadores, Facultad de Informtica, UCM, Curso 11-12
Direccin Virtual
N Pgina Virtual Desplazamiento
Funcin de
Dispersin
NPF
Direccin Fsica
N Pgina Fsica Desplazamiento
Fallo de pgina
=
NPF DP
Violacin de acceso
Direccin Fsica
6
Estructura de Computadores, Facultad de Informtica, UCM, Curso 11-12
N PV DP
TLB
NPV NPF
Fallo de pgina
N PF DP
Memoria cache
etiqueta datos
etiqueta lnea palabra
Comparador
MUX
acierto
fallo
7
Estructura de Computadores, Facultad de Informtica, UCM, Curso 11-12
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. Caches con direcciones virtuales
La segunda alternativa de utilizar caches direccionadas virtualmente tiene la ventaja de que
en caso de acierto en la cach, no es necesario el proceso de traduccin. Sin embargo, esta
alternativa tiene dos problemas fundamentales. El primero surge en las conmutaciones de
procesos. Cuando se cambia de proceso, la misma direccin virtual de cada proceso referencia
diferentes direcciones fsicas, lo que exige que se limpie la cach y esto supone una gran fuente de
fallos forzosos. El segundo se origina porque es posible que distintos procesos con diferentes
direcciones virtuales se correspondan con la misma direccin fsica (aliasing). Esto puede producir
dos copias del mismo dato en una cache virtual, lo que ocasiona problemas de inconsistencia si hay
escrituras.
2.3. Mltiples espacios virtuales
Una forma de acelerar la conmutacin de procesos evitando tener que borrar la TP (que
puede estar en TLB o memoria invertida) es extender las entradas con un campo que contiene el
identificador de proceso (PID).
PID RWX N PV DP
(TLB)
= Fallo de pgina
=
N PF DP
8
Estructura de Computadores, Facultad de Informtica, UCM, Curso 11-12
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.
9
Estructura de Computadores, Facultad de Informtica, UCM, Curso 11-12
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. Memoria virtual segmentada
Mientras que la paginacin es transparente para el programador, y le proporciona un espacio
mayor de direcciones, la segmentacin es normalmente visible para el programador, y proporciona
una forma lgica de organizar los programas y los datos, y asociarle los privilegios y atributos de
proteccin.
La segmentacin permite que el programador vea la memoria constituida por mltiples
espacios de direcciones o segmentos. Los segmentos tienen un tamao variable, dinmico.
10
Estructura de Computadores, Facultad de Informtica, UCM, Curso 11-12
11
Estructura de Computadores, Facultad de Informtica, UCM, Curso 11-12
Tabla de segmentos
Reg. Tabla Segmentos
P NPF
P = bit de presencia
L = Longitud del segmento
NPF DP
Direccin Fsica
12
Estructura de Computadores, Facultad de Informtica, UCM, Curso 11-12
13
Estructura de Computadores, Facultad de Informtica, UCM, Curso 11-12
32 0
Desplazamiento
Direccin
Virtual
15 2 1 0
Selector de segmento
14
Estructura de Computadores, Facultad de Informtica, UCM, Curso 11-12
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
Tabla de
segmentos
Direccin
fsica
Directorio Tabla de
de pginas pginas
Memoria
principal
Segmentacin Paginacin
15