Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I know motherboards, BIOS, etc may set lower limits on how much RAM we may install on individual machines. However, what defines the maximum RAM for Windows 7 x64?

Is that a fundamental architectural limitation of the OS? Different Windows 7 versions have different RAM maximums (Starter edition <= 2GB, Professional <= 192 GB). Is it something that may be actually changed?

As a comparison, Ubuntu 64x allows for as much as 1024GB RAM.

share|improve this question
3  
possible duplicate of 64 Bit OS and RAM –  Ƭᴇcʜιᴇ007 Feb 3 at 22:33
1  
They pick physical limitations. When Windows 7 was released there was no hardware that supported more than 192GB of memory in the non-server market –  Ramhound Feb 3 at 23:01
4  
install Windows 8, here the Pro/Enterprise can use 512GB RAM. –  magicandre1981 Feb 4 at 5:05
    
Comparing Windows to Ubuntu / Linux in any matter / area is a joke, right? :] There are thousands of things and features, Ubuntu / Linux has, that Windows lacks. It's like asking, why monochrome printer can't print in colors, if color one can! :] –  trejder Sep 3 at 6:46

2 Answers 2

up vote 160 down vote accepted

Short answer: the license

Excluding hardware from the equation, it is mostly an artificial software restriction:

[The] limit is retrieved from the registry by calling a function named ZwQueryLicenseValue, which is itself called from an internal procedure which Microsoft's published symbol files name as MxMemoryLicense.

Source: Licensed Memory in 32-Bit Windows Vista

Additional information­

Of course, license data stored in the registry even in an undocumented format might easily be changed by users, which they would have some incentive to try since Microsoft charges significantly different prices for different licenses. Microsoft therefore has an elaborate scheme for checking that the license data remains as Microsoft wants it. The kernel is the repository for whether the licensing data has been tampered with, and to this end exports two more functions, ExGetLicenseTamperState and ExSetLicenseTamperState.

Source: Software Licensing

­

ExGetLicenseTamperState

This [undocumented] function asks the kernel whether the license data has been tampered with.

The internal use is in a timer that recurs approximately every hour. If the tamper state is found to be 4, then Windows stops. The bug check code is SYSTEM_LICENSE_VIOLATION (0x9A), with 0x1B as the first argument.

Source: ExGetLicenseTamperState

A practical example

Let's say you have a computer with 32 GiB of RAM, and you install Windows 7 Home Premium x64 (64-bit). In that case you would be limited to 16 GiB. If you were to use Windows Anytime Upgrade, and upgrade to a more expensive edition, suddenly the limit would be set to 192 GiB instead.

Conclusion

All Windows 7 editions share the same source code. The main difference is the number of features/limitations which are either enabled or disabled. Professional and higher client editions have no upper limit to how much RAM they can handle, and are just licensed to what Microsoft guarantees to support.

Additionally, the Windows 7 EULA explicitly says that you may not "use the software for commercial software hosting services", hinting Microsoft assumed that if you need more RAM that what the highest client edition is licensed to, then what you really want is a server license. Windows 7's server counterpart (that is, Windows Server 2008 R2) can use up to 2 TiB of RAM in the Enterprise and Datacenter editions.

As technology moves fast, what was acceptable yesterday might not be enough tomorrow. In order to catch up, Windows 8 raised the limits to 128 GiB and 512 GiB for the Core and Pro/Enterprise editions, respectively. That only applies to 64-bit versions, though: 32-bit versions are still capped at 4 GiB. The server version, Windows Server 2012, can address up to 4 TiB of RAM in the higher editions.

Further reading

share|improve this answer
27  
This is the best answer because it links to a good source with analysis. –  Kevin Panko Feb 4 at 1:09
4  
Just a slight defense: the source code may be the same, but it's not necessarily the same code that would have been there without the support. As an example, a lot of work was done to improve scalability when you have lots of processors (see "global dispatcher lock" here: tomshardware.com/news/microsoft-windows-server,6589.html). That code is almost certainly the same in all editions, however higher editions of Windows support more CPUs. But supporting more CPUs took more work. Is it fair to charge more for that work? –  Mark Sowul Feb 4 at 16:36
1  
The counter-argument could also be made, that they might develop the whole sophisticated thing all at once, but offer a less expensive restricted version for people who do not need the functionality. In the case of hardware, reduced features translates to smaller die size, less complicated memory interfaces, etc. and thus lower production cost. In the software world, cost is almost entirely associated with man-hours of development (and to some extent training / certification). But many consumers are hard-wired to expect an option of paying less for a product that does less. –  Andon M. Coleman Feb 4 at 19:20
2  
in short: min(license_limit, physical_limit) –  akira Feb 4 at 19:42
1  
@AndonM.Coleman products like Windows that sell so many copies the development costs per license are insignificant compared to most other costs per license. I see online articles saying Windows 8 sold over 100 million licenses in the first 6 months. Over the life of Windows 8/8.1 I expect the development cost per license will be less than the cost of producing a retail box and contents per box. New versions of Windows are typically not written from scratch. Windows 8/8.1/2012 are all VERY similar, and similar under the hood to vista/7/2008. XP/2003/2000 can be grouped together too –  BeowulfNode42 Feb 5 at 12:16

Microsoft licences it that way. They likely want you to go and pay for a Windows Server product that is licensed to run with greater resources. It's the same with other products like SQL Server. SQL Server Express has limitations placed on it so that if you need more resources, you must buy the product that permits it.

share|improve this answer
5  
He he, Windows Server is available for free to students (dreamspark), so for us, it's more feasible to get that than to buy a copy of Windows... (no affiliation) –  damryfbfnetsi Feb 4 at 2:16
2  
this is one of the reason why 32-bit windows XP and above can support PAE but MS restricts the limit to 4GB of RAM –  Lưu Vĩnh Phúc Feb 4 at 3:57
3  
@MattH the limit to 3GB is because the upper Gig is memory mapped to peripherals –  ratchet freak Feb 4 at 8:50
2  
@MattH That's a common misconception. As an example, take a look at the official Windows Server 2008 System Requirements: "Maximum (32-bit systems): 4GB (Standard) or 64GB (Enterprise and Datacenter)." In this case 4 GB is a license restriction, and 64 GB is the Physical Address Extension limit (assuming the chipset supports remapping). –  and31415 Feb 4 at 14:08
1  
@MattH The usable RAM could be further reduced if reserved by the hardware (e.g. integrated graphic card). You also need to consider that each 32-bit process on a 32-bit Windows is limited to 2 GB, or 3 GB if it's large address aware. The limits in 64-bit Windows are 2 GB and 4 GB, respectively. Source –  and31415 Feb 4 at 14:26

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.