Un procesador utiliza tablas de páginas de 2 niveles para la traducción de direcciones virtuales a físicas. Las tablas de páginas para ambos niveles se almacenan en la memoria principal. Las direcciones virtuales y físicas tienen 32 bits de ancho. La memoria es direccionable por bytes. Para la traducción de direcciones virtuales a físicas, los 10 bits más significativos de la dirección virtual se usan como índice en la tabla de páginas de primer nivel, mientras que los siguientes 10 bits se usan como índice en la tabla de páginas de segundo nivel. Los 12 bits menos significativos de la dirección virtual se utilizan como compensación dentro de la página. Suponga que las entradas de la tabla de páginas en ambos niveles de las tablas de páginas tienen 4 bytes de ancho. Además, el procesador tiene un búfer de búsqueda de traducción (TLB), con una tasa de aciertos del 96 %. La TLB almacena en caché los números de página virtuales usados recientemente y los números de página físicos correspondientes. El procesador también tiene una memoria caché direccionada físicamente con una tasa de aciertos del 90 %. El tiempo de acceso a la memoria principal es de 10 ns, el tiempo de acceso a la memoria caché es de 1 ns y el tiempo de acceso a TLB también es de 1 ns.
Suponga que un proceso tiene solo las siguientes páginas en su espacio de direcciones virtuales: dos páginas de códigos contiguas que comienzan en la dirección virtual 0x00000000, dos páginas de datos contiguas que comienzan en la dirección virtual 0x00400000 y una página de pila que comienza en la dirección virtual 0xFFFFF000. La cantidad de memoria necesaria para almacenar las tablas de páginas de este proceso es:
(A) 8 KB
(B) 12 KB
(C) 16 KB
(D) 20 KB
Respuesta: (C)
Explicación:
Breakup of given addresses into bit form:- 32bits are broken up as 10bits (L2) | 10bits (L1) | 12bits (offset) first code page: 0x00000000 = 0000 0000 00 | 00 0000 0000 | 0000 0000 0000 so next code page will start from 0x00001000 = 0000 0000 00 | 00 0000 0001 | 0000 0000 0000 first data page: 0x00400000 = 0000 0000 01 | 00 0000 0000 | 0000 0000 0000 so next data page will start from 0x00401000 = 0000 0000 01 | 00 0000 0001 | 0000 0000 0000 only one stack page: 0xFFFFF000 = 1111 1111 11 | 11 1111 1111 | 0000 0000 0000 Now, for second level page table, we will just require 1 Page which will contain following 3 distinct entries i.e. 0000 0000 00, 0000 0000 01, 1111 1111 11. Now, for each of these distinct entries, we will have 1-1 page in Level-1. Hence, we will have in total 4 pages and page size = 2^12 = 4KB. Therefore, Memory required to store page table = 4*4KB = 16KB.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA