Sistemas operativos modernos

El primer punto es consecuencia del hecho de que las computadoras modernas utilizan direc­ ciones virtuales de por lo menos 32 bits. Con páginas de, digamos, 4 KB, un espacio de direccio­ nes de 32 bits tiene un millón de páginas, y uno de 64 bits tiene más de las que quisiéramos imaginar. Con un millón de páginas en el espacio de direcciones virtual, la tabla de páginas de­ be tener un millón de entradas. Y hay que recordar que cada proceso necesita su propia tabla de páginas (porque tiene su propio espacio de direcciones virtual). El segundo punto es una consecuencia del hecho de que la correspondencia de virtual a físi­ co debe efectuarse cada vez que se hace referencia a la memoria. Una instrucción típica tiene una palabra de instrucción y muchas veces, también un operando en la memoria. Por ello, es necesa­ rio remitirse una, dos o más veces a la tabla de páginas cada vez que se ejecuta una instrucción. Si una instrucción tarda, digamos, 4 nanosegundos, la consulta de la tabla de páginas deberá hacer­ se en menos de 1 nanosegundo para evitar que se convierta en un cuello de botella importante. La necesidad de una correspondencia de páginas rápida y grande impone una restricción importante a la forma en que se construyen las computadoras. Aunque el problema es más gra­ ve en las máquinas más grandes, también es una cuestión importante en el extremo bajo, don­ de el costo y la relación precio/desempeño son cruciales. En esta sección y en las que siguen examinaremos con detalle el diseño de las tablas de páginas y mostraremos varias soluciones en hardware que se han utilizado en computadoras reales. El diseño más sencillo (al menos en lo conceptual) consiste en tener una sola tabla de pá­ ginas conformada por un arreglo de registros rápidos de hardware, con una entrada por cada página virtual e indizada por número de página virtual, como se muestra en la figura 4-11. Cuando se inicia un proceso, el sistema operafivo carga los registros con la tabla de páginas del proceso, tomada de una copia que se guarda en la memoria principal. Durante la ejecución del proceso, no se necesitan más referencias a la memoria para la tabla de páginas. Las venta­ jas de este método son que es directo y no requiere referencias a la memoria durante la trans­ formación. Una desventaja es que puede ser costoso (si la tabla de páginas es grande). Tener que cargar toda la tabla de páginas en cada conmutación de contexto perjudica el desempeño. En el otro extremo, la tabla de páginas podría estar en su totalidad en la memoria principal. Por lo tanto, lo único que necesita el hardware es un solo registro que apunte al principio de la tabla de páginas. Este diseño permite cambiar el mapa de memoria con sólo cargar un registro cuando se efectúa una conmutación de contexto. Claro que tiene la desventaja de requerir una o más referencias a la memoria, para leer las entradas de la tabla de páginas durante la ejecución de cada instrucción. Por este motivo, casi nunca se adopta este enfoque en su forma más pura, aunque a continuación estudiaremos algunas variaciones que tienen un desempeño mucho mejor. Tablas de páginas multinivel Para solucionar el problema de tener que almacenar enormes tablas de páginas en la memoria todo el tiempo, muchas computadoras utilizan una tabla de páginas multinivel. En la figura 4-12 se muestra un ejemplo sencillo. En la figura 4-12a tenemos una dkección virtual de 32 bits que se divide en un campo TPl de 10 bits, un campo TP2 de 10 bits y un campo Despl de 12 bits. Pues­ to que los desplazamientos son de 12 bits, quiere decir que las páginas son de 4 KB y que hay un total de 2^0 páginas.

RkJQdWJsaXNoZXIy MjI4NDcx