Por que os SOs de 32 bits não conseguem endereçar mais de 3.2 / 3.2 gb de memória?

6

Não sei se este é o lugar certo para fazer esta pergunta.

Eu tenho lido que sistemas operacionais de 32 bits (como o Ubuntu que estou rodando agora) não podem endereçar mais de 3.2GB ou 3.3GB de memória RAM.

Eu me lembro do meu antigo curso de Arquitetura de Computadores que a limitação de memória era de 2 ^ 32 "ponteiros" (não lembro a palavra certa). Quer dizer, a memória foi representada como uma matriz onde a CPU pode acessá-la diretamente, mas até o limite. Se a CPU é de 32 bits, então ele pode endereçar 2 ^ 32 palavras, se for 64 bits 2 ^ 64, etc.

Então, se o que eu disse antes está certo, então, meu SO deve ser capaz de endereçar 2 ^ 32 = 4294967296 = 4Gb.

Estou pensando que talvez seja reservado algum espaço para o uso específico do Kernel, cache, buffering ou troca. Mas não tenha a resposta correta.

Você pode me dar uma dica?

    
por Mehper C. Palavuzlar 17.11.2010 / 21:39

6 respostas

9

O Windows usa alguns dos endereços de hardware destinados a endereçar memória, para outro hardware (como USB, SATA, Controladores de Disco, etc.). Então, alguns desses endereços de hardware não podem ser usados para a sua memória. Daí o limite.

Até onde sei, o Unix / Linux CAN pode endereçar um pouco mais do que o limite de 3,2 GB do Windows. Isso ocorre porque o Linux usa um esquema de endereçamento diferente.

Há também uma função chamada PAE (Physical Address Extension), que faz com que os sistemas operacionais de 32 bits usem mais de 4 GB.

    
por 17.11.2010 / 21:41
5

Isso tem a ver com a memória que o BIOS precisa reservar para processos básicos, como transferência de dados para dispositivos e memória de vídeo. A memória acima de cerca de 3,2 GB (varia de sistema para sistema, eu já vi 3,6 GB e 3,1 GB) é remapeada ao longo do limite de 4 GB onde a PAE é necessária para acessá-lo. Sistemas diferentes lidam com esse caso de maneira diferente. Alguns sistemas não se importam em acessá-lo, fornecendo apenas 3,2 GB de RAM para os processos. Outros usam apenas o PAE, que é mais lento para processos.

    
por 17.11.2010 / 21:44
3

O PAE não é padrão nos kernels 2.6 do Linux. Mas é suportado acima de 2.3.23 kernels ..

O PAE permite o uso de até 64 GB de memória RAM em um sistema de 32 bits No entanto, limitando um único processo para o espaço de 32 bits ... e degradação do desempenho geral / não apenas para usar acima de 4 gb ..

Eu tive que mudar alguns sistemas operacionais de banco de dados em crescimento para 64 bits para que o MySQL pudesse aproveitar a RAM instalada .. A diferença de velocidade era notável: D

Dê uma olhada aqui link

    
por 17.11.2010 / 21:59
1

Seu sistema operacional de 32 bits pode endereçar 4GB de RAM, mas a arquitetura do PC significa que a memória de vídeo e muitos outros recursos são mapeados na memória, portanto nem todo o espaço de endereçamento é livre para uso como RAM comum.

    
por 17.11.2010 / 21:41
0

== Off Topic ==

Isso me lembra da velhice do DOS, em que um computador só conseguia ver 640k de RAM, embora mais pudesse ser instalado. Mesmo que arquitetonicamente 2 ^ 20 bytes (1024k), onde acessível o topo 384k (área de memória superior) só poderia ser abordado com truques.

    
por 18.11.2010 / 06:54
0

O artigo da Wikipedia sobre a "barreira 3GB" explica isso muito bem. Se o seu sistema operacional não suportar PAE, você estará limitado a 4 GB de espaço de endereço físico, e isso deve incluir a RAM e os mapeamentos de dispositivos PCI "registradores" e "memória". O grande consumidor habitual na última categoria é a sua placa de vídeo. link

    
por 08.08.2014 / 23:16