Anda di halaman 1dari 10

Administracin de memoria del microprocesador 80386

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.
GESTINDEMEMORIAENELMODO
PROTEGIDODEL386
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.
MODODEOPERACIN
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).
IMPLEMENTACINDELASEGMENTACIN
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.
SEGMENTACINPAGINADAENLOS386
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.
MECANISMODEPAGINACIN
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:
Registrosdecontrolusadosparala
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.

Anda mungkin juga menyukai