Estou lendo o capítulo Extensão de Endereço Físico (PAE) na Quarta Edição do Windows Internals (páginas 435-437) e não consigo encontrar a referência a 24 bits. Há uma referência a 25 bits usados para o endereço da página base, o que significa que o espaço endereçável se torna 2 ^ (12 + 25) = 128GB. Mas nós vamos voltar a isso. Primeiro vamos ver como o endereço linear é convertido em endereço físico (e isso é descrito perfeitamente no livro): o endereço linear é dividido em três partes:
- 12 bits inferiores são deslocados dentro da página endereçando qualquer byte na página 4Kb;
- os próximos 10 bits são o índice do registro na tabela de páginas (PTE), que contém o endereço base (endereço físico do primeiro byte) da página;
- os 10 bits mais altos são o índice do registro na tabela de diretórios da página (PDE), que contém o endereço base para o PTE.
Cada item em PTE e PDE contém registro de 32 bits, 20 dos quais contêm o endereço físico da página ou a próxima tabela de nível, respectivamente. Os outros 12 bits são sinalizadores descrevendo a página ou a tabela (legível / gravável / executável e assim por diante). Foi assim que o 80386, o x486 e o Pentium funcionaram.
Agora, os processadores Pentium Pro e mais recentes, quando executados no modo PAE, usam registros de 64 bits em tabelas PDE e PTE. Nestes registros, até 40 bits podem ser usados para codificar o endereço base da página na memória. Isso significa que o modo PAE pode, teoricamente, endereçar 2 ^ 40 páginas (1T páginas) de 2 ^ 12 (4Kb cada). O espaço de endereço teórico total é 2 ^ (40 + 12) = 2 ^ 52 = 4Peta bytes. No entanto, os sistemas operacionais não usam todos esses 40 bits. Por exemplo, o Windows usa apenas 24 deles, o que leva a um espaço de endereçamento total de 2 ^ (24 + 12) = 2 ^ 36 = 64 GB.
Aparentemente, diferentes versões (sabores) do Windows usam um número diferente de bits nesta tabela, o que parece um pouco estranho. De acordo com a 4 ª edição do livro em questão, 25 bits são usados neste caso, o que traz o espaço endereçável para 128Gb, e também é confirmado por esta página . Esta é a fonte da discrepância entre a 4ª e a 5ª edição, mencionada acima.
Para uma explicação mais detalhada de como a tradução acontece, dê uma olhada nas páginas 4-17 e 4-18 (capítulo 4.4.2) de Manual do desenvolvedor de software das arquiteturas Intel® 64 e IA32
Ah, sim, e o sistema é chamado de 32 bits não porque endereça 2 ^ 32 bytes. É porque ele é executado no modo em que os registradores internos têm 32 bits de largura (o que nem sempre é mais verdade, mas está próximo o suficiente da realidade). Se o espaço endereçável determinasse o nome do sistema operacional, então o DOS teria sido um sistema operacional de 20 bits e os Macs antigos seriam um sistema operacional de 24 bits