Respuesta corta: la licencia
Excluyendo el hardware de la ecuación, es principalmente una restricción de software artificial:
[El] límite se recupera del registro llamando a una función llamada ZwQueryLicenseValue
, que se llama a sí misma desde un procedimiento interno que los archivos de símbolos publicados por Microsoft llaman MxMemoryLicense
.
Fuente: memoria con licencia en Windows Vista de 32 bits
Información Adicional
Por supuesto, los datos de la licencia almacenados en el registro, incluso en un formato no documentado, podrían ser cambiados fácilmente por los usuarios, lo que tendrían algún incentivo para probar ya que Microsoft cobra precios significativamente diferentes para las diferentes licencias. Por lo tanto, Microsoft tiene un esquema elaborado para verificar que los datos de la licencia permanezcan como Microsoft los quiere. El kernel es el repositorio para determinar si los datos de licencia han sido alterados y, para este fin, exporta dos funciones más, ExGetLicenseTamperState
y ExSetLicenseTamperState
.
Fuente: Licencia de software
ExGetLicenseTamperState
Esta función [no documentada] le pregunta al kernel si los datos de la licencia han sido alterados.
El uso interno es en un temporizador que se repite aproximadamente cada hora. Si se encuentra que el estado de sabotaje es 4
, entonces Windows se detiene. El código de verificación de errores es SYSTEM_LICENSE_VIOLATION
( 0x9A
), con 0x1B
el primer argumento.
Fuente: ExGetLicenseTamperState
Un ejemplo práctico
Supongamos que tiene una computadora con 32 GiB de RAM e instala Windows 7 Home Premium x64 (64 bits). En ese caso, estaría limitado a 16 GiB. Si tuviera que usar Windows Anytime Upgrade y actualizar a una edición más cara, de repente el límite se establecería en 192 GiB.
Conclusión
Todas las ediciones de Windows 7 comparten el mismo código fuente. La principal diferencia es la cantidad de características / limitaciones que están habilitadas o deshabilitadas. Las ediciones de clientes profesionales y superiores no tienen un límite superior a la cantidad de RAM que pueden manejar, y solo tienen licencia para lo que Microsoft garantiza que admite.
Además, el EULA de Windows 7 dice explícitamente que no puede "usar el software para servicios de alojamiento de software comercial", insinuando que Microsoft asumió que si necesita más RAM de la que tiene licencia para la edición más alta del cliente, entonces lo que realmente quiere es un servidor licencia. La contraparte del servidor de Windows 7 (es decir, Windows Server 2008 R2) puede usar hasta 2 TiB de RAM en las ediciones Enterprise y Datacenter.
A medida que la tecnología avanza rápidamente, lo que fue aceptable ayer podría no ser suficiente mañana. Para ponerse al día, Windows 8 aumentó los límites a 128 GiB y 512 GiB para las ediciones Core y Pro / Enterprise, respectivamente. Sin embargo, eso solo se aplica a las versiones de 64 bits: las versiones de 32 bits todavía tienen un límite de 4 GiB. La versión del servidor, Windows Server 2012, puede abordar hasta 4 TiB de RAM en las ediciones superiores.
Otras lecturas