Sistemas operativos modernos

de la figura 4-10 tendrán correspondencia con la memoria fi^sica. Las demás, que se indican con una X en la figura, no tienen correspondencia. En el hardware real, un bit de presente/ausente lle­ va el control de las páginas que están presentes en forma física en la memoria. ¿Qué sucede si el programa trata de usar una página que no fiene correspondencia, por ejemplo, emitiendo la instrucción MOV R EG ,32780 que es el byte 12 dentro de la página virtual 8 (que comienza en 32768)? La MMU ve que la pá­ gina no tiene correspondencia (lo que se indica con una X en la figura) y hace que la CPU sal­ te al sistema operativo. Esta interrupción de sistema se denomina fallo de página. El sistema operativo escoge un marco de página que no se esté usando mucho y vuelve a escribir su con­ tenido en el disco, después de lo cual trae la página a la que se acaba de hacer referencia y la coloca en el marco recién desocupado, modifica el mapa y reinicia la instrucción interrumpida. Por ejemplo, si el sistema operativo decidiera desalojar el marco de página 1, cargaría la página virtual 8 en la dirección física 4K y haría dos cambios en el mapa de la MMU. Prime­ ro, marcaría la entrada de la página virtual 1 como sin correspondencia, para atrapar los accesos futuros a direcciones virtuales entre 4K y 8 K. Luego sustituiría la X de la entrada correspon­ diente a la página virtual 8 por un l, de modo que cuando la instrucción interrumpida vuelva a ejecutarse, transforme la dirección virtual 32780 en la dirección física 4108. Asomémonos ahora al interior de la MMU para ver cómo funciona y por qué hemos opta­ do por utilizar un tamaño de página que es una potencia de 2. En la figura 4-11 se muestra un ejemplo de dirección virtual, 8196 (0010000000000100 en binario), que se transforma em­ pleando el mapa de MMU de la figura 4-10. La dirección virtual de 16 bits se divide en un nú­ mero de página de 4 bits y un desplazamiento de 12 bits. Con 4 bits para el número de página, podemos tener 16 páginas, y con 12 bits para el desplazamiento, podemos direccionar los 4096 bytes de una página dada. El número de página se utiliza como índice para consultar la tabla de páginas y así obte­ ner el número del marco de página que corresponde a esa página virtual. Si el bit presente/au­ sente es O, se generará una interrupción de sistema. Si el bit es 1, el número de marco de página hallado en la tabla de páginas se copia en los 3 bits de orden más alto del registro de salida, junto con el desplazamiento de 12 bits, que se copia sin modificación de la dirección virtual re­ cibida. Juntos, estos 15 bits constituyen una dirección física. Luego, el registro de salida se co­ loca en el bus de memoria como dirección de memoria física. 4.3.2 Tablas de páginas En el caso más simple, la correspondencia entre direcciones virtuales y físicas se efectúa como acabamos de describir. La dirección virtual se divide en un número de página virtual (bits de or­ den alto) y un desplazamiento (bits de orden bajo). Por ejemplo, si las direcciones virtuales son de 16 bits y las páginas son de 4 KB, los 4 bits superiores especificarán una de las 16 páginas vir­ tuales y los 12 bits inferiores especificarán el desplazamiento en bytes (O a 4095) dentro de la página seleccionada. Sin embargo, también puede efectuarse la división con 3 o 5 u otro núme­ ro de bits para la página. Las distintas divisiones implican diferentes tamaños de página.

RkJQdWJsaXNoZXIy MjI4NDcx