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, ExGetLicenseTamperState
e 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 0x1B
o 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