Sistemas operativos modernos

cuáles páginas tienen la probabilidad más alta de utilizarse a continuación y precargar en el TLB entradas para ellas. Por ejemplo, si un proceso cliente envía un mensaje a un proceso ser­ vidor que está en la misma máquina, es muy probable que el servidor tenga que ejecutarse pronto. Sabiendo esto, el sistema puede determinar, mientras procesa la interrupción de siste­ ma para ejecutar el send, dónde están las páginas de código, datos y pila del servidor, y colo­ car entradas para ellas en el TLB antes de que puedan causar fallos de TLB. La forma normal de procesar un fallo de TLB, sea por hardware o por software, es consul­ tar la tabla de páginas y realizar las operaciones de indización necesarias para localizar la pá­ gina a la que se hizo referencia. Lo malo de efectuar esta búsqueda por software es que las páginas que contienen la tabla de páginas podrían no estar en el TLB, lo cual causaría fallos de TLB adicionales durante el procesamiento. Estos fallos pueden reducirse si se mantiene un ca­ ché grande de software (por ejemplo, de 4 KB) con entradas de TLB, en un lugar fijo cuya pá­ gina siempre se conserve en el TLB. Si el sistema operativo primero consulta el caché de software, podrá reducir en forma considerable los fallos de TLB. 4.3.4 Tablas de páginas invertidas Las tablas de páginas tradicionales dei tipo que hemos descrito hasta ahora requieren una en­ trada por cada página virtual, pues están indizadas por número de página virtual. Si el espacio de direcciones consta de 2^2 bytes, con 4096 bytes por página, se necesitará más de un millón de entradas en la tabla de páginas. Como mínimo, la tabla ocupará 4 MB. En los sistemas más grandes es probable que sí se pueda manejar una tabla tan grande. Sin embargo, a medida que aumenta el número de computadoras de 64 bits, la situación cambia de manera drástica. Si el espacio de direcciones ahora tiene 2^4 bytes y las páginas son de 4 KB, se necesita una tabla de páginas con 2^2 entradas. Si cada entrada requiere 8 bytes, la tabla ocupará más de 30 millones de gigabytes. Dedicar tanto espacio sólo a la tabla de pági­ nas no es factible, ni ahora ni en el futuro cercano, y tal vez nunca. Por ello, se requiere una solución distinta para los espacios de direcciones virtuales paginados de 64 bits. Una solución es la tabla de páginas invertida. En este diseño, hay una entrada por cada marco de página en la memoria real, en lugar de una entrada por página del espacio de direc­ ciones virtual. Por ejemplo, con direcciones virtuales de 64 bits, páginas de 4 KB y 256 MB de RAM, una tabla de páginas invertida sólo requiere 65,536 entradas. La entrada indica qué proceso y qué página virtual está en el marco correspondiente. Aunque las tablas de páginas invertidas ahorran muchísimo espacio, al menos cuando el es­ pacio de direcciones virtual es mucho más grande que la memoria física, tienen una desventaja grave: la traducción de direcciones virtuales a físicas es mucho más difícil. Cuando el proceso n hace referencia a la página virtual p, el hardware no podrá hallar la página física utilizando p como índice para consultar la tabla de páginas, sino que deberá buscar una entrada (n, p) en to­ da la tabla de páginas invertida. Además, esa búsqueda debe efectuarse cada vez que se hace re­ ferencia a la memoria, no sólo cuando se generan fallos de página. Examinar una tabla de 64K en cada referencia a la memoria no ayuda mucho a que la máquina sea más veloz.

RkJQdWJsaXNoZXIy MjI4NDcx