Por que o Windows mostra apenas cerca de 3,5 GB dos meus 4 GB de RAM?


90

Atualizei recentemente a RAM do meu computador para 4 GB. Minha instalação do Windows de 32 bits mostra apenas 3574 MB de memória. Como posso fazer o Windows usar a quantidade total de RAM?


2
Esta foi respondida apenas esta manhã em superuser.com/questions/27006/...
Tom

3
Isso precisa ser aumentado em 2000 votos, porque parece que todos os dias eu me deparo com outra pessoa que pergunta "onde está minha memória?" A Microsoft deve tirar isso da caixa de diálogo. . .
surfasb

2
Cara, você precisa de um sistema operacional de 64 bits. Sério, comece a economizar seu dinheiro agora. Então, essa pergunta se tornaria um ponto discutível quando você possui um sistema que realmente suporta toda a memória que você pode armazenar na placa-mãe.
Fiasco Labs

1
Sinta-se cuidadosamente ao redor da unidade do sistema para detectar qualquer umidade ou umidade. Pode ser um 'vazamento de memória'.
EleventhDoctor

@ala: Por causa da divisão da memória do kernel ... (1 GB alocado pelo kernel). Parece que você já está usando o alternar
3gb

Respostas:


71

Você não pode:

Veja cara, cadê meus 4 gigabytes de RAM?

se você deseja ajustar a memória e os dispositivos a um intervalo de endereços de 32 bits: nem todo o espaço de endereço disponível de 4 GB pode ser entregue à memória.
Então, o que realmente acontece se você comprar 4 GB de memória para o seu PC?
Há um buraco no seu mapa de memória para o IO. (Agora, é apenas 25% do espaço total de endereços, mas ainda é um grande buraco.) Portanto, os 3 GB inferiores da memória estarão disponíveis, mas há um problema com os últimos 1 GB.

A única solução prática é instalar um sistema operacional de 64 bits. No Windows Vista e versões posteriores, as chaves de licença de 32 e 64 bits são intercambiáveis. Se você conseguir a mídia de instalação do Windows para a versão de 64 bits do seu sistema operacional, poderá reinstalar usando sua chave de licença original.


Eu não entendo - não é 2 ^ 32 4 gigabytes?
Matt

6
Ahh, deixa pra lá, realmente ler o artigo ligado
Matt

bom saber disso
LiuYan


@ user2284570 verdade, o PAE pode ajudar, mas quem ainda está no WXp? ;)
VonC 04/04

8

Primeiro, o Windows XP (32 bits) suporta apenas 4 GB. Isso não se aplica apenas ao Windows XP. Em vez disso, aplica-se aos sistemas Windows de 32 bits para desktop - sistemas Linux de 32 bits com PAE e muitas edições do Windows Server de 32 bits suportam mais de 4 GB por artigo vinculado. Você nunca verá mais de 4 GBs se estiver usando um Windows XP de 32 bits. No entanto, encontrei uma razão mais detalhada pela qual o seu sistema mostra menos RAM disponível do que o que está realmente instalado.

Do problema de RAM de 3 GB e não de 4 GB (blog do Microsoft MSDN):

Devido a uma decisão arquitetural tomada há muito tempo, se você tiver 4 GB de RAM física instalada, o Windows poderá reportar apenas uma parte dos 4 GB de RAM física (varia de ~ 2,75 GB a 3,5 GB, dependendo dos dispositivos instalados, chipset da placa-mãe e BIOS).

Esse comportamento ocorre devido a "reservas de E / S mapeadas na memória". Essas reservas cobrem o espaço de endereço físico e ocultam esses endereços físicos para que não possam ser usados ​​para a memória de trabalho. Isso é independente do sistema operacional em execução na máquina.

Pedaços significativos de espaço de endereço abaixo de 4 GB (o endereço mais alto acessível via 32 bits) são reservados para uso pelo hardware do sistema:

  • BIOS - incluindo ACPI e suporte a vídeo herdado
  • Barramento PCI, incluindo pontes etc.
  • O suporte ao PCI Express reserva pelo menos 256 MB, até 768 MB, dependendo da memória instalada da placa gráfica

O que isso significa é que um sistema típico pode ver entre ~ 256 MB e 1 GB de espaço de endereço abaixo de 4 GB reservados para uso de hardware que o sistema operacional não pode acessar. As especificações do chipset Intel são muito boas para explicar quais intervalos de endereços são reservados por padrão e, em alguns casos, destacam que 1,5 GB é sempre reservado e, portanto, inacessível ao Windows.

Há mais informações se você verificar a fonte. No entanto, você poderá tirar proveito dos 8 GB completos instalados se seguir estas instruções .

Falando por experiência pessoal, este não é um problema novo. Corri para esse mesmo problema há alguns anos atrás quando construí um sistema Windows Vista de 4 GB e 32 bits quando o Vista foi lançado. Havia inúmeras postagens no fórum on-line relacionadas a esse mesmo tópico.

Leia também Microsoft KB 929605 - A memória do sistema relatada na caixa de diálogo Informações do sistema no Windows Vista é menor do que o esperado se 4 GB de RAM estiverem instalados .


A Microsoft documenta aqui que o Windows XP suporta até 128 GB de RAM, se a arquitetura subjacente for de 64 bits. Você pode atualizar sua resposta?
Dan Dascalescu


1
@SgtOJ: O limite de 4 GB de RAM NÃO se aplica a "todos os sistemas operacionais de 32 bits". Um sistema operacional de 32 bits com suporte total ao PAE (como o Windows Server 2003) pode usar mais de 4 GB de RAM. "32 bits" restringe o espaço de endereço virtual, não físico.
Jamie Hanrahan

@JamieHanrahan que ainda significa que um único programa não pode usar mais de 4 GB. E acho que ele quis dizer que as despesas gerais de reserva de E / S são independentes do SO.
jiggunjer

@jiggunjer Em nenhum lugar da pergunta ou resposta que eu estava comentando, era dito ou implícito que o que estava sendo perguntado era o que um "programa único" poderia usar. A reserva de E / S também não é estritamente independente do SO.
Jamie Hanrahan

3

Se você estiver usando um Windows XP de 32 bits, não será possível. Como não há espaço de endereço suficiente disponível para fazer uso da RAM extra

A melhor solução seria atualizar para uma versão de 64 bits do Windows, pois suporta mais de 4 GB de RAM.


2^32é suficiente "espaço de endereço" para caber 4 GiB. Você confunde espaço de endereço e memória física. Todo processo nas versões modernas do Windows vê o espaço de endereço completo de 4 GiB, embora normalmente apenas 2 GiB sejam utilizáveis ​​devido ao particionamento UM / KM do espaço de endereço virtual.
0xC0000022L

@ 0xC0000022L: Esse não é o problema que está sendo discutido aqui.
Ben Voigt

Segundo a Microsoft , a maioria das versões do Windows 7 (incluindo 32 bits) suporta até 192 GB de RAM. O único requisito é que a arquitetura subjacente seja de 64 bits. Portanto, a melhor solução seria atualizar do XP para o Windows 7. Você pode atualizar sua resposta?
Dan Dascalescu

@ Shaharyar: E isso ?
precisa saber é o seguinte

3

Como os outros disseram, não é possível.

Explicação:

Cada pedaço de memória tem um endereço. O sistema operacional especifica o tamanho do endereço. Para sistemas operacionais mais antigos, o tamanho do endereço é de 32 bits, o que permite apenas 2 ^ 32 (4 294 967 296) endereços. Agora, olhando para esse número, pode parecer que seu sistema operacional deve suportar 4 GB, mas todo o outro hardware (mais significativamente, a ram de vídeo na sua placa de vídeo) que possui memória interna também é mapeado para esse espaço de endereço.

É como se você estivesse tentando distribuir 1.200.000 números de telefone de seis dígitos.


Você está misturando RAM e espaço de endereço.
0xC0000022L

@ 0xC0000022L: Não, ele não é. Ele está falando sobre o espaço de endereço físico, enquanto a RAM deve ser mapeada para ser utilizável.
Ben Voigt


O PAE é ótimo, se todo o código do kernel for escrito para usá-lo. Infelizmente, muitos códigos do kernel são drivers escritos por terceiros que mal conseguem manter suas coisas estáveis ​​com um modelo de memória simples. A ativação do PAE exige que todos os drivers existentes sejam descartados com a premissa de modelo plano. É por isso que o servidor Windows habilita o PAE e o cliente não. Veja a resposta de steveb.
Ben Voigt

@BenVoigt: Desde 1997, os motoristas que assumem memória <4GB são raros, porque todos os drivers WDM pode ser instalado em Windows 2000/2003 ...
user2284570

3

A placa-mãe antiga suporta apenas 4Gb de RAM física, a moderna suporta muito mais. A CPU Intel P4 sempre pode endereçar mais de 4Gb (usando algo chamado Extensão de endereço físico ou PAE)

A Microstoft tomou uma 'decisão de marketing' de não suportar mais do que o espaço de endereço físico 4Gb nas versões 'client' de todas as versões de 32 bits de seus sistemas operacionais - que inclui tudo, desde w2k a 32 bits do Windows 8 (se você visitar o MS KB páginas, você notará que as versões do servidor de 32 bits podem suportar muito mais - até 128 Gb, acredito que com a 'Enterprise Edition' de 32 bits) - e é por isso que os SOs de 32 bits 'adequados' (Linux etc) no exatamente o mesmo hardware sempre podem acessar TODOS a RAM física.

(nota: os usuários de 32 bits do Win7 ficaram tão cansados ​​desse limite 'estúpido' que 'invadiram' o Kernal para permitir ascensão à RAM física completa .. desnecessário dizer que isso quebra sua licença e é ilegal nos EUA (DCMA )

O Windows XP 32bit 'reserva' parte do espaço de endereço de 4Gb para uso do driver. Não há razão para que você não possa "endereçar" a RAM física além de 4Gb (usando PAE), no entanto, muitos OLD DRIVERS existentes no momento do Windows XP Pro falharam e você receberia um erro "BSOD" (drivers modernos usam PAE corretamente e NA TEORIA, não há razão para que eles precisem de mais de 32Mb de páginas de espaço 'lo' (como uma 'janela') no total, mesmo para suportar uma placa gráfica de 2Gb (os 2gb estarão no espaço 'hi', ou seja, acima de 4Gb marca)

No XP SP2, a MS quase triplicou a quantidade de espaço de endereço 'reservada' para os drivers, em um esforço para eliminar os BSODs, e é assim desde então (a MS não quer 'depurar' drivers == eles querem vender a você os 64 bits Sistema operacional). O hardware REAL tem quase zero efeito neste espaço 'reservado'.

Portanto, se você tem 4Gb ou mais de RAM física, o máximo que o XP Pro sp2 + verá é de cerca de 3,25Gb. O restante PODE ser acessado usando vários drivers de disco de RAM diferentes (não é o MS, é claro) = vá procurar algo que usa o 'espaço de endereço invisível' ou 'alto espaço de 4 gb' no XP Pro). usar o '75GB' ausente como parte da sua 'memória virtual' pode acelerar o sistema ...

Observe que a opção / 3G pode permitir que aplicativos de 32 bits acessem até 3Gb em um sistema operacional de 32 bits (se eles tiverem o sinalizador LargeAddressAware definido no cabeçalho .exe - nesse caso, eles poderão acessar até 4Gb em um sistema operacional de 64 bits), mas no XP, você também precisa especificar / USERVA para impedir que o sistema operacional seja "espremido" da RAM :-)


Suporte do Windows XP SP1> 4 GB de RAM se você adicionar a opção / PAE ao boot.ini
user2284570

0

Se você quiser usar os 4 GB completos, a única opção é atualizar para um sistema operacional de 64 bits:

  • Windox XP 64
  • Windows Vista 64
  • Linux
  • Max OS / X (ok, você também pode precisar de um novo PC)

O Windows XP normal tem apenas 32 bits e isso limita a memória a 3,5 GB no máximo. Verifique o link que o VonC postou para obter detalhes sobre este tópico.


Ser 32 bits não limita a memória a 3,5 Gb máx. Outros dispositivos consomem o espaço de endereço disponível, então também são possíveis 3,75 Gb. -1
MaxVT 21/08/09

É por isso que eu disse "verificar o link para mais detalhes" :-)
Franks

Corrigir. A Microsoft lista que o XP de 64 bits suporta até 128 GB de RAM .
Dan Dascalescu

0

Se você usar gráficos integrados, poderá recusá-lo, e isso significa que o sistema poderá endereçar mais da RAM do sistema.

Mas a melhor solução é definitivamente obter um sistema operacional x64.

Não há razão para não de qualquer maneira. A maioria dos programas funciona em x64, com o XP / Vista / 7 com uma camada de emulação x86. São apenas os drivers que podem ser o problema.


1
Os drivers x64 no Windows XP Pro x64 são lixo, mas os drivers Vista e 7 x64 já estão maduros há algum tempo.
MDMarra 21/08/2009

0

É uma pergunta bastante complicada, pois são necessários vários componentes para resolver. Esses componentes são:

  • Unidade central de processamento
  • Unidade controladora de memória
  • BIOS / (U) EFI
  • Sistema operacional
  • Inscrição

O último item não está diretamente relacionado ao problema, mas o adicionei por uma questão de integridade.

Em poucas palavras, todos os componentes acima precisam suportar mais de 4 GB de memória para obter êxito.

Unidade central de processamento

Vamos começar com uma CPU. Mas primeiro é importante notar que uma CPU não possui nenhuma capacidade mágica de usar nenhuma memória . Em vez disso, ele poderia acessar qualquer endereço dentro de seu espaço endereçável . Agora aqui vem a coisa da testemunha. A CPU de 32 bits é capaz de acessar endereços no intervalo de 0 a 4 GiB. Esse intervalo, no entanto, deve acomodar não apenas a RAM, ROM, SMRAM , tabela de mapeamento de endereço gráfico , mas também todas as E / S mapeadas na memória necessáriase muito mais, o que pode exigir parte substancial desse intervalo de endereços. Como conseqüência, pode ser perfeitamente possível que alguns endereços de memória tenham sido ocultados por esses usos e, portanto, não estejam disponíveis para operações na RAM. Para recuperar a memória oculta, é necessário aumentar o espaço de endereço acessível da CPU . No caso da extensão de endereço físico da CPU de 32 bits, pode ajudar. O que permite endereçar até 64 GiB. A CPU de 64 bits que opera no modo nativo de 64 bits é, por padrão, capaz de acessaraté 16 EiB, que é bastante grande e não exige esses truques. Mas, por outro lado, é impraticável para uma CPU de 64 bits usar o endereçamento de 64 bits; portanto, na realidade, eles ainda estão limitados pelo barramento de endereços a um intervalo menor que 16 EiB.

Unidade controladora de memória

Inicialmente, estava localizado em Northbridge , mas foi transferido para a matriz do processador pela AMD começando com seus processadores AMD64 e pela Intel com seus processadores Nehalem. Mesmo que uma CPU com PAE seja capaz de acessar 64 GiB por si mesma, ainda precisará de um MCU para acessar a RAM. Simplificando: uma CPU que acessa um endereço específico recebe sua resposta do dispositivo PCI, BIOS ROM flash ou MCU, se o endereço solicitado reside na RAM e assim por diante. No entanto, não é incomum um MCU (seja na Northbridge ou na CPU) suportar muito menos espaço endereçável que 64 GiB por razões de marketing, por exemplo.

BIOS / (U) EFI

O BIOS / (U) EFI também é importante, pois é seu dever configurar o hardware antes que qualquer coisa possa realmente operar. Entre outras coisas, eles são responsáveis ​​por mapear todo o espaço endereçável do processador com intervalos de memória de dispositivos de hardware, barramentos, RAM e assim por diante. Curiosamente, pode acontecer que toda a RAM seja dividida em partes e mapeada em vários pontos não contíguos disponíveis. O problema com o BIOS é que seus desenvolvedores podem não esperar mais de 3 GiB de uso de RAM em seu sistema e, como tal, o BIOS não mapeia corretamente toda a memória a ser usada. Provavelmente isso não acontecerá com (U) EFI.

Sistema operacional

O sistema operacional também deve suportar o endereçamento de mais de 4 GiB de memória. Para ser mais específico, ele deve configurar uma CPU para usar o PAE. Alguns sistemas operacionais de 32 bits são perfeitamente capazes de usar o PAE e acessar mais de 4 GiB, outros têm limite de software na memória máxima, mesmo que habilitem o PAE para maior segurança (Windows XP é um exemplo). Mais uma vez, os sistemas operacionais de 64 bits naturalmente não têm essas dificuldades e normalmente suportam mais de 4 GiB de memória.

Inscrição

O último ponto é de um mundo diferente, já que os aplicativos geralmente operam em um espaço de endereço virtual , eu o adicionei por uma questão de integridade. No entanto, são necessárias algumas etapas adicionais durante a compilação do aplicativo para poder usar mais memória. Por padrão, o aplicativo de 32 bits é capaz apenas de usar 2 GiB de memória. O mesmo aplicativo de 32 bits pode endereçar até 4 GiB de memória, desde que o SO ofereça suporte e habilite o CPU PAE. Mais especificamente, ele poderia usaraté 3 GiB de memória, os outros 1 GiB seriam endereçáveis ​​como bibliotecas comuns e kernel do SO, mas não graváveis ​​(no final das contas, isso depende da arquitetura do SO e não do próprio aplicativo). Novamente, os aplicativos de 64 bits oferecem suporte nativo ao endereçamento de mais de 4 GiB de memória e não têm esses problemas em primeiro lugar.

Para colocar tudo isso em perspectiva, vamos considerar vários exemplos.

Considere o controlador de memória Intel® 82945G . O site da Intel afirma que ele não suporta PAE e está limitado a 4 GB de RAM. Vamos consultar o parágrafo 9 System Address Mapda folha de dados. Tem muita informação. O mais interessante é Figure 9-3. Main Memory Address Range: Figura 9-3.  Intervalo de endereços da memória principal e o parágrafo 9.2 Main Memory Address Range (1 MB to TOLUD), com a seguinte redação:

Esse intervalo de endereços se estende de 1 MB até a parte superior da memória física que pode ser acessada pelo (G) MCH (conforme programado no registro TOLUD). Todos os acessos aos endereços dentro desse intervalo são encaminhados pelo (G) MCH para a memória principal, a menos que caiam na memória VGA opcional TSEG, ISA Hole opcional ou IGD roubada. O (G) MCH fornece um espaço máximo de decodificação de endereço de memória principal de 4 GB (2 GB para o 82945GC / 82945GZ / 82945PL). O (G) MCH não remapeia o espaço de memória APIC ou PCI Express. Isso significa que, quando a quantidade de memória física preenchida no sistema atingir 4 GB (2 GB para o 82945GC / 82945GZ / 82945PL), haverá memória física que existe, ainda que não seja endereçável e, portanto, inutilizável pelo sistema.

Como ele diz, como não oferece suporte ao PAE, ele é incapaz de remapear o PCI e todos os outros MMIO acima de 4 GiB; portanto, parte da memória ficará sombreada e sem uso. O que significa que, mesmo que seja usado com uma CPU que suporta endereçamento de 36 bits, a memória acima de 4 GiB ainda estará indisponível e parte da memória próxima ao limite de 4 GiB também não será utilizada.

Por outro lado, vamos considerar o Controlador de memória Intel® 82955X , que está relacionado ao anterior, mas foi especificado para suportar 8 GB, ao contrário do anterior! O parágrafo da folha de dados 2.1 Host Interface Signalssugere que ele usa um barramento de endereço de 36 bits para a CPU, o que é um bom sinal. O parágrafo 7 System Address Maptem mais informações. Compare Figure 7-1. System Address Rangescom o que vimos antes: Figura 7-1.  Intervalos de endereço do sistema isso sugere claramente que ele é capaz de utilizar mais de 4 GiB de RAM, desde que seja usado com a CPU também capaz de endereçamento de 36 bits. Também vale a pena notar que esse parágrafo 7 System Address Mapafirma isso MCH supports 64 GB of addressable memory space. No entanto, é esclarecido ainda que a RAM máxima utilizável é limitada a 8 GB. Mais uma vez, isso declara a diferença entre endereçável eutilizável como eu estava tentando transmitir na seção CPU.

Para concluir, gostaria de observar que dois chipsets relacionados têm, de fato, uma enorme diferença no tratamento de memória.

Vamos inspecionar o processador Intel® Pentium® Extreme Edition 840 . Ele suporta o conjunto de instruções de 64 bits, mas não o PAE. O que significa que, se executado no modo de 32 bits, não será possível usar mais de 4 GiB de RAM (por favor, corrija-me se estiver errado com essa suposição). Vamos verificar a folha de dados e a tabela Table 4-3. Signal Description. Mesmo que essa CPU seja capaz de 64 bits, ainda é limitada pelo fato de o barramento de endereços ter 36 bits de largura, limitando-o ao intervalo de endereços acessível , começando de 0 a 64 GiB.

Agora vamos examinar uma CPU mais recente. Veja o processador Intel® Core ™ i7-7700, por exemplo. É anunciado para suportar até 64 GB de RAM. Agora vamos verificar a folha de dados dele. O parágrafo 2.3 System Address Mapnos convence de que o intervalo endereçável desta CPU é de 0 a 512 GiB devido ao barramento de endereço de 39 bits. Observe que ainda está longe da faixa teórica de 16 EiB para uma CPU de 64 bits. Surpreendentemente, esclarece ainda que esta CPU suporta até 32 GiB de RAM utilizável no máximo (ao contrário de 64 GB no site). Há também uma imagem de interesse aqui Figure 2-2. System Address Range Example: Figura 2-2.  Exemplo de intervalo de endereços do sistema ele faz um bom trabalho ilustrando o problema com sombreamento de memória por dispositivos PCI etc. Também sugere uma maneira de superar esse problema mapeandouma faixa de RAM real até a faixa de endereços superior dentro da faixa endereçável da CPU . Recuperando assim a memória oculta para uso. Observe que esse remapeamento é feito pelo BIOS / (U) EFI na inicialização do hardware e é exatamente por esse motivo que eu incluí o BIOS / (U) EFI na lista acima.

Tomei os produtos Intel como exemplo, mas o mesmo se aplica à AMD.

Agora vamos discutir como os sistemas operacionais estão envolvidos. O kernel Linux inclui suporte completo ao modo PAE a partir da versão 2.3.23 e é perfeitamente possível ter mais de 4 GiB de memória utilizável com o kernel Linux em um sistema de 32 bits. No entanto, esteja ciente de um problema indeterminado com o kernel do Linux de 32 bits em um sistema com mais de 4 GiB de RAM em algum hardware (na minha experiência, isso tem algo a ver com os ataques de TLB). De qualquer forma, a Wikipedia tem boas informações sobre o suporte ao PAE . Interessante é como o Windows XP é limitado a 4 GB, enquanto o Windows Server 2003 Enterprise / Datacenter SP2 é capaz de 64 GB completos. O mesmo vale para outros pares de servidores Desktop-Windows.

Como você pode ver, existem muitas combinações entre os componentes listados e, em alguns casos, substituir uma CPU ou SO pode ajudar. É muito mais difícil lidar com o BIOS / (U) EFI ou MCU, já que o primeiro é proprietário e embutido no sistema e não é facilmente modificável, o segundo é embutido no CPU ou soldado a bordo.


-4

mostra 3574MB de RAM, porque é a quantidade de RAM que é GRATUITA e disponível para o computador usar a qualquer momento. Esta figura é a RAM à qual o seu computador tem acesso total, porque os programas e configurações pré-instalados no PC usam uma quantidade de RAM que, no seu caso, tem 426mb. Meu PC de 6 GB e 64 bits mostra que a RAM disponível de 5,8 GB não é a versão completa dos 6 GB. Sua melhor aposta seria procurar atualizar seu PC


Se 3,5 GB é a RAM livre, então por que o Windows ainda a divide em RAM livre e usou a RAM? É um sistema operacional, ele deve saber de tudo, especialmente se algo estiver consumindo 0,5 GB de memória. Os programas instalados não ocupam RAM até serem iniciados.
22613 gronostaj
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.