studio programacion para móviles libro edición desarrollo curso aplicaciones memory operating-system paging virtual-memory page-tables

memory - para - manual de programacion android pdf



¿Cómo ahorra espacio de memoria la tabla de páginas de varios niveles? (3)

Aquí hay una ventaja principal de las tablas de página multinivel:

Primero, corta la tabla de páginas en unidades de tamaño de página; luego, si una página completa de entradas de la tabla de páginas (PTE) no es válida, no asigne en absoluto esa página de la tabla de páginas.

Fuente. (Sección 20.3)

Por lo tanto, la cantidad de memoria necesaria para la tabla de páginas no está dictada por el tamaño del espacio de direcciones, sino por la cantidad de memoria que está usando el proceso.

Además, la página de las entradas de la tabla de la página puede ser paginada si la memoria física se llena; solo el directorio de la página debe estar siempre presente en la memoria.

Estoy tratando de entender cómo la tabla de páginas de varios niveles ahorra memoria. Según mi entendimiento, la tabla de páginas de varios niveles en total consume más memoria que la tabla de páginas de un solo nivel.

Ejemplo: Considere un sistema de memoria con tamaño de página de 64 KB y procesador de 32 bits. Cada entrada en la tabla de la página es de 4 Bytes.

Tabla de páginas de un solo nivel : se requieren 16 bits (2 ^ 16 = 64 KB) para representar el desplazamiento de página. Así que descansa 16 bits se utilizan para indexar en la tabla de la página. Asi que

* Tamaño de la tabla de páginas = 2 ^ 16 (n.º de páginas) * 4 bytes (tamaño de cada entrada de la tabla de páginas) = ​​2 ^ 18 bytes *

Tabla de páginas de varios niveles : en el caso de una tabla de páginas de dos niveles, use los primeros 10 bits más significativos para indexar en la tabla de páginas de primer nivel. Los siguientes 10 bits para indexar en la tabla de la página de segundo nivel, que tiene el número de página para mapear el número de cuadros. El resto de 12 bits representa el desplazamiento de página.

Tamaño de una tabla de páginas de segundo nivel = 2 ^ 10 (n.º de entradas) * 4 bytes (tamaño de cada entrada) = 4 KB

Tamaño total de todas las tablas de páginas de segundo nivel = 2 ^ 10 (n.º de tablas de páginas de segundo nivel) * 4 KB (tamaño de cada tabla de páginas de segundo nivel) = 4 MB

Tamaño de la tabla de páginas de primer nivel = 2 ^ 10 (N.º de entradas) * (10/8) Bytes (Tamaño de cada entrada) = 1.25 KB

Memoria total requerida para almacenar tablas de páginas de primer y segundo nivel = 4 MB + 1.25 KB

Por lo tanto, necesitamos más memoria para almacenar tablas de páginas de varios niveles.

Si este es el caso, ¿cómo ahorra espacio de memoria la tabla de páginas de varios niveles?


Las tablas de varios niveles son principalmente necesarias porque si la estructura de memoria está en Intel-land.

Supongamos que tiene un sistema de 32 bits y divide el espacio de direcciones para que la parte superior esté reservada para el sistema y la mitad inferior para las direcciones de usuario.

Con una división de este tipo, necesitaría 2GB de entradas de tabla de página contigua en cada tabla de página de usuario para llegar a las direcciones del sistema.

El antiguo VAX a un enfoque simple para esto. Dividió el espacio de direcciones de 4 GB en 4 regiones (2 usuarios, 1 sistema y uno inutilizable). Las tres áreas utilizables tenían su propia tabla de páginas.

Cada región tiene su propia tabla de páginas. Debido a que había un espacio de direcciones del sistema dedicado, las tablas de la página del usuario podían ser direcciones virtuales para que no requirieran memoria contigua.

La primera fase de la traducción de direcciones consistió en mirar los 2 bits de dirección de orden superior para seleccionar la tabla de páginas a usar.

En lugar de tener tablas de páginas separadas, Intel-land rompe la tabla de la página. Eso disminuye los problemas de (1) necesitar memoria contigua para la mesa; (2) requiere que la tabla de páginas abarque todo el espacio de direcciones; (3) permite la definición de direcciones de kernel que pueden ser compartidas por todos los procesos.


  1. En la tabla de páginas de un solo nivel, necesita toda la tabla para acceder incluso a una pequeña cantidad de datos (menos referencias de memoria). es decir, 2 ^ 20 páginas cada PTE ocupando 4 bytes como suponía.

El espacio requerido para acceder a cualquier información es 2 ^ 20 * 4bytes = 4MB

  1. Las páginas de paginación son paginación multinivel. En la paginación multinivel es más específico, puede con la ayuda de la organización multinivel decidir qué página específica entre las páginas 2 ^ 20 que existen y seleccionarla. Entonces aquí solo necesita que esa página específica esté en la memoria mientras ejecuta el proceso.

En el caso de 2 niveles que discutió, necesita tabla de palabras de 1er nivel y luego 1 de las tablas de 2 ^ 10 en el segundo nivel. Entonces, 1er nivel de tamaño = 2 ^ 10 * 4bytes = 4KB 2do nivel solo necesitamos 1 entre las tablas de 2 ^ 10 = entonces el tamaño es 2 ^ 10 * 4bytes = 4KB

El tamaño total requerido ahora es: 4 KB + 4 KB = 8 KB.

La comparación final es de 4MB frente a 8KB.