¿Cuál es la diferencia entre el tamaño de página y el tamaño de entrada de la tabla de página?

La mejor respuesta

Bueno, el tamaño de página es el espacio que necesita 1 página. (Eso es bastante simple )

Para tener algunos antecedentes aquí, una tabla de páginas es una tabla de conversiones de direcciones virtuales a físicas que el sistema operativo usa para artificialmente aumentar la cantidad total de memoria principal disponible en un sistema. La memoria física son los bits reales ubicados en las direcciones de la memoria (DRAM), la memoria virtual es donde el sistema operativo se encuentra en los procesos para decirles dónde está para hacer las cosas como permitir 2 ^ 64 bits de espacio de direcciones a pesar del hecho de que 2 ^ 34 bits es la mayor cantidad de RAM que se usa normalmente. (2 ^ 32 bits son 4 gigabytes, por lo que 2 ^ 34 son 16 gb).

Ahora, la mayoría de los tamaños de tabla de páginas predeterminados son 4096 kb para cada proceso, pero el número de entradas de la tabla de páginas puede aumentar si el proceso necesita más espacio de proceso. Los tamaños de tabla de páginas también pueden asignarse inicialmente cantidades o memoria más grandes o más pequeñas, solo que 4 kb suele ser el mejor tamaño para la mayoría de los procesos. Por lo tanto, el tamaño de entrada de la tabla de páginas sería exactamente la cantidad correcta de espacio para contener cualquier dirección en un espacio de direcciones de 32 bits.

Consideremos un ejemplo aquí: Considere un sistema con un espacio de direcciones lógicas de 32 bits. Si la página el tamaño en un sistema de este tipo es de 4 KB (212), por lo que una tabla de páginas puede constar de hasta 1 millón de entradas (232/212). 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.

¿Cómo entenderlo completamente?

Respuesta: 4 bytes (32 bits ) es exactamente la cantidad correcta de espacio para contener cualquier dirección en un espacio de direcciones de 32 bits. Debido a que 1 millón de entradas de 4 bytes cada una suman 4 MB, un proceso «puede» necesitar hasta 4 MB de espacio de direcciones físicas.

Responder

Una página ta ble es mantenido por el sistema operativo por proceso. Cada proceso tiene su propia tabla de páginas , y es por eso que no necesitamos almacenar ningún identificador de proceso en la tabla de páginas. La tabla de páginas asigna un número de página lógico / virtual dado a la dirección de página / marco físico real.

La dirección lógica para una referencia de memoria tiene el formato:

Dirección lógica:

El número de página (número de página virtual) se usa para realizar una búsqueda en la tabla de páginas y obtener la dirección base del marco físico al que está asignado. La dirección base del marco (f) luego se combina con el desplazamiento en la página (d) para obtener la dirección del marco de memoria física como:

f = page-table [p]

Dirección física:

Ahora, considere un sistema con:

1. espacio de direcciones lógicas: 32 bits 2. tamaño de página: 4 KB (2 ^ 12) 3. tamaño de entrada de la tabla de páginas: 4 bytes 4. memoria física: 2 GB

Tenga en cuenta que 4 bytes de una entrada de la tabla de páginas almacena de manera efectiva varios tipos de información además de la dirección base del marco físico. Esta información puede ser para protección de memoria (bit válido / inválido), tipo de acceso (lectura / escritura), contabilidad, etc. Me refiero a la dirección del marco físico (f), en realidad me refiero a esta parte particular de la entrada de 4 bytes.

Calculemos el tamaño de una tabla de páginas:

Tamaño de la tabla de páginas = (número de entradas * tamaño de cada entrada).

Dados los parámetros anteriores, una dirección lógica de 32 bits se dividirá en:

o

.

Ahora podemos calcular que el número de entradas en la tabla de páginas (número total de páginas virtuales) puede ser tan grande como 2 ^ 20. Por lo tanto, el tamaño de la tabla de páginas sería:

(2 ^ 20) * 4bytes = 4MB de espacio (por proceso).

Se necesitaría tanto espacio en la memoria física para la tabla de páginas de cada proceso. No olvide que solo tenemos 2 GB de memoria principal y que tener 4 MB de ese espacio para la tabla de páginas de cada proceso puede no ser una buena idea. Además, es posible que muchas de las direcciones virtuales no tengan ninguna dirección de página física asignada. Pero , aún así, el tamaño de la tabla de páginas será grande. Incluso si el bit «válido» no está configurado para un número de página virtual, tendrá que existir un espacio para él en la tabla de páginas.

En caso de compartición memoria, tener una tabla de páginas por proceso requerirá una entrada de la misma página física en la tabla de páginas de cada proceso que tenga acceso compartido a esa página, por lo que el sistema terminará manteniendo múltiples entradas para la misma dirección de marco físico. No es una muy buena utilización de la memoria física.

También podemos entender que una tabla de página para cada proceso contendrá una entrada por dirección virtual. El tamaño de la tabla es proporcional al tamaño de lógica / virtual espacio de direcciones que en realidad puede llegar a ser enorme.

Nuestro objetivo es reducir / optimizar la cantidad de memoria física necesaria para almacenar las tablas de páginas. La tabla de página invertida es una de esas soluciones.

Tabla de página invertida es una tabla de página global mantenida por el sistema operativo para todos los procesos. Solo hay una tabla de páginas en todo el sistema, lo que implica que es necesario almacenar información adicional en la tabla de páginas para identificar las entradas de la tabla de páginas correspondientes a cada proceso.

Almacena una entrada por trama física y es una matriz lineal donde el contenido de cada ubicación es y el índice de cada ubicación es la dirección de la trama física. La fórmula cambiará ahora:

= page-table [f]

Esto inmediatamente implica que las búsquedas ya no pueden ocurrir en el número de página virtual. Se debe buscar en toda la tabla entrada por entrada para encontrar una entrada coincidente que tenga el pid igual a «id» y el número de página virtual igual a «p». La ubicación del índice correspondiente a la coincidencia es la dirección física del marco (f), que luego, combinada con el desplazamiento (d), da la dirección física.

Podemos inferir fácilmente ese tiempo de búsqueda en una página invertida La tabla puede ser significativamente más alta en comparación con una tabla de página simple .

Sin embargo, debido a que la tabla almacena una entrada por dirección de marco físico y hay una tabla de página única en todo el sistema, la cantidad de memoria utilizada por la tabla de página invertida se ha reducido considerablemente. ¿Cómo?

Considere los mismos parámetros nuevamente:

1. espacio de direcciones lógicas: 32 bits 2. tamaño de página: 4 KB (2 ^ 12) 3. tamaño de entrada de la tabla de páginas: 4 bytes. 4. memoria física: 2GB (2 ^ 31)

Número de entradas en la tabla de páginas = Número de páginas físicas =

(2 ^ 31) / (2 ^ 12) = 2 ^ 19 páginas físicas o marcos.

Digamos que usamos identificadores de proceso de 1 byte. El tamaño de cada entrada de la tabla de páginas sería:

8 bits (PID) + 20 bits ( número de página virtual) + 4 bits (información de acceso) = 32 bits = 4 bytes.

Tamaño de la tabla de páginas = (2 ^ 19) * 4 = 2 MB para todo el sistema.

El rendimiento de las tablas de páginas invertidas generalmente se aborda a través de tablas de páginas con hash. Pero hay una desventaja más de usar tablas de páginas invertidas además del rendimiento. Es la memoria compartida.

Porque hay una y solo una entrada en la tabla de páginas por marco físico, y que contiene exactamente un número de página virtual, ya no podemos asignar el mismo marco físico a varios números de página virtual en diferentes procesos. Hay formas de evitar esto, pero no conocemos los detalles para escribir aquí .

Fuente: conceptos del sistema operativo (Silberschatz et al)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *