A memória física do Windows x86 é de 24 bits?

5

Estou lendo o novo livro, Windows Internals 5, sobre gerenciamento de memória (capítulo 9 na seção PAE de extensão de endereço físico). É mencionado "Um sistema de 32 bits representa endereços físicos internamente com 24 bits" na página 770. Estou totalmente confuso, e acho que a memória física x86 também deve ser endereçada por 32 bits, e é por isso que o sistema é chamado de 32 sistema de bits.

Alguma ideia do que está errado?

    
por George2 20.09.2009 / 07:17

3 respostas

2

Aqui estão mais detalhes sobre o que significa inicialização / PAE do capítulo 7 do livro "Inside Windows 2000", de David Solomon e Mark Russinovich.

All of the Intel x86 family processors since the Pentium Pro include a memory-mapping mode called Physical Address Extension (PAE). With the proper chipset, the PAE mode allows access to up to 64 GB of physical memory. When the x86 executes in PAE mode, the memory management unit (MMU) divides virtual addresses into four fields.

The MMU still implements page directories and page tables, but a third level, the page directory pointer table, exists above them. PAE mode can address more memory than the standard translation mode not because of the extra level of translation but because PDEs and PTEs are 64-bits wide rather than 32-bits. The system represents physical addresses internally with 24 bits, which gives the x86 the ability to support a maximum of 2^(24+12) bytes, or 64 GB, of memory

Edit: Como George diz Portanto, 24 bits de números de páginas representam 24 + 12 = 36 bits de endereços de bytes. Esta é uma extensão de endereço sobre o espaço normal de 32 bits.

    
por 20.09.2009 / 07:35
1

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

    
por 20.09.2009 / 07:26
0

O que isso está se referindo é o mapeamento de um espaço de endereço virtual de 32 bits para um espaço de endereço físico de 24 bits. Geral: um número de página virtual de 20 bits é traduzido para um número de página física de 12 bits e os bits restantes são o deslocamento para a página

    
por 20.09.2009 / 07:32