No
caso das versões de 32 bits do Vista, por exemplo, o limite
máximo (segundo o http://support.microsoft.com/kb/929605)
é de 3.12 GB. Ou seja, na maioria dos casos, não vale a
pena pagar por mais 4 GB de memória, já que apenas uma
pequena parte do último GB seria utilizada. Melhor se
contentar com 3 GB.
Mesmo
ao utilizar um processador de 64 bits, combinado com um sistema
operacional de 64 bits, um grande volume de endereços entre os
3 e 4 GB de memória continuam reservados, de forma a manter
compatibilidade com os programas de 32 bits, fazendo com que,
novamente, pelo menos 512 MB entre os 3 e 4 GB da memória não
sejam usados. A vantagem nesse caso é que você pode
instalar mais de 4 GB de memória. Com 8 GB, por exemplo, você
ficaria com de 7 a 7.5 GB utilizáveis.
Algumas
placas de 64 bits oferecem a opção "Memory Hole
Remapping" (ou similar) no setup. Ao ativar esta opção,
as áreas de memória reservadas aos dispositivos é
movida para uma área mais alta do Virtual Address Space (que
nos processadores de 64 bits é muito maior), liberando a maior
parte da memória antes inacessível por causa deles.
Outras
placas suportam o Memory Hoisting (da palavra "hoist", que
significa levantar ou suspender), um recurso que segue outro
princípio, deixando os endereços dos dispositivos onde
estão e remapeando os trechos de memória subscritos por
eles para áreas mais altas do espectro de endereços,
permitindo que o sistema tenha acesso a elas.
Uma
observação é que estas duas opções
causam muitos problemas de compatibilidade com aplicativos, por isso
você só deve utilizá-las caso realmente faça
questão de ter acesso à toda a memória
instalada.
Além
das limitações relacionadas ao Virtual Address Space,
existem outros limites de memória, impostos pelo chipset ou
por limitações do sistema operacional usado.
A
maioria dos chipsets antigos, para placas soquete 7, por exemplo,
eram capazes de endereçar apenas 128 ou 256 MB de memória
RAM. O chipset Intel i815, usado em uma grande parte das placas para
processadores Pentium III e Celeron era capaz de endereçar
apenas 512 MB, enquanto o 915GL (para o Pentium 4) era capaz de
endereçar 2 GB. Até pouco tempo atrás, o suporte
a 4 GB ou mais de memória estava restrito a alguns chipsets
destinados a servidores.
O
Windows 95/98/SE é capaz de endereçar até 512 MB
de memória RAM. Programas como o cacheman permitem utilizar
estas versões antigas do Windows em PCs com mais de 512 MB de
RAM, mas o desempenho acaba sendo pior do que com apenas 512.
O
Windows XP e as versões de 32 bits do Vista são capazes
de endereçar 4 GB, de forma que o limite fica por conta do
Virtual Address Space. O maior problema são as versões
"populares" do Windows, onde o limite é
artificialmente reduzido, de forma a restringir o uso do sistema aos
PCs de baixo custo. O XP Starter possui um limite de 256 MB, enquanto
o Vista Starter está limitado a 1 GB.
Nas
versões de 64 bits do Vista, os limites são estendidos,
mas ainda existem limitações. O Vista Home Basic está
limitado a 8 GB, o Home Premium a 16 GB e as demais versões
(Business, Enterprise e Ultimate) a 128 GB.
A
memória swap não entra na conta, pois ela é
acessada através de um componente especializado incluído
no processador, chamado de MMU (Memory Management Unit) que
permite justamente que dados armazenados na memória RAM física
sejam movidos para a memória swap (que é na verdade um
arquivo ou partição no HD), conforme necessário.
Graças
ao MMU é possível complementar os 3 ou 3.5 GB de
memória RAM física com uma quantidade indefinida de
memória swap, limitada apenas ao máximo suportado pelo
sistema operacional. A principal questão é que o uso da
memória swap é muito limitado em um PC atual, já
que ela é muito lenta. Uma
dúvida comum é com relação ao uso do PAE
(Physical Address Extension), uma extensão para processadores
de 32 bits, presente desde o Pentium Pro, que adiciona 4 bits
adicionais ao endereçamento da memória, permitindo que
o processador seja capaz de acessar até 16 páginas de 4
GB cada, totalizando 64 GB. Cada programa continua restrito a um
máximo de 4 GB, mas o sistema pode alocar diferentes páginas
para aplicativos diferentes, utilizando assim toda a memória
disponível.O
PAE é muito usado em servidores, embora esteja sendo
rapidamente substituído pelo uso de processadores e sistemas
operacionais de 64 bits. Ele é suportado pelo Windows Server
2003 e pelo Windows 2000, onde pode ser ativado através da
opção "/PAE" no arquivo boot.ini, mas não
é uma solução viável para quem precisa
usar mais do que 4 GB de memória em um desktop, devido a uma
série de problemas relacionados a drivers. O
PAE apresenta endereços de 64 bits aos drivers, o que torna
necessário que eles sejam modificados para utilizar o sistema.
Como o uso do PAE sempre foi limitado a servidores, muitos
dispositivos não possuem drivers compatíveis e nem
sempre é fácil encontrar os disponíveis. Existem
ainda problemas de compatibilidade com diversos aplicativos.
Atualmente, é muito mais simples migrar para as versões
de 64 bits do Vista (ou mesmo para o XP de 64 bits) do que passar a
utilizar o PAE, de forma que é melhor não perder tempo
com ele no caso dos desktops. Outro
problema fundamental do PAE é a questão do desempenho.
O processador continua sendo capaz de acessar apenas 4 GB de memória
por vez e precisa chavear continuamente entre as páginas
disponíveis. Além de demorar um certo tempo, cada
chaveamento faz com que os dados armazenados nos caches precisem ser
completamente substituídos, o que prejudica de forma
perceptível o desempenho. Ou seja, tentar usar o PAE em um
desktop para acessar mais memória e assim melhorar o
desempenho é simplesmente contra produtivo. Uma
observação importante é que todas as versões
do Windows XP, a partir do SP2 tem o PAE desativado, justamente para
evitar problemas de compatibilidade. Nele, a opção
"/PAE" no boot.ini simplesmente não faz nada. No
caso do Linux, o modo de acesso à memória é
escolhido durante a compilação do Kernel. Ao utilizar um processador de 32
bits, o Linux oferece suporte nativo a até 4 GB de memória
usando o modo normal de operação do processador e a até
64 GB usando o PAE. Ou seja, ele simplesmente acompanha o suporte
disponível no hardware, sem nenhuma limitação
adicional.
Para melhorar o desempenho do
sistema em máquinas antigas, que utilizam 1 GB de memória
ou menos, existe uma terceira opção, onde o Kernel
endereça apenas 1 GB de memória, sendo que 896 MB ficam
disponíveis para os aplicativos e o restante é
reservado para uso do Kernel. Neste modo de operação, o
comando "free" vai reportar que existem apenas 896 MB de
memória disponível, mesmo que você possua 1 GB ou
mais.
É possível escolher
entre as três opções ao compilar o Kernel, na
opção "Processor Type and Features > High
Memory Support". Até por volta de 2005, muitas
distribuições vinham com o suporte a apenas 1 GB
ativado por padrão, mas atualmente a grande maioria utiliza a
opção "4 GB". É possível mudar
a opção ao recompilar o Kernel manualmente.
A desvantagem de ativar o suporte a
4 GB é que o sistema ficará um pouco mais lento em
micros com menos de 1 GB de memória (justamente por isso
existe a primeira opção). O suporte a 64 GB só
pode ser ativado caso você esteja usando um processador com
suporte ao PAE, além de uma placa-mãe compatível.
Naturalmente, tudo isso se aplica
apenas ao usar uma distribuição com um Kernel compilado
para processadores de 32 bits. Ao usar uma versão de 64 bits,
o Kernel acessa toda a memória disponível, limitado
apenas ao volume de memória suportado pelo chipset ou
processador.
Voltando ao mundo Windows, existe
mais uma limitação importante, que é o limite de
2 GB por aplicativo. Os 3, 3.12 ou 3.5 GB de memória
que um sistema de 32 bits é capaz de endereçar é
repartida entre todos os programas abertos, mas no caso do Windows,
cada programa sozinho não pode usar mais do que 2 GB.
Isso acontece por que, assim como o
sistema operacional, os programas de 32 bits endereçam a
memória utilizando endereços de 32 bits e por isso são
capazes de endereçar 4 GB de memória. No Windows,
metade da faixa de endereços de cada programa é
reservada para uso do kernel, sobretudo para a comunicação
entre o sistema operacional e o aplicativo. Com isso, cada aplicativo
fica com apenas metade da sua área de endereços
disponível, o que limita seu uso de memória a 2 GB.
Isso vem se tornando uma limitação
importante em alguns games e aplicativos pesados, que podem exceder
este limite nos momentos de maior atividade. Pior, além de não
acessarem toda a memória disponível, os aplicativos de
32 bits freqüentemente travam sem aviso ao romper a barreira dos
2 GB, exibindo alguma mensagem de erro genérica.
Este limite está
profundamente enraizado no sistema, de forma que é quase
impossível que ele venha a ser removido em futuras versões.
Ele afeta tanto quem utiliza as versões de 32 bits do Windows
(com mais de 2 GB de memória RAM instalada), quanto quem roda
programas de 32 bits sobre as versões de 64 bits do Windows
(neste caso o limite se aplica apenas aos aplicativos de 32 bits,
naturalmente).
Uma forma de amenizar o problema,
caso você esteja enfrentando problemas de travamento em algum
game pesado, por exemplo, é modificar a divisão de
endereços entre o aplicativo e o kernel.
No Windows XP é possível
reservar 3 GB para os aplicativos através da opção
"/3gb" no arquivo boot.ini. Entretanto, usá-la
causa problemas de estabilidade em um número muito grande de
programas, por isso ela não é necessariamente uma boa
idéia. Além disso, apenas programas que explicitamente
indicam que são capazes de acessar mais de 2 GB são
autorizados pelo sistema a utilizar os endereços adicionais, o
que reduz brutalmente o número de programas que são
realmente capazes de se beneficiar do uso da opção.
No caso do Vista, é possível
ajustar os valores de forma mais flexível através da
opção "IncreaseUserVa" do BCDedit. Através
dele você pode reservar, por exemplo, 2.2 ou 2.4 GB para os
aplicativos. Usando valores mais baixos que os 3 GB do XP, você
evita a maior parte dos problemas de estabilidade. De uma forma
geral, funciona bem com a alocação de até 2.6 GB
para os aplicativos. A partir daí você corre o risco de
ver telas azuis.
Como você pode ver, o uso das
opções permite apenas minimizar o problema. A única
forma de se livrar dele completamente é rodar um sistema de 64
bits e usar apenas aplicativos de 64 bits sobre ele.
http://www.gdhpress.com.br/hardware/leia/index.php?p=cap4-12