Sistemas operativos modernos
ponde al campo TPl de 10 bits. Cuando se presenta una dirección virtual a la MMU, ésta ex trae primero el campo TPl y usa este valor como índice para consultar la tabla de páginas de primer nivel. Cada una de estas 1024 entradas representa 4M porque todo el espacio de direc ciones virtual de 4 GB (es decir, 32 bits) se ha dividido en fragmentos de 1024 bytes. La entrada a la que se llega al consultar la tabla de páginas de primer nivel contiene la di rección del número de marco de página donde está almacenada una tabla de páginas de segun do nivel. La entrada Ode la tabla de primer nivel apunta a la tabla de páginas correspondiente al texto del programa, la entrada 1 apunta a la tabla de páginas para los datos y la entrada 1023 apunta a la tabla de páginas para la pila. Las demás entradas (sombreadas) no se usan. Ahora se usa el campo TP2 como índice para la tabla de páginas de segundo nivel seleccionada a fm de hallar el número de marco de página donde está la página misma. Por ejemplo, consideremos la dirección virtual de 32 bits 0x00403004 (4,206,596 en deci mal), que está a una distancia de 12,292 bytes del principio del segmento de datos. Esta direc ción virtual corresponde a TPl = l, TPl = 3 y Despl = 4. La MMU primero usa TPl como índice para la tabla de páginas de primer nivel y obtener la entrada l, que corresponde a las di recciones 4M a 8 M. Luego usa TPl como índice para la tabla de páginas recién hallada y ex traer la entrada 3, que corresponde a las direcciones 12288 a 16383 dentro de su fragmento de 4M (es decir, las direcciones absolutas 4,206,592 a 4,210,687). Esta entrada contiene el núme ro de marco de página donde está la página que contiene la dirección virtual 0x00403004. Si esa página no está en la memoria, el bit presente/ausente en la entrada de la tabla será cero, lo que causará un fallo de página. Si la página está en la memoria, el número de marco de pági na tomado de la tabla de páginas de segundo nivel se combinará con el desplazamiento (4) para construir una dirección física. Esta se coloca en el bus y se envía a la memoria. Lo interesante de la figura 4-12 es que, si bien el espacio de direcciones contiene más de un millón de páginas, en realidad sólo se necesitan cuatro tablas de páginas: la de primer nivel y las de segundo nivel para Oa 4M, 4M a 8 M, y los 4M superiores de la memoria. Los bits pre sente/ausente de 1021 entradas de la tabla de páginas de primer nivel están establecidas a O, así que si se trata de accederías, se generará un fallo de página. Si esto ocurre, el sistema operati vo se percatará de que el proceso está tratando de tener acceso a memoria no autorizada, y to mará las medidas apropiadas, como enviarle una señal o eliminarlo. En este ejemplo hemos escogido números redondos para los distintos tamaños y usamos TPl del mismo tamaño que TPl, pero pueden usarse otros valores. El sistema de tablas de páginas de dos niveles de la figura 4-12 puede expandirse a tres, cuatro o más niveles. Tener más niveles aumenta la flexibilidad, pero no es probable que valga la pena la complejidad adicional que surge cuando se tienen más de tres niveles. Estructura de una entrada de tabla de páginas Pasemos ahora de la estructura general de las tablas de páginas a los pormenores de una sola entrada de una tabla. La organización exacta de una entrada depende mucho de la máquina, pero el tipo de información presente es casi el mismo en todas las computadoras. En la figura 4-13 mostramos un ejemplo de entrada de tabla de páginas. El tamaño varía de una compu tadora a otra, pero el de 32 bits es común. El campo más importante es el Número de marco de
RkJQdWJsaXNoZXIy MjI4NDcx