
Livros sobre sistemas operacionais geralmente mencionam que o tamanho da página é decidido pela arquitetura do processador, por exemplo, Intel x86 suporta tamanho de página de 4 KB. Tenho a percepção de que quando estávamos instalando um sistema operacional em nosso hardware, o sistema operacional leu o tamanho da página de 4 KB do hardware e dividiu logicamente o espaço de endereço virtual em páginas de 4 KB e a memória em quadros, respectivamente.
Se minha percepção for verdadeira, de onde ou de qual local do hardware o sistema operacional lê esse valor de 4 KB do processador? Qual mecanismo o sistema operacional usa para determinar o tamanho da página fornecido pelo hardware? Alguém pode me esclarecer sobre isso? Como (com base em quê) A Intel decide manter o tamanho da página de 4 KB.
Responder1
Os sistemas operacionais codificam o tamanho da página dependendo da arquitetura (e, em alguns casos, da configuração do kernel em tempo de construção). Por exemplo, em x86 o tamanho básico da página é sempre 4KiB — esta é uma propriedade da arquitetura da CPU; no Linux você verá isso definidoeminclude/asm/page_types
. No ARM de 64 bits, o tamanho da página pode ser configurado em tempo de construção como 4KiB, 16KiB ou 64KiB. Algumas arquiteturas têm vários tamanhos de página em tempo de execução (por exemplopáginas enormes em x86), mas todos os tamanhos são conhecidos antecipadamente e o tamanho base é fixo.
No Linux, a definição canônica do tamanho da página é PAGE_SIZE
, e você a obtém incluindo asm/page.h
, que é específico da arquitetura (que pode incluir outros cabeçalhos, como acontece no x86). Elixir fornece uma lista útil detodas as PAGE_SIZE
definições.
A maioria das arquiteturas suportadas pelo kernel Linux suporta páginas de 4KiB; as exceções são Alpha, ARC, alguns sistemas Motorola 68k, OpenRISC e SPARC de 64 bits, que usam páginas de 8KiB. Muitas arquiteturas podem ser configuradas para usar outros tamanhos de página.