Qual é a diferença entre o kernel de 32 bits e os kernels de 64 bits?

5

Eu pergunto isso apenas em relação ao endereçamento de memória.

Eu sei que um kernel PAE permite que o SO acesse mais memória do que um kernel padrão de 32 bits, mas quais são as outras implicações? Quais são as diferenças específicas entre um kernel de 64 bits e um kernel PAE de 32 bits?

De acordo com a Wikipedia, um espaço de endereçamento de processos permanece em 32 bits, o que significa que ele só pode acessar no máximo 4 GB de memória. No entanto, o sistema operacional pode acessar um espaço de endereço de 64 GB, alocando pedaços de 4 GB aos processos.

Para mim, parece que esta é uma grande distinção que parece ser ignorada por muitas pessoas.

    
por Mr. Shickadance 26.04.2011 / 17:29

3 respostas

6

O kernel vê a memória física e fornece uma visão dos processos. Se você já se perguntou como um processo pode ter um espaço de memória de 4 GB se toda a sua máquina tiver apenas 512 MB de RAM, é por isso. Cada processo tem seu próprio espaço de memória virtual. Os endereços nesse espaço de endereço são mapeados para páginas físicas ou para trocar espaço. Se para trocar espaço, eles terão que ser trocados de volta na memória física antes que seu processo possa acessar uma página para modificá-lo.

O exemplo de Torvalds na resposta de XQYZ (DOS highmem) não é muito improvável, embora eu discorde de sua conclusão de que o PAE é geralmente uma coisa ruim. Ele resolveu problemas específicos e tem seus méritos - mas tudo isso é argumentativo. Por exemplo, o implementador de uma biblioteca pode não perceber a implementação como fácil, enquanto o usuário dessa biblioteca pode perceber essa biblioteca como muito útil e fácil de usar. Torvalds é um implementador, então ele é obrigado a dizer o que a declaração diz. Para um usuário final, isso resolve um problema e é com isso que o usuário final se preocupa.

Por um PAE ajuda a resolver outro problema legado em máquinas de 32 bits. Ele permite que o kernel mapeie os 4 GB de memória e trabalhe em torno do espaço de memória da BIOS existente em muitas máquinas e faça com que um kernel de 32 bits sem PAE "veja" apenas 3,1 ou 3,2 GB de memória, apesar dos 4 GB físicos.

De qualquer forma, para o kernel de 64 bits, é uma relação simétrica entre a página física e as páginas virtuais (deixando espaço de troca e outros detalhes à parte). No entanto, o kernel do PAE mapeia entre um ponteiro de 32 bits dentro do espaço de endereço do processo e um endereço de 36 bits na memória física. Mais contabilidade é necessária aqui. Palavra-chave: "Tabela de Páginas Estendida". Mas isso é um pouco mais de uma questão de programação. Essa é a principal diferença. Mais contabilidade, em comparação com um espaço de endereçamento linear completo. Para PAE, são pedaços de 4 GB, como você mencionou.

Além disso, ambos PAE e 64 bits permitem páginas grandes (em vez das páginas padrão de 4 KB em 32 bits).

O Capítulo 3 do Volume 1 do Manual do processador Intel tem uma visão geral e o Capítulo 3 do Volume 3A ("Gerenciamento de Memória do Modo Protegido") tem mais detalhes, se você quiser ler sobre ele.

To me it seems like this is a big distinction that seems to be ignored by many people.

Você está certo. No entanto, a maioria das pessoas são usuários, não implementadores . É por isso que eles não se importam. E, desde que você não precise de muita memória para seu aplicativo, muitas pessoas não se importam (especialmente porque existem camadas de compatibilidade).

    
por 26.04.2011 / 21:53
2

Você pode querer ver o que Linus Torwalds diz sobre isso aqui :

PAE turned that very simple fact on its head, and screwed things up royally. Whoever came up with the idea was totally incompetent, and had forgotten all the DOS HIGHMEM pains. There’s a damn good reason why we left the 286 behind, and started using 386′s, instead of having HIGHMEM crap with windows into a bigger physical space.

[...]

So repeat after me: PAE didn’t ever really fix anything. It was a mistake. It was just a total failure, and the result of hw engineers not understanding software.

    
por 26.04.2011 / 19:39
0

Do ponto de vista da CPU,

  1. PAE é uma coisa externa : a CPU tem apenas 36 pinos para endereçar um endereço de memória.
  2. Enquanto o 64-bit é uma coisa interna : ele usa os 32 bits superiores de seus registradores.

Do ponto de vista do resto do sistema, não há diferença se você estiver usando um PAE ou um kernel de 64 bits. Ele pode ver apenas os sinais dos pinos da CPU, e o A CPU tem 36 bits para endereçar a memória nos dois casos.

Claro que (2) inclui automaticamente também (1).

    
por 12.12.2017 / 08:14