Next: Sistema de Protecciones
Up: El modo protegido
Previous: Los registros
La memoria en el bus del i486 se denomina memoria física, es
decir, cada byte en la memoria tiene asociada una única dirección
física, la cual tiene un rango de cero hasta 232-1.
Los programas direccionan el modelo de memoria denominado memoria
virtual. El procesador i486 trabaja con el modelo de paginación y
segmentación de memoria. Cualquiera o ambos de estos mecanismos puede ser
utilizado. Una dirección utilizada por un programa se llama dirección
lógica. El hardware de segmentación translada una dirección segmentada
(lógica) a una dirección de 32 bits en un espacio de direccionamiento
continuo y no segmentado llamada dirección lineal. El hardware de paginación
translada una dirección lineal a una dirección física.
Figure 2.6:
Descriptor de Segmento 80486
|
Las direcciones lógicas se trasladan a direcciones lineales debido a que
tienen una dirección como un offset (registro de 32 bits) y un
selector (registro de 16 bits). Cada segmento tiene un descriptor
de segmento, el cual contiene su dirección base y su límite (ver
figura 2.6). Si el offset no sobrepasa el límite, y
no existe otra condición que prevenga la lectura del segmento, entonces se
suman el segmento y la base para formar una dirección lineal.Si no se utiliza
el modo de paginación (cuando el bit 32 del registro CR0 tiene el valor 0)
entonces la dirección lineal se utiliza directamente como la dirección
física. Si el mecanismo de paginación está activo, se utiliza la
dirección lineal para formar la dirección física correspondiente.
Figure 2.7:
Manejo de memoria del 80486
|
El hardware de paginación divide el espacio de direcciones en bloques fijos
de 4K bytes, llamados páginas. Entonces, el espacio de direcciones lógicas
se mapea a un espacio de direcciones lógicas y éste, a su vez, se mapea
a un número de páginas. Una página puede estar en memoria o en disco.
Cuando se obtiene una dirección lógica, se translada a una direccón para
una página en memoria, o se obtiene una excepción. La excepción le da
oportunidad al sistema operativo de leer una página del disco y actualizar
el mapeo de páginas. Este proceso se aprecia en la figura 2.7.
Todas las tarea que se ejecutan en modo protegido puede accesar los segmentos
de los espacios de direcciones locales y de direcciones globales (ver
figura 2.8).
Figure 2.8:
Espacios de direcciones virtuales y aislamiento de tareas.
|
En el espacio de direcciones globales se colocan los datos y código que se
necesiten en cualquier tarea --ejemplo de estos objetos son algunos servicios
del núcleo--. Mientras que en el espacio de direcciones locales se colocan
elementos utilizados en alguna tarea simple. El espacio de direcciones es
privado, a menos que un segmento sea mapeado, en dos o más, intencionalmente,
ya que una tarea no puede accesar una localidad de memoria si no tiene su
selector respectivo. La figura 2.9 muestra la forma en que se
elige un descriptor de segmento. Los 13 bits superiores del selector
proporcionan el índice del descriptor en la tabla de descriptores
--global (GDT) o local (LDT)--. Sus 3 bits inferiores son bits de control.
El bit 2 se denomina indicador de tabla, si está encendido se
busca en la tabla local de descriptores, si no, se busca en la tabla global.
Los bits 0 y 1 son el RPL2.5, estos
bits describen el nivel de privilegio del segmento.
Figure 2.9:
Selección de un Descriptor
|
Next: Sistema de Protecciones
Up: El modo protegido
Previous: Los registros
Amilcar Meneses
2002-10-03