¿El tamaño de la página es siempre igual al tamaño del marco?

9

Estoy aprendiendo sobre paginación. Mi libro dice que las direcciones lógicas generadas por la CPU están en forma |p|d|(número de página, desplazamiento de página) y las direcciones físicas están en forma |f|d|(número de marco, desplazamiento de marco). También se menciona específicamente que, des decir, el desplazamiento se copia directamente para generar la dirección física a partir de las lógicas.

Ahora, el sentido común dice que si el desplazamiento se copia directamente, el tamaño de la página TIENE que ser igual al tamaño del marco (de lo contrario, los desplazamientos no corresponderían). Pero desafortunadamente mi libro no dice nada al respecto.

Entonces, ¿el tamaño de la página siempre es igual al tamaño del marco?

Por favor, active las imágenes;)

Combustible
fuente

Respuestas:

8

Una página es una región de espacio de direcciones virtuales, y un marco de página es una región de memoria física. Una página que mapea una región de memoria física debe tener el mismo tamaño que esa pieza de memoria física, de lo contrario no tiene sentido.

También suelen estar alineados correctamente. Si intenta asignar, digamos, un marco de página de 2Mb a la memoria virtual, tanto la dirección virtual como la dirección física deben estar alineadas a 2Mb.

Muchas CPU modernas admiten más de un tamaño de página, y algunas pueden admitir diferentes tamaños de página en el mismo espacio de direcciones. Intel x86-64 actual, por ejemplo, admite tamaños de página de 4kb, 2Mb y 1Gb. Estos números no son arbitrarios; representan el espacio de direcciones cubierto por diferentes "niveles" en la tabla de páginas multinivel. Del mismo modo, ARM moderno admite páginas de 4 kb, 64 kb y 1 Mb, aunque ARM no se refiere a las páginas de 1 Mb como "páginas" (son "secciones"). ARMv4 y ARMv5 soportaron la división de páginas en las llamadas "subpáginas"; estos ya no están disponibles en ARMv7.

Curiosamente, hay algunas otras cosas que a menudo son del mismo tamaño que el tamaño de la página. Obviamente, una entrada TLB tiene el mismo tamaño que una página o marco, ya que conceptualmente es un caché para las entradas de la tabla de páginas. Sin embargo, el tamaño de la caché L1 a menudo también está determinado por el tamaño de la página.

Suponga que la caché L1 es asociativa de conjuntos (una caché de mapeo directo es realmente solo una caché asociativa de conjuntos de 1 vía, por lo que puede pensar en esto como un caso límite), entonces a menudo es conveniente hacer que un "conjunto" tenga el tamaño de Una página física. Supongamos que el tamaño de la página es de 4 kb, y la caché L1 es una caché asociativa de 4 vías, entonces el "mejor" tamaño para la caché L1 es 16 kb (que es cuatro veces 4 kb). Vea si puede resolverlo usted mismo, este podría ser el caso.

Seudónimo
fuente
1

sí, el tamaño de la página debe ser igual al tamaño del marco para minimizar la fragmentación interna de la memoria principal.

RAJNISH
fuente
3
Tenga en cuenta que algunas arquitecturas admiten varios tamaños de página simultáneamente.
TEMLIB
¿Puedes elaborar? Preferimos respuestas detalladas que brinden explicación, justificación o análisis. Si el tamaño de la página no fuera igual al tamaño del marco, ¿cómo podría causar esto una mayor fragmentación interna de la memoria principal? ¿Puedes editar la respuesta para agregar una explicación de esto?
DW
La respuesta anterior con 1 voto a favor es absolutamente incorrecta. La paginación utiliza bloques de memoria de tamaño constante y, por lo tanto, minimiza la fragmentación externa a expensas de la interna, si la memoria asignada es inferior a una página. Entonces, llegué a la conclusión de que su sistema operativo será más feliz si elige pageSize = frameSize.
Jignesh Kumar
@JigneshKumar, no utilice el cuadro 'Su respuesta' para comentar las respuestas existentes. En su lugar, concéntrese en preguntas en las que pueda proporcionar una respuesta completa propia o haciendo nuevas preguntas útiles. ¡Gracias!
DW
0

El marco de la página no puede ser más pequeño que la página, porque entonces el desplazamiento podría desbordar el marco de la página. ¿Qué pasa con el reverso: el marco de la página es más grande que la página? A diferencia del escenario anterior, esto funcionaría, pero sería un desperdicio porque habría partes del marco de página que nunca se usaron (estas son las partes que están más allá del desplazamiento máximo).

JRG
fuente