etiqueta memory-management paging

memory-management - etiqueta - caption html



Cálculo del tamaño de la tabla de página (5)

Estoy leyendo un ejemplo de tablas de páginas y acabo de encontrar esto:

Considere un sistema con un espacio de direcciones lógicas de 32 bits. Si el tamaño de la página en dicho sistema es de 4 KB (2 ^ 12), entonces una tabla de página puede constar de hasta 1 millón de entradas (2 ^ 32/2 ^ 12). Suponiendo que cada entrada consta de 4 bytes, cada proceso puede necesitar hasta 4 MB de espacio de direcciones físicas solo para la tabla de páginas.

Realmente no entiendo lo que representa este resultado de 4MB. ¿Representa el espacio que ocupa la tabla de la página real?


Como el espacio de Dirección lógica es de 32 bits de longitud, significa que el tamaño del programa es de 2 ^ 32 bytes, es decir, 4 GB. Ahora tenemos el tamaño de página de 4KB ie2 ^ 12 bytes. Así, el número de páginas en el programa es 2 ^ 20 (número de páginas en el programa = tamaño del programa / tamaño de página). Ahora el tamaño de la entrada de la tabla de la página es de 4 bytes por lo tanto, el tamaño de la tabla de páginas es 2 ^ 20 * 4 = 4MB (tamaño de la tabla de páginas = número de páginas en el tamaño de entrada de la tabla de programas *). Por lo tanto, se requiere un espacio de 4 MB en la memoria para almacenar la tabla de páginas.


Como tenemos un espacio de direcciones virtual de 2 ^ 32 y cada tamaño de página es 2 ^ 12 , podemos almacenar (2 ^ 32/2 ^ 12) = 2 ^ 20 páginas . Como cada entrada en esta tabla de páginas tiene una dirección de tamaño 4 bytes, entonces tenemos 2 ^ 20 * 4 = 4MB . Entonces la tabla de páginas toma 4MB en memoria .


En el sistema de direcciones virtuales de 32 bits podemos tener 2 ^ 32 direcciones únicas, dado que el tamaño de página dado es 4KB = 2 ^ 12, necesitaremos (2 ^ 32/2 ^ 12 = 2 ^ 20) entradas en la tabla de páginas, si cada entrada es 4Bytes, luego el tamaño total de la tabla de la página = 4 * 2 ^ 20 Bytes = 4MB


Mi explicación usa elementos básicos que me ayudaron a comprender. Tenga en cuenta que estoy aprovechando la respuesta de @Deepak Goyal anterior ya que me brindó claridad:

Nos dieron un espacio de direcciones lógico de 32 bits (es decir, tenemos una computadora de 32 bits)

Considere un sistema con un espacio de direcciones lógicas de 32 bits

También nos dijeron que

cada tamaño de página es 4 KB

  • 1 KB (kilobyte) = 1 x 1024 bytes = 2 ^ 10 bytes
  • 4 x 1024 bytes = 2 ^ 2 x 2 ^ 10 bytes => 4 KB (es decir, 2 ^ 12 bytes)
  • El tamaño de cada página es, por lo tanto, 4 KB (Kilo bytes NO kilo bits ).

Como dijo Depaak, calculamos la cantidad de páginas en la tabla de páginas con esta fórmula:

Num_Pages_in_PgTable = Total_Possible_Logical_Address_Entries / page size Num_Pages_in_PgTable = 2^32 / 2^12 Num_Pages_in_PgTable = 2^20 (i.e. 1 million)

Los autores van a dar el caso donde cada entrada en la tabla de páginas toma 4 bytes. Eso significa que el tamaño total de la tabla de páginas en la memoria física será de 4 MB:

Memory_Required_Per_Page = Size_of_Page_Entry_in_bytes x Num_Pages_in_PgTable Memory_Required_Per_Page = 4 x 2^20 Memory_Required_Per_Page = 4 MB (Megabytes)

Entonces sí, cada proceso requeriría al menos 4MB de memoria para ejecutarse, en incrementos de 4MB.

Ejemplo

Ahora, si un profesor quisiera hacer la pregunta un poco más desafiante que la explicación del libro, podría preguntar acerca de una computadora de 64 bits. Digamos que quieren memoria en pedazos . Para resolver la pregunta, seguiríamos el mismo proceso, solo asegurándonos de convertir MB a Mbits.

Pasemos a través de este ejemplo.

Datos:

  • Espacio de direcciones lógicas: 64 bits
  • Tamaño de página: 4 KB
  • Entry_Size_Per_Page: 4 bytes

Recordar: una entrada de 64 bits puede apuntar a uno de 2 ^ 64 marcos de página física - Dado que el tamaño de página es de 4 KB, entonces todavía tenemos tamaños de página de 2 ^ 12 bytes

  • 1 KB (kilobyte) = 1 x 1024 bytes = 2 ^ 10 bytes
  • Tamaño de cada página = 4 x 1024 bytes = 2 ^ 2 x 2 ^ 10 bytes = 2 ^ 12 bytes

¿Cuántas páginas en la tabla de páginas?

`Num_Pages_in_PgTable = Total_Possible_Logical_Address_Entries / page size Num_Pages_in_PgTable = 2^64 / 2^12 Num_Pages_in_PgTable = 2^52 Num_Pages_in_PgTable = 2^2 x 2^50 Num_Pages_in_PgTable = 4 x 2^50 `

¿Cuánta memoria hay en BITS por página?

Memory_Required_Per_Page = Size_of_Page_Entry_in_bytes x Num_Pages_in_PgTable Memory_Required_Per_Page = 4 bytes x 8 bits/byte x 2^52 Memory_Required_Per_Page = 32 bits x 2^2 x 2^50 Memory_Required_Per_Page = 32 bits x 4 x 2^50 Memory_Required_Per_Page = 128 Petabits

[2]: Conceptos del sistema operativo (novena edición): Gagne, Silberschatz y Galvin.


Supongamos que el espacio de direcciones lógicas es ** 32 bits, por lo que las entradas lógicas posibles totales serán 2 ^ 32 y la otra mano supondrá que cada tamaño de página es de 4 bytes y el tamaño de una página es * 2 ^ 2 * 2 ^ 10 = 2 ^ 12 ... * ahora sabemos que no. de páginas en la tabla de páginas es páginas = totales posibles entradas de direcciones lógicas / tamaño de página así páginas = 2 ^ 32/2 ^ 12 = 2 ^ 20 Supongamos ahora que cada entrada en la tabla de páginas toma 4 bytes y luego el tamaño total de la tabla de páginas en * físico la memoria será = 2 ^ 2 * 2 ^ 20 = 2 ^ 22 = 4mb ***