Sistemas operativos modernos

hallar en sus registros internos el descriptor completo que le corresponde. Si el segmento no existe (selector 0 ) o está paginado a disco por el momento, hay una interrupción de sistema. Luego se verifica si el desplazamiento rebasa el final del segmento, en cuyo caso también habrá una interrupción de sistema. Como es lógico, debería haber en el descriptor tan sólo un campo de 32 bits que indique el tamaño del segmento, pero sólo se dispone de 20 bits, por lo que se usa un esquema distinto. Si el campo Gbit (Granularidad) es O, el campo Límite es el ta­ maño exacto del segmento, hasta 1 MB; si es 1, el campo Límite da el tamaño del segmento en páginas en lugar de bytes. El tamaño de página en el Pentium siempre es 4 KB, así que bastan 20 bits para segmentos de hasta 2 ^^ bytes. Suponiendo que el segmento está en la memoria y el desplazamiento no rebasa el final del segmento, el Pentium añade entonces el campo Base del descriptor, de 32 bits, al desplaza­ miento para formar lo que se denomina una dirección lineai, como se muestra en la figura 4-45. El campo Base se divide en tres partes y se distribuye a lo largo del descriptor con el fin de mantener la compatibilidad con el 286, en el que Base es de sólo 24 bits. En efecto, el cam­ po Base permite que cada segmento inicie en un lugar arbitrario dentro del espacio de direc­ ciones lineal de 32 bits. Figura 4-45. Conversión de un par (selector, desplazamiento) en una dirección lineal. Si se inhabilita la paginación (con un bit en un registro de control global), la dirección lineal se interpreta como una dirección física y se envía a la memoria para que se efectúe la lectura o escritura. Así, con la paginación inhabilitada tenemos un esquema de segmentación pura, y la di­ rección base de cada segmento se da en su descriptor. Por cierto, se permite que los segmentos se traslapen, quizá porque sería demasiado molesto y tardado verificar que no se traslapen. Por otra parte, si se habilita la paginación, la dirección lineal se interpreta como una direc­ ción virtual y se establece una correspondencia con la dirección física mediante tablas de pá­ ginas, básicamente como en nuestros ejemplos anteriores. La única complicación real es que con una dirección virtual de 32 bits y páginas de 4 KB, un segmento podría contener un millón de páginas, por lo que se usa una correspondencia de dos niveles para reducir el tamaño de la tabla de páginas cuando los segmentos son pequeños. Cada programa en ejecución tiene un directorio de páginas que consta de 1024 entradas de 32 bits cada una y está situado en una dirección a la que apunta un registro global. Cada en­ trada de este directorio apunta a una tabla de páginas que también contiene 1024 entradas de

RkJQdWJsaXNoZXIy MjI4NDcx