¿Qué limita las máquinas Windows 7 x64 a <= 192 GB de RAM?

117

Sé que las placas base, BIOS, etc. pueden establecer límites superiores en la cantidad de RAM que podemos instalar o usar en máquinas individuales. Sin embargo, ¿qué define la RAM máxima para Windows 7 x64?

¿Es esa una limitación arquitectónica fundamental del sistema operativo? Las diferentes versiones de Windows 7 tienen diferentes máximos de RAM (edición Starter <= 2GB, Professional <= 192 GB). ¿Es algo que se puede cambiar realmente?

En comparación, Ubuntu 64x permite hasta 1024 GB de RAM.

Lucas Fortini
fuente
3
posible duplicado de 64 Bit OS y RAM
Ƭᴇcʜιᴇ007
1
Escogen limitaciones físicas. Cuando se lanzó Windows 7, no había hardware que admitiera más de 192 GB de memoria en el mercado sin servidores
Ramhound
55
instale Windows 8, aquí el Pro / Enterprise puede usar 512 GB de RAM.
magicandre1981

Respuestas:

185

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, ExGetLicenseTamperStatey 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 0x1Bel 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

revs y 31415
fuente
32
Esta es la mejor respuesta porque se vincula a una buena fuente con análisis.
Kevin Panko
99
Solo una ligera defensa: el código fuente puede ser el mismo, pero no es necesariamente el mismo código que hubiera estado allí sin el soporte. Como ejemplo, se realizó un gran trabajo para mejorar la escalabilidad cuando se tienen muchos procesadores (consulte "bloqueo del despachador global" aquí: tomshardware.com/news/microsoft-windows-server,6589.html ). Ese código es casi seguro el mismo en todas las ediciones, sin embargo, las ediciones superiores de Windows admiten más CPU. Pero soportar más CPU requirió más trabajo. ¿Es justo cobrar más por ese trabajo?
Mark Sowul
8
en resumen: min (license_limit, physical_limit)
akira
2
@ AndonM. Los productos de Windows como Windows que venden tantas copias que los costos de desarrollo por licencia son insignificantes en comparación con la mayoría de los otros costos por licencia. Veo artículos en línea que dicen que Windows 8 vendió más de 100 millones de licencias en los primeros 6 meses. Durante la vida útil de Windows 8 / 8.1, espero que el costo de desarrollo por licencia sea menor que el costo de producir una caja minorista y contenido por caja. Las nuevas versiones de Windows generalmente no se escriben desde cero. Windows 8 / 8.1 / 2012 son MUY similares, y muy similares a Vista / 7/2008. XP /
2003/2000
55
No me malinterpreten, las nuevas versiones han trabajado para mejorarlas que las versiones anteriores. Pero cosas como la administración de memoria se mantienen casi idénticas entre las versiones. A menudo se realizan algunos ajustes a medida que el nuevo hardware resalta problemas que antes no eran evidentes en las pruebas. Pero el código principal permanece igual en un grupo de productos.
BeowulfNode42
53

Microsoft lo licencia de esa manera. Es probable que quieran que pague un producto de Windows Server con licencia para ejecutarse con mayores recursos. Es lo mismo con otros productos como SQL Server. SQL Server Express tiene limitaciones, por lo que si necesita más recursos, debe comprar el producto que lo permite.

Dave Lucre
fuente
66
Él, Windows Server está disponible de forma gratuita para los estudiantes ( dreampark ), por lo que para nosotros, es más factible obtener eso que comprar una copia de Windows ... (sin afiliación)
gparyani
2
Esta es una de las razones por las que Windows XP de 32 bits y superior pueden admitir PAE, pero MS restringe el límite a 4 GB de RAM
2014
3
@MattH el límite 3GB es porque el carruaje superior es la memoria asignada a los periféricos
trinquete monstruo
2
@MattH Esa es una idea falsa común. Como ejemplo, eche un vistazo a los requisitos oficiales del sistema de Windows Server 2008 : "Máximo ( sistemas de 32 bits ): 4 GB (estándar) o 64 GB (Enterprise y Datacenter)". En este caso, 4 GB es una restricción de licencia y 64 GB es el límite de la Extensión de dirección física (suponiendo que el conjunto de chips admite la reasignación).
y31415
3
La razón por la cual el consumidor de 32 bits de Windows se niega a usar más de 4 GB de espacio de direcciones es porque hay demasiados controladores heredados de 32 bits que no son conscientes de PAE y causarían BSOD si se usan con él. Sería una pesadilla de soporte si MS lo habilitara.
Andrew Medico