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


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


88


origem


Isto foi respondido apenas esta manhã em superuser.com/questions/27006/… - Tom
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
Cara, você precisa de um sistema operacional de 64 bits. Sério, comece a economizar seu dinheiro agora. Então essa questão se tornaria um ponto discutível quando você tem um sistema que realmente suporta toda a memória que você pode encher na placa-mãe. - Fiasco Labs
Sinta cuidadosamente ao redor da unidade do sistema por qualquer umidade ou umidade. Pode ser um "vazamento de memória". - EleventhDoctor
@ala: Por causa da divisão da memória do kernel ... (1Gb aloca pelo kernel). Parece que você já está usando a opção / 3gb ... - user2284570


Respostas:


Você não pode:

Vejo Cara, cadê meus 4 gigabytes de RAM?

se você quiser ajustar a memória e os dispositivos em um intervalo de endereços de 32 bits: nem todos os 4 GB disponíveis do espaço de endereço podem ser entregues na memória.
  Então, o que realmente acontece se você sair e comprar 4GB de memória para o seu PC?
  Há um buraco no seu mapa de memória para o IO. (Agora são apenas 25% do espaço total de endereços, mas ainda é um grande buraco.) Portanto, os 3 GB inferiores de sua 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 bits e 64 bits são intercambiáveis. Se você puder obter 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.


70



Eu não entendo - não é 2 ^ 32 4 gigabytes? - Matt
Ahh, deixa pra lá, leia o artigo linkado - Matt
bom saber disso - LiuYan 刘研
@VonC: E sobre esta? - user2284570
@ user2284570 true, o PAE pode ajudar, mas quem ainda está no WXp? ;) - VonC


Primeiro, o Windows XP (32 bits) suporta apenas 4 GB. Isso não se aplica apenas ao Windows XP. Em vez disso, aplica-se a 32bit desktop do Windows - Os sistemas Linux de 32 bits com PAE e muitas edições de 32 bits do Windows Server suportam mais de 4 GB por artigo vinculado. Você nunca verá mais de 4 GB se estiver usando um Windows XP de 32 bits. No entanto, eu encontrei mais detalhes porque o seu sistema mostra menos memória RAM disponível do que o que está realmente instalado.

A partir de O problema de 3GB de RAM não 4GB (Blog da Microsoft MSDN):

Devido a uma decisão arquitetônica feita há muito tempo, se você tiver 4 GB de RAM física instalada, o Windows só poderá reportar uma parte dos 4 GB de RAM física (varia de ~ 2.75 GB a 3.5 GB dependendo dos dispositivos instalados). BIOS).

Esse comportamento é devido a "reservas de E / S de mapeamento de memória". Essas reservas sobrepõem o espaço de endereço físico e mascaram esses endereços físicos para que eles não possam ser usados ​​para a memória de trabalho. Isso é independente do sistema operacional executado 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 de vídeo legado
  • Barramento PCI incluindo pontes, etc.
  • O suporte PCI Express reservará pelo menos 256 MB, até 768 MB, dependendo da memória instalada da placa gráfica

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

Há mais informações, se você verificar a fonte. No entanto, você pode aproveitar os 8 GB completos instalados se você os seguiu instruções.

Falando de experiência pessoal, isso não é um problema novo. Eu corri para este mesmo problema há alguns anos atrás quando eu construí um sistema Windows Vista de 32 bits de 4 GB quando o Vista foi lançado pela primeira vez. Havia inúmeros posts no fórum relacionados a esse mesmo tópico.

Leia também Microsoft KB 929605 - A memória do sistema que é 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.


8



Documentos da Microsoft Aqui que o Windows XP suporta até 128 GB de RAM, se a arquitetura subjacente for de 64 bits. Você pode por favor atualizar sua resposta? - Dan Dascalescu
@SgtOJ: E quanto a esta? - user2284570
@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 que suporte totalmente o 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 que 4GB. E eu acho que ele quis dizer que a sobrecarga de reserva de IO é independente do sistema operacional. - jiggunjer
@jiggunjer Em nenhum lugar da pergunta ou da resposta que eu estava comentando, estava dito ou subentendido que o que estava sendo perguntado era o que um "programa único" poderia usar. Nem a reserva de E / S é estritamente independente do sistema operacional. - Jamie Hanrahan


Se você estiver usando um 32bit Windows XP, então não é possível. Como não há Espaço de Endereçamento disponível para uso da RAM extra

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


3



2^32 é suficiente "espaço de endereço" para caber 4 GiB. Você confunde o espaço de endereço e a memória física. Cada processo em versões modernas do Windows vê o espaço de endereço de 4 GiB completo normalmente apenas 2 GiB são utilizáveis ​​devido ao particionamento de 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. Então a melhor solução seria atualizar do XP para o Windows 7. Você pode por favor atualizar sua resposta? - Dan Dascalescu
@ Shaharyar: E sobre esta? - user2284570


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 comprimento do endereço. Para sistemas operacionais mais antigos, o comprimento 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 todos os outros hardwares (mais significativamente, o ram de vídeo em sua placa de vídeo) que possuem memória interna também são mapeados para esse espaço de endereço.

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


3



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
@BenVoigt: E sobre esta? - user2284570
O PAE é ótimo, se todo o código do kernel for escrito para usá-lo. Infelizmente, um monte de código 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 suposição do modelo plano. É por isso que o servidor Windows permite que o PAE e o cliente não. Veja a resposta de steveb. - Ben Voigt
@BenVoigt: Desde 1997, os Drivers que assumem memória <4GB são raros porque TODOS os drivers WDM podem ser instalados no Windows 2000/2003 ... - user2284570


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

A Microstoft fez uma 'decisão de marketing' para não suportar mais de 4Gb de espaço físico de endereços nas versões 'client' de todas as versões de 32bit dos seus sistemas operacionais - que incluem tudo do w2k ao 32bit Windows 8 (se você visitar o MS KB páginas você vai notar que as versões do servidor de 32 bits podem suportar muito mais - até 128Gb eu acredito com o 32bit 'Enterprise Edition') - é por isso que 'bom' OS 32bit (Linux etc) exatamente no mesmo hardware sempre pode acessar todos a RAM física.

(nota lateral - os usuários do Win7 de 32 bits ficaram tão fartos desse limite 'estúpido' que eles 'hackearam' o Kernal para permitir acesso à 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 o uso do driver. Não há razão para que você não consiga 'endereçar' RAM física além de 4Gb (usando PAE), porém muitos drivers mais antigos no momento do Windows XP Pro falharam e você receberia um erro 'BSOD' (drivers modernos usam o PAE) corretamente e em teoria não há nenhuma razão para que eles precisem de mais do que 32Mb de páginas de espaço (como uma janela) no total, mesmo para suportar uma placa gráfica de 2Gb (o 2gb estará no espaço oi, ou seja, acima de 4GB marca)

No XP SP2, MS quase triplicou a quantidade de espaço de endereços 'reservado' para os motoristas em um esforço para eliminar o BSOD e tem sido assim desde então (MS não quer 'depurar' drivers == eles querem vender a você os 64bits SO em vez disso). O hardware ACTUAL tem quase zero efeito neste espaço 'reservado'.

Então, se você tem 4Gb ou mais de RAM física, a maioria dos XP Pro SP2 + será de cerca de 3,25 Gb .. o resto pode ser acessado usando vários drivers de disco RAM (não o MS, claro) = ir procurar algo que usa o 'Espaço de Endereço Invisível' ou 'alto espaço de 4GB' no XP Pro) .. usando o 'ausente' .75Gb como parte de sua 'memória virtual' pode acelerar o seu sistema ...

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


3



Suporte do Windows XP SP1> 4 GB de RAM se você adicionar o parâmetro / PAE ao boot.ini - user2284570


Se você quiser usar os 4GB 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ê pode precisar de um novo PC para isso também)

O Windows XP normal é de apenas 32 bits, e isso limita a memória ao máximo de 3,5 gb. Verifique o link VonC postado para obter detalhes sobre este tópico.


0



Sendo 32 bits não limita a memória para 3,5 Gb no máximo. São outros dispositivos que consomem o espaço de endereço disponível, portanto também são possíveis 3.75Gb. -1 - MaxVT
É por isso que eu disse "confira o link para detalhes" :-) - FrankS
Corrigir. A Microsoft lista isso XP de 64 bits suporta até 128 GB de RAM. - Dan Dascalescu


Se você usar gráficos integrados, poderá desativá-los, o que significará que o sistema poderá endereçar mais a RAM do seu sistema.

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

Nenhuma razão não muito de qualquer maneira. A maioria dos programas funciona em x64 com o XP / Vista / 7 com uma camada de emulação x86. É apenas drivers que poderia seja o problema.


0



x64 drivers no Windows XP Pro x64 são lixo, mas o Vista e 7 x64 drivers foram muito maduros por um tempo agora. - MDMarra


É uma questão bastante complicada, pois é preciso vários componentes para trabalhar. Esses componentes são:

  • Unidade central de processamento
  • Unidade Controladora de Memória
  • BIOS / (U) EFI
  • Sistema operacional
  • Aplicação

O último item não está relacionado diretamente ao problema, mas eu o adicionei por completo.

Em suma, todos os componentes acima têm que suportar mais de 4 GB de memória para ter sucesso.

Unidade central de processamento

Vamos começar com uma CPU. Mas primeiro é importante notar que uma CPU não tem nenhuma habilidade mágica de usar qualquer memória em absoluto. Em vez disso, poderia apenas Acesso qualquer endereço dentro de sua espaço endereçável. Agora vem a coisa do bitness. CPU de 32 bits é capaz de acessando  Endereços na faixa de 0 a 4 GiB. Este intervalo, no entanto, tem que acomodar não apenas a memória RAM, ROM, SMRAM, Tabela de Remapeamento de Endereço de Gráficos mas também todo o necessário E / S mapeada na memória e muitos mais, o que pode exigir uma parte substancial dessa faixa de endereços. Como conseqüência, pode ser perfeitamente possível que alguns endereços de memória sombreado por esses usos e, portanto, não estão disponíveis para operações na RAM. Para recuperar a memória oculta, é necessário estender a CPU espaço de endereçamento acessível. No caso de CPU de 32 bits Extensão de endereço físico Poderia ajudar. Que permite endereçamentoaté 64 GiB. A CPU de 64 bits operando no modo nativo de 64 bits é, por padrão, capaz de acessando até 16 EiB, que é bastante grande e não requer tais truques. Mas por outro lado, é impraticável para uma CPU de 64 bits usar endereçamento de 64 bits, então, na realidade, eles ainda são limitados pelo seu barramento de endereços a um alcance menor que 16 EiB.

Unidade Controladora de Memória

Inicialmente foi localizado em Ponte norte, mas foi transferido para o processador pela AMD, começando com seus processadores AMD64 e pela Intel com seus processadores Nehalem. Mesmo se uma CPU com PAE for capaz de acessando 64 GiB por si só, ainda precisa de um MCU para acessar a RAM. Basta colocar: uma CPU acessando determinado endereço obtém sua resposta do dispositivo PCI, flash ROM BIOS ou MCU, se o endereço solicitado residir na RAM e assim por diante. No entanto, não é incomum que um MCU (seja em Northbridge ou em CPU) suporte muito menos espaço endereçável de 64 GiB por razões de marketing, por exemplo.

BIOS / (U) EFI

BIOS / (U) EFI também são importantes, 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 processador espaço endereçável 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 pedaços e mapeada em vários pontos não contíguos disponíveis. O problema com a BIOS é que os desenvolvedores podem não esperar mais de 3 GiB de uso de RAM em seu sistema e, como tal, o BIOS não mapeará adequadamente toda a memória a ser usada. Muito 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, deve configurar uma CPU para usar o PAE. Alguns sistemas operacionais de 32 bits são perfeitamente capazes de usar a PAE e acessar mais de 4 GiB, outros têm limite de software no máximo de memória, embora habilitem a PAE para segurança aprimorada (o Windows XP é um exemplo). Mais uma vez, os sistemas operacionais de 64 bits naturalmente não apresentam tais dificuldades e normalmente suportam mais de 4 GiB de memória.

Aplicação

O último ponto é de um mundo diferente, já que os aplicativos geralmente operam em Espaço de endereço virtual, Eu adicionei por uma questão de integralidade. No entanto, são necessárias algumas etapas adicionais durante a compilação para que o aplicativo possa usar mais memória. Por padrão, o aplicativo de 32 bits só é capaz de usar 2 GiB de memória. O mesmo aplicativo de 32 bits endereço até 4 GiB de memória, desde que o SO suporte isso e tenha habilitado o CPU PAE. Mais especificamente, poderia usar com até 3 GiB de memória, os outros 1 GiB seriam endereçáveis ​​como bibliotecas comuns e kernel do sistema operacional, mas não graváveis ​​(em última análise, isso depende da arquitetura do sistema operacional, e não da própria aplicação). Novamente, os aplicativos de 64 bits suportam nativamente o endereçamento de mais de 4 GiB de memória e não apresentam tais problemas em primeiro lugar.

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

Considerar 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 Map da folha de dados. Tem muita informação. O mais interessante é Figure 9-3. Main Memory Address Range: Figure 9-3. Main Memory Address Range e o parágrafo 9.2 Main Memory Address Range (1 MB to TOLUD), que diz o seguinte:

Esse intervalo de endereços vai de 1 MB até o topo da memória física que é permitida   acessível pelo (G) MCH (conforme programado no registro TOLUD). Todos os acessos aos endereços   dentro deste intervalo são encaminhados pelo (G) MCH para a memória principal, a menos que caiam no opcional   TSEG, ISA Hole opcional ou memória VGA roubada opcional do IGD.   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 a memória APIC ou PCI Express   espaço. Isso significa que, como a quantidade de memória física preenchida no sistema atinge 4 GB   (2 GB para o 82945GC / 82945GZ / 82945PL), haverá memória física que ainda não é   endereçável e, portanto, inutilizável pelo sistema.

Como se diz, uma vez que não suporta PAE, em última análise, é incapaz de remapear PCI e todos os outros MMIO acima 4 GiB, portanto, parte da memória será sombreada e não utilizada. O que significa que mesmo que seja usado com uma CPU suportando endereçamento de 36 bits, a memória acima de 4 GiB ainda estará indisponível e parte da memória perto do limite de 4 GiB também não será utilizada.

Por outro lado, vamos considerar Controlador de Memória Intel 82955X, que está relacionado ao anterior, mas é especificado para suportar 8 GB ao contrário do anterior! Parágrafo de folha de dados 2.1 Host Interface Signals sugere que ele use o barramento de endereços de 36 bits para a CPU, o que é um bom sinal. Parágrafo 7 System Address Map tem mais idéias. Comparar Figure 7-1. System Address Ranges para o que vimos antes: Figure 7-1. System Address Ranges Isto sugere claramente que é 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 é importante notar que o parágrafo 7 System Address Map afirma que MCH supports 64 GB of addressable memory space. No entanto, esclarece-se ainda que utilizável A RAM está limitada a 8 GB. Isso mais uma vez declara a diferença entre endereçável e utilizável como eu estava tentando transmitir na seção da CPU.

Para concluir isso, gostaria de observar que dois chipsets relacionados possuem, de fato, grande diferença no manuseio de memória.

Vamos inspecionar Processador Intel Pentium Extreme Edition 840. Suporta conjunto de instruções de 64 bits, mas não suporta PAE. O que significa que, se for 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 tabela Table 4-3. Signal Description. Mesmo que este processador tenha capacidade de 64 bits, ele ainda é limitado pelo barramento de endereços com largura de 36 bits, limitando-o a acessível faixa de endereços começando de 0 a 64 GiB.

Agora vamos examinar uma CPU mais recente. Levar Processador Intel Core i7-7700 por exemplo. É anunciado para suportar até 64 GB de RAM. Agora vamos verificar a folha de dados dele. Parágrafo 2.3 System Address Map nos convence de que esta CPU endereçável O intervalo é de 0 a 512 GiB devido ao barramento de endereços de 39 bits. Observe que ainda está longe da faixa teórica de 16 EiB para uma CPU de 64 bits. Surpreendentemente, porém, esclarece que esta CPU suporta até 32 GiB de utilizável Máximo de RAM (ao contrário de 64 GB no site). Há também uma imagem de interesse aqui Figure 2-2. System Address Range Example: Figure 2-2. System Address Range Example 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 mapeamento um intervalo da RAM real ao intervalo de endereços superior dentro da CPUendereçável alcance. Assim, recuperando essa memória oculta para uso. Note que este remapeamento é feito pelo BIOS / (U) EFI na inicialização do hardware e é exatamente por essa razão que eu incluí o BIOS / (U) EFI na lista de marcadores acima.

Eu tomei produtos da Intel como exemplos, mas o mesmo é verdadeiro para a AMD.

Agora vamos discutir como os sistemas operacionais estão envolvidos. O kernel Linux inclui suporte total 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 do Linux em um sistema de 32 bits. No entanto, esteja ciente de Problema indeterminado com kernel Linux de 32 bits em um sistema com mais de 4 GiB de RAM em algum hardware (na minha experiência, tem algo a ver com os disparos do TLB). De qualquer forma, a Wikipedia tem uma boa informação sobre Suporte PAE. Interessante é como o Windows XP é limitado a 4 GB, enquanto o Windows Server 2003 Enterprise / Datacenter SP2 é capaz de 64 GB. O mesmo acontece com outros pares de computadores Desktop-Server.

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


0





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


-4



Se 3,5 GB é a RAM livre, então por que o Windows ainda a divide em RAM livre e usa RAM? É um sistema operacional, ele deve saber de tudo, especialmente se algo estiver usando até 0,5 GB de memória. Programas instalados não ocupam RAM até que sejam iniciados. - gronostaj