Вы находитесь на странице: 1из 9

Administracin de memoria del microprocesador

80386

Caractersticas
Gestin de memoria
Modo de Operacin
Segmentacin
Paginacin

CARACTERISTICAS

Microprocesador de 32 bits
Tipo de Datos de 8, 16, 32 bits
8 Registros de Propsito General GPR (32-bit)
Espacio de Direcciones Grande
4 GB de Memoria Fsica
4 GB Tamao Mximo de Segmento
NOTA: 1MB 1024 KB, 1GB 1024MB, 1TB 1024GB.

GESTIN DE MEMORIA EN EL MODO PROTEGIDO DEL 386


Cuando se cre el microprocesador 386, al ser un micro de 32 bits se vari la
estructura del modo protegido para darle una mayor potencia, aparte de
permitirle direccionar los 4GBytes que permite su bus de direcciones de 32 bits.
En principio, el modo protegido del 386 funciona igual que el del 286: tenemos
un registro de selector de 16 bits y uno de offset, esta vez de 32 bits, y en la
tabla de selectores disponemos esta vez de 32 bits para indicar la posicin
base de cada segmento. Sin embargo, disponemos solamente de 20 bits para
indicar la longitud de cada segmento. Esto nos la limitara, en principio, a una
longitud mxima de 1 mega por segmento. Sin embargo, los diseadores de
Intel reservaron un bit de granularidad entre los muchos reservados del registro
de estado. Este bit permite conseguir segmentos de hasta 4 GBytes con solo
20 bits. El truco consiste en que, si el bit est a cero, la unidad de longitud ser
1 byte, con lo que solo podremos tener segmentos de hasta 1 mega. En este
modo se es compatible con el 286. Pero si este bit se pone a 1, la unidad ser
4 KBytes. Esto significa que un segmento puede tener una longitud mltiplo de
esta: 4, 8, 12, 16, 20, 24, 28, 32, etc KBytes. En total, podemos disponer de
hasta 64 TeraBytes de memoria para cada programa.
Sin embargo, cuando usamos memoria virtual, este mtodo tiene un
inconveniente que ya comentamos: dado que los segmentos pueden tener un
tamao variable, puede ser necesario liberar varios pequeos para hacer sitio a
uno grande. Adems, la memoria puede fragmentarse con facilidad, lo que
obliga a reorganizarla para juntar pequeos huecos libres en uno solo grande.
Todo esto consume tiempo extra durante el intercambio a disco. Para evitarlo,
se incluy el modo paginado. Si este modo est activo, las direcciones que
salen de la suma del selector y del offset son pasadas por un esquema como el
siguiente:
Aqu vemos que el sistema se ha complicado mucho ms. Mediante este,
podemos dividir la memoria en bloques de 4KBytes, e intercambiar solo
aquellos que nos interese. De esta forma, si tenemos que cargar un segmento
de 24 KBytes, solo liberaremos 24 KBytes de otro segmento, y no un segmento
completo. Esto acelera las transferencias, elimina la fragmentacin (los bloques
de 4KBytes que forman un segmento no tienen por qu ser consecutivas) y
evita el crecimiento incontrolado del fichero de Swap. Sin embargo, hace el
sistema algo ms lento, pues tiene que hacer ms accesos a la RAM (todas
estas tablas se sitan en la RAM normal). Para evitarlo, se incluyeron una serie
de Buffers que retienen las pginas de direccin y de tabla ms usadas.
En OS/2 2.0 y posteriores se define un nico segmento para cada programa,
de 4 GBytes de longitud (si bien la cantidad de memoria disponible para uso
propio es de 'solo' 512 MBytes) y se activa el modo paginado. De esta forma el
acceso es ms rpido, pues no es necesario cargar mltiples valores en el
registro de selector, y conservamos la capacidad de memoria virtual. Esta es la
razn de que, cada vez que se hace una reserva de memoria
(con DosAllocMem o similar) la cantidad se redondea al mltiplo de 4KBytes
superior.

MODO DE OPERACIN

El 80386 tiene dos modos de operacin: modo de direccionamiento real (modo


real), y modo de direccionamiento virtual protegido (modo protegido). En modo
real el 80386 opera como un 8086 muy rpido, con extensiones de 32 bits si se
desea. El modo real se requiere primariamente para preparar el procesador
para que opere en modo protegido. El modo protegido provee el acceso al
sofisticado manejo de memoria y paginado.
Dentro del modo protegido, el software puede realizar un cambio de tarea para
entrar en tareas en modo 8086 virtual (V86 mode) (esto es nuevo con este
microprocesador). Cada una de estas tareas se comporta como si fuera un
8086 el que lo est ejecutando, lo que permite ejecutar software de 8086 (un
programa de aplicacin o un sistema operativo). Las tareas en modo 8086
virtual pueden aislarse entre s y del sistema operativo (que debe utilizar
instrucciones del 80386), mediante el uso del paginado y el mapa de bits de
permiso de entrada/salida (I/O Permission Bitmap).
Finalmente, para facilitar diseos de hardware de alto rendimiento, la interfaz
con el bus del 80386 ofrece pipelining de direcciones, tamao dinmico del
ancho del bus de datos (puede tener 16 32 bits segn se desee en un
determinado ciclo de bus) y seales de habilitacin de bytes por cada byte del
bus de datos. Hay ms informacin sobre esto en la seccin de hardware del
80386.
SEGMENTACIN

Cuando se usa paginacin, el sistema divide la memoria para poder


administrarla, no para facilitarle la vida al programador. La vista lgica que el
programador tiene de la memoria no tiene nada que ver con la vista fsica que
el sistema tiene de ella. El sistema ve un slo gran arreglo dividido en pginas,
pero el programador piensa en trminos de un conjunto de subrutinas y
estructuras de datos, a las cuales se refiere por su nombre: la funcin coseno,
el stack, la tabla de smbolos, sin importar la ubicacin en memoria, y si acaso
una est antes o despus que la otra.
La segmentacin es una forma de administrar la memoria que permite que el
usuario vea la memoria como una coleccin de segmentos, cada uno de los
cuales tiene un nombre y un tamao (que, adems, puede variar
dinmicamente). Las direcciones lgicas se especifican como un par
(segmento, desplazamiento).
IMPLEMENTACIN DE LA SEGMENTACIN

Similar a paginacin: en vez de tabla de pginas, tabla de segmentos; para


cada segmento, hay que saber su tamao y dnde comienza (base). Una
direccin lgica (s,d), se traduce a base(s)+d. Si d es mayor que el tamao del
segmento, entonces ERROR.
Ventajas:
Al usuario se le simplifica el manejo de estructuras de datos de tamao
dinmico.
Se facilita el que los procesos compartan memoria.
Los segmentos pueden estar protegidos segn la semntica de su
contenido.
Por ejemplo, un segmento que contiene cdigo, puede especificarse
como slo para ejecucin (y nadie puede copiarlo ni sobreescribirlo); un arreglo
puede especificarse como read/write but not execute. Esto facilita
enormemente la deteccin de errores en el cdigo. Libreras compartidas de
enlace dinmico (DLLs).
Pero la memoria sigue siendo, fsicamente, un slo arreglo de bytes, que debe
contener los segmentos de todos los procesos. A medida que se van creando y
eliminando procesos, se va a ir produciendo, inevitablemente fragmentacin
externa.
Si consideramos cada proceso como un slo gran segmento, tenemos el
mismo caso que el de las particiones variables. Como cada proceso tiene
varios segmentos, puede que el problema de la particin externa se reduzca,
pues ya no necesitamos espacio contiguo para todo el proceso, sino que slo
para cada segmento. Para eliminar completamente el problema de la
fragmentacin interna, se puede usar una combinacin de segmentacin y
paginacin, en la que los segmentos se paginan.

SEGMENTACIN PAGINADA EN LOS 386

En una 80386 puede haber hasta 8K segmentos privados y 8K segmentos


globales, compartidos con todos los otros procesos. Existe una tabla de
descripcin local (LDT) y una tabla de descripcin global (GDT) con la
informacin de cada grupo de segmentos. Cada entrada en esas tablas tiene 8
bytes con informacin detallada del segmento, incluyendo su tamao y
direccin. Una direccin lgica es un par (selector, desplazamiento), donde el
desplazamiento es de 32 bits y el selector de 16, dividido en: 13 para el
segmento, 1 para global/local, y 2 para manejar la proteccin. La CPU tiene un
cach interno para 6 segmentos.

MECANISMO DE PAGINACIN

El 80386 utiliza dos niveles de tablas para traducir las direcciones lineales (que
vienen de la unidad de segmentacin) en una direccin fsica. Los tres
componentes del mecanismo de paginado son: el directorio de pginas, las
tablas de pginas y las pginas mismas. Cada uno de estos elementos ocupa
4KB en la memoria fsica. Un tamao uniforme para todos los elementos
simplifica el manejo de memoria, ya que no existe fragmentacin. La siguiente
figura muestra cmo funciona el mecanismo de paginacin:

Registros de control usados para la paginacin

El registro CR2 es el que mantiene la direccin lineal de 32 bits que caus el


ltimo fallo de pgina detectado por el microprocesador.
El registro CR3 contiene la direccin fsica inicial del directorio de pginas. Los
doce bits menos significativos del registro siempre estn a cero para que
siempre el directorio de pginas est dentro de una pgina determinada. La
operacin de carga mediante la instruccin MOV CR3, reg o bien un cambio de
tareas que implique un cambio de valor del registro CR3 hace que se eliminen
las entradas del cach de la tabla de pginas.
El hardware de paginacin opera de la siguiente manera. La unidad de
paginacin recibe una direccin lineal de 32 bits procedente de la unidad de
segmentacin. Los 20 bits ms significativos son comparados con las 32
entradas del TLB para determinar si la entrada de la tabla de pginas est en el
cach. Si est (cache hit), entonces se calcula la direccin fsica de 32 bits y se
la coloca en el bus de direcciones.
Si la entrada de la tabla de pginas no se encuentra en el TLB (cache miss), el
80386 leer la entrada del directorio de pginas que corresponda. Si P=1 (la
tabla de pginas est en memoria), entonces el 80386 leer la entrada que
corresponda de la tabla de pginas y pondr a uno el bit Accedido de la entrada
del directorio de pginas. Si P=1 en la entrada de la tabla de pginas indicando
que la pgina se encuentra en memoria, el 80386 actualizar los bits Accedido
y Dirty segn corresponda y luego acceder a la memoria. Los 20 bits ms
significativos de la direccin lineal se almacenarn en el TLB para futuras
referencias. Si P=0 para cualquiera de las dos tablas, entonces el procesador
generar una excepcin 14 (Fallo de Pgina).
El procesador tambin generar una excepcin 14, si la referencia a memoria
viola los atributos de proteccin de pgina (bits U/S y R/W) (por ejemplo, si el
programa trata de escribir a una pgina que es de slo lectura). En el registro
CR2 se almacenar la direccin lineal que caus el fallo de pgina. Como la
excepcin 14 se clasifica como un fallo (es recuperable), CS:EIP apuntar a la
instruccin que caus el fallo de pgina.
En la pila se pondr un valor de 16 bits que sirve para que el sistema operativo
sepa por qu ocurri la excepcin. El formato de esta palabra es:
Bits 15-3: Indefinido.
Bit 2: Vale 1 si el procesador estaba ejecutando en modo usuario. Vale 0
si el procesador estaba ejecutando en modo supervisor. Ntese que un acceso
a una tabla de descriptores siempre se considera modo supervisor, por ms
que el programa se est ejecutando en el nivel 3.
Bit 1: Vale 1 si el procesador estaba por realizar una escritura. Vale 0 si
estaba por realizar una lectura.
Bit 0: Vale 1 si hubo una violacin de proteccin en la pgina. Vale 0 si la
pgina no estaba presente.

Вам также может понравиться