O que limita as máquinas Windows 7 x64 a <= 192 GB de RAM?


117

Eu sei que placas-mãe, BIOS, etc. podem estabelecer limites máximos de quanta RAM podemos instalar ou usar em máquinas individuais. No entanto, o que define a RAM máxima para o Windows 7 x64?

Essa é uma limitação arquitetônica fundamental do sistema operacional? Diferentes versões do Windows 7 têm diferentes máximos de RAM (edição inicial <= 2 GB, profissional <= 192 GB). É algo que pode realmente ser mudado?

Como comparação, o Ubuntu 64x permite até 1024GB de RAM.



1
Eles escolhem limitações físicas. Quando o Windows 7 foi lançado não havia hardware que apoiou mais de 192 GB de memória no mercado não-servidor
Ramhound

5
instalar o Windows 8, aqui o Pro / Enterprise pode usar 512 GB de RAM.
magicandre1981

Respostas:


185

Resposta curta: a licença

Excluindo o hardware da equação, é principalmente uma restrição artificial de software:

[O] limite é recuperado do registro chamando uma função denominada ZwQueryLicenseValue, que é chamada de um procedimento interno que os arquivos de símbolos publicados da Microsoft nomeiam MxMemoryLicense.

Fonte: memória licenciada no Windows Vista de 32 bits

Informação adicional

Obviamente, os dados de licença armazenados no registro, mesmo em um formato não documentado, podem ser facilmente alterados pelos usuários, o que eles teriam algum incentivo para tentar, uma vez que a Microsoft cobra preços significativamente diferentes por licenças diferentes. A Microsoft, portanto, possui um esquema elaborado para verificar se os dados da licença permanecem como a Microsoft deseja. O kernel é o repositório para saber se os dados de licença foram adulterados e, para esse fim, exporta mais duas funções, ExGetLicenseTamperStatee ExSetLicenseTamperState.

Fonte: Licenciamento de Software

­

ExGetLicenseTamperState

Esta função [não documentada] pergunta ao kernel se os dados da licença foram violados.

O uso interno está em um cronômetro que se repete aproximadamente a cada hora. Se o estado de violação for encontrado 4, o Windows será interrompido. O código de verificação de erro é SYSTEM_LICENSE_VIOLATION( 0x9A), com 0x1Bo primeiro argumento.

Fonte: ExGetLicenseTamperState

Um exemplo prático

Digamos que você tenha um computador com 32 GiB de RAM e instale o Windows 7 Home Premium x64 (64 bits). Nesse caso, você estaria limitado a 16 GiB. Se você usasse o Windows Anytime Upgrade e atualizasse para uma edição mais cara, de repente o limite seria definido para 192 GiB.

Conclusão

Todas as edições do Windows 7 compartilham o mesmo código fonte. A principal diferença é o número de recursos / limitações que estão ativados ou desativados. As edições profissional e superior do cliente não têm limite superior para a quantidade de RAM que podem suportar e são licenciadas apenas para o que a Microsoft garante suporte.

Além disso, o EULA do Windows 7 diz explicitamente que você não pode "usar o software para serviços comerciais de hospedagem de software", sugerindo que a Microsoft presumiu que se você precisar de mais RAM para a qual a edição mais alta do cliente está licenciada, o que você realmente deseja é um servidor licença. O servidor do Windows 7 (ou seja, Windows Server 2008 R2) pode usar até 2 TiB de RAM nas edições Enterprise e Datacenter.

À medida que a tecnologia avança rapidamente, o que era aceitável ontem pode não ser suficiente amanhã. Para recuperar o atraso, o Windows 8 aumentou os limites para 128 GiB e 512 GiB para as edições Core e Pro / Enterprise, respectivamente. Isso se aplica apenas às versões de 64 bits: as versões de 32 bits ainda estão limitadas a 4 GiB. A versão do servidor, Windows Server 2012, pode endereçar até 4 TiB de RAM nas edições superiores.

Leitura adicional


32
Essa é a melhor resposta, pois está vinculada a uma boa fonte de análise.
21413 Kevin Kevin Panko

9
Apenas uma pequena defesa: o código fonte pode ser o mesmo, mas não é necessariamente o mesmo código que estaria lá sem o suporte. Como exemplo, muito trabalho foi feito para melhorar a escalabilidade quando você tem muitos processadores (consulte "bloqueio de expedidor global" aqui: tomshardware.com/news/microsoft-windows-server.6589.html ). Esse código é quase certamente o mesmo em todas as edições, no entanto, edições superiores do Windows suportam mais CPUs. Mas o suporte a mais CPUs levou mais trabalho. É justo cobrar mais por esse trabalho?
Mark Sowul

8
Em resumo: min (license_limit, physical_limit)
Akira

2
Os produtos @ AndonM.Coleman, como o Windows, que vendem tantas cópias, os custos de desenvolvimento por licença são insignificantes em comparação com a maioria dos outros custos por licença. Vejo artigos online dizendo que o Windows 8 vendeu mais de 100 milhões de licenças nos primeiros 6 meses. Durante a vida útil do Windows 8 / 8.1, espero que o custo de desenvolvimento por licença seja menor que o custo de produção de uma caixa de varejo e o conteúdo por caixa. Novas versões do Windows normalmente não são gravadas do zero. O Windows 8 / 8.1 / 2012 é MUITO parecido e semelhante ao Vista / 7/2008. O XP / 2003/2000 também pode ser agrupado
#

5
Não me interpretem mal, as novas versões tiveram um trabalho feito para torná-las melhores do que as versões antigas. Mas coisas como gerenciamento de memória permanecem quase idênticas entre as versões. Alguns ajustes são feitos com freqüência, pois o novo hardware destaca problemas que antes não eram evidentes nos testes. Mas o código principal permanece o mesmo em um grupo de produtos.
BeowulfNode42

53

A Microsoft licencia dessa maneira. Eles provavelmente querem que você pague por um produto Windows Server licenciado para executar com mais recursos. É o mesmo com outros produtos como o SQL Server. O SQL Server Express possui limitações para que, se você precisar de mais recursos, compre o produto que o permite.


6
He he, Windows Server está disponível gratuitamente para os alunos ( DreamSpark ), então para nós, é mais viável para obter esse que para comprar uma cópia do Windows ... (sem filiação)
gparyani

2
esta é uma das razões por que 32 bits do Windows XP e acima pode suportar PAE mas MS restringe o limite de 4 GB de RAM
phuclv

3
@MattH o limite de 3GB é porque o Gig superior é memória mapeada para periféricos
catraca aberração

2
@ MattH Esse é um equívoco comum. Como exemplo, consulte os Requisitos de sistema oficiais do Windows Server 2008 : "Máximo ( sistemas de 32 bits ): 4 GB (padrão) ou 64 GB (Enterprise e Datacenter)". Nesse caso, 4 GB são uma restrição de licença e 64 GB é o limite da Extensão de Endereço Físico (supondo que o chipset suporte o remapeamento).
and31415

3
O motivo pelo qual o Windows de 32 bits do consumidor se recusa a usar mais de 4 GB de espaço de endereço é que existem muitos drivers de 32 bits herdados que não conhecem o PAE e causariam BSODs se usados ​​com ele. Seria um pesadelo de suporte se a MS permitisse isso.
Andrew Medico
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.