next up previous contents
Next: Sistema de Protecciones Up: El modo protegido Previous: Los registros

Manejo de memoria

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
\begin{figure}
\epsfxsize=270pt
\hspace{.432in}
\epsffile{descSeg80386.eps}
\end{figure}

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
\begin{figure}
\epsfxsize=176pt
\hspace{.97in}
\epsffile{addr80386.eps}
\end{figure}

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.
\begin{figure}
\epsfxsize=160pt
\hspace{1.1in}
\epsffile{espDir80386.eps}
\end{figure}

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
\begin{figure}
\epsfxsize=200pt
\hspace{.7in}
\epsffile{selDesc386.eps}
\end{figure}


next up previous contents
Next: Sistema de Protecciones Up: El modo protegido Previous: Los registros
Amilcar Meneses
2002-10-03