
Los libros sobre sistemas operativos generalmente mencionan que el tamaño de página lo decide la arquitectura del procesador; por ejemplo, Intel x86 admite un tamaño de página de 4 KB. Tengo la percepción de que cuando estábamos instalando un sistema operativo en nuestro hardware, el sistema operativo había leído el tamaño de página de 4 KB del hardware y lógicamente dividió el espacio de direcciones virtuales en páginas de 4 KB de tamaño y la memoria en marcos, respectivamente.
Si mi percepción es cierta, ¿desde dónde o desde qué ubicación del hardware el sistema operativo lee este valor de 4 KB del procesador? ¿Qué mecanismo utiliza el sistema operativo para determinar el tamaño de página proporcionado por el hardware? ¿Alguien puede iluminarme sobre esto? Cómo (sobre qué base) Intel decide mantener un tamaño de página de 4 KB.
Respuesta1
Los sistemas operativos codifican el tamaño de la página según la arquitectura (y, en algunos casos, la configuración del kernel en tiempo de compilación). Por ejemplo, en x86 el tamaño de página básico es siempre 4 KB; esta es una propiedad de la arquitectura de la CPU; en Linux verás esto definidoeninclude/asm/page_types
. En ARM de 64 bits, el tamaño de la página se puede configurar en el momento de la compilación como 4 KB, 16 KB o 64 KB. Algunas arquitecturas tienen varios tamaños de página en tiempo de ejecución (p.ejpáginas enormes en x86), pero todos los tamaños se conocen de antemano y el tamaño base es fijo.
En Linux, la definición canónica del tamaño de página es PAGE_SIZE
, y se obtiene al incluir asm/page.h
, que es específica de la arquitectura (lo que podría incluir otros encabezados, como sucede en x86). Elixir proporciona una práctica lista detodas las PAGE_SIZE
definiciones.
La mayoría de las arquitecturas admitidas por el kernel de Linux admiten páginas de 4 KB; las excepciones son Alpha, ARC, algunos sistemas Motorola de 68k, OpenRISC y SPARC de 64 bits, que utilizan páginas de 8KiB. Muchas arquitecturas se pueden configurar para utilizar otros tamaños de página.