Sistemas operativos modernos
digos de protección para leer y ejecutar. Los principales datos que se están usando (digamos, un arreglo que se está procesando) están en las páginas 129 y 130. La página 140 contiene los índi ces que se usan en los cálculos del arreglo. Por último, la pila está en las páginas 860 y 861. Ahora veamos cómo funciona el TLB. Cuando se presenta una dirección virtual a la MMU para que la traduzca, el hardware verifica primero si su número de página virtual está presen te en el TLB o no, comparándolo con todas las entradas de manera simultánea (es decir, en pa ralelo). Si encuentra el número y el acceso no viola los bits de protección, el número de marco de página se toma directo del TLB, sin recurrir a la tabla de páginas. Si el número de página virtual está presente en el TLB pero la instrucción está tratando de escribir en una página de sólo lectura, se generará un fallo de protección, igual al que se generaría a partir de una entra da en la tabla de páginas. Lo interesante es lo que sucede cuando el número de página virtual no está en el TLB. La MMU detecta esto y realiza una consulta ordinaria de la tabla de páginas. Luego desaloja una de las entradas del TLB y la sustituye por la entrada de tabla de páginas que acaba de buscar. De este modo, si la página en cuestión se vuelve a usar pronto, la segunda vez sí se hallará en el TLB. Cuando una entrada se desaloja del TLB, el bit modificado se copia de nuevo en la en trada correspondiente de la tabla de páginas en la memoria. Los demás valores ya están ahí. Cuando el TLB se carga de la tabla de páginas, todos los campos se toman de la memoria. Manejo del TLB por software Hasta aquí hemos dado por hecho que toda máquina que tiene memoria virtual paginada tiene tablas de páginas que el hardware reconoce, más un TLB. En este diseño, el hardware de la MMU realiza por completo la administración y el manejo de fallos del TLB. Sólo se salta al sistema operativo cuando una página no está en la memoria. En el pasado siempre era válido esta suposición, pero muchas máquinas RISC modernas, incluidas SPARC, MIPS, Alpha y HP PA, efectúan casi toda esta administración de páginas por software. En tales máquinas, el sistema operativo carga en forma explícita las entradas del TLB. Cuando no se encuentra una página en el TLB, en lugar de que ia MMU consulte en for ma directa las tablas de páginas para hallar y obtener la referencia de página requerida, simple mente genera un fallo de TLB y deja que el sistema operativo resuelva el problema. El sistema tendrá que hallar la página, desalojar una entrada del TLB, cargar la nueva y reiniciar la ins trucción que causó el fallo. Y, desde luego, todo esto debe hacerse con muy pocas instruccio nes porque los fallos de TLB ocurren con más frecuencia que los de página. Por sorprendente que parezca, si el TLB tiene un tamaño razonable (digamos, 64 entradas) para que la tasa de fallos no sea muy alta, la administración del TLB por software alcanza una eficiencia aceptable. Sobre todo, lo que se gana con esto es simplificar mucho la MMU y así contar con más espacio en el chip de la CPU para cachés y otros recursos que pueden mejorar el desempeño. La administración del TLB por software se analiza en Uhlig et a i (1994). Se han desarrollado diversas estrategias para mejorar el desempeño en máquinas que efec túan la administración del TLB por software. Una de ellas busca reducir los fallos de TLB y, al mismo tiempo, reducir el costo de los que sí ocurran (Bala et a i, 1994). Para reducir los fallos de TLB, en algunas ocasiones el sistema operadvo puede utilizar su intuición para determinar
RkJQdWJsaXNoZXIy MjI4NDcx