Of all the comment,s the Bottom Line by Killer B seems the closest to the truth. There is code in 32-bit Windows Vista for using memory above 4GB, but Microsoft doesn’t license you to use it. The kernel reads two licensed limits from the registry and ignores all physical memory above a maximum and in excess of a total. Both limits are set at 4GB. You can patch this away in the kernel. My article http://www.geoffchappell.com/notes/windows/license/memory.htm shows how to do this for testing.
Rather than be up-front about this as the mechanism, Microsoft prefers to recommend 64-bit Windows (and 64-bit applications) and have the industry also recommend the migration, whether for convenience or ignorance. Whatever the merits of moving to 64 bits, there is an element of fraud to the way the migration is being promoted. More people should be complaining about it.
I wondered about the screen shot, given the changes for SP1 (which I do explain in several paragraphs later in the article), but I also decided that System Properties is by far the most common indicator in ordinary usage (which I presume to be why Microsoft changed it).
Moreover, there are articles out there that show how to use more than 4GB by taking a kernel from Windows Server 2008 at the price of being rejected as not properly activated. The System Properties dialog shows that my demonstration is with an activated Windows Vista.
Anyway, I take the point that I could show the Task Manager showing all 8GB as being in use. I will think about how to fit it in if I revise the article. (For now, the writing of that article has exhausted my sense of working for free in the public interest, and unless there’s a show-stopper of a problem, I really don’t care to look at it again for a while.)
As for have I verified that all the memory is actually used and this is not just display, I acknowledge I have not addressed it directly. I’ll think about this, too. On the other hand, I think you are really picking at nits to ask this of an article that already has far more detail than would usually be accepted as establishing credibility. Among those details are directions for how you can do as much of your own testing as you want.
Really, the directions are the point. It’s over to the community of users to test what Microsoft does not permit and to kick up a fuss if they feel they are being defrauded. There’s only so much I can do.
Geoff Chappell, it sure is interesting. A screen shot of the performance tab in task manager would provide better evidence, though, since Vista/SP1 tends to display installed amount instead of usable amount.
Anyways, have you verified that all the memory is actually used and this is not just display?
First of all thanks to Jeff Atwood for his blog and Geoff Chappell who’s article http://www.geoffchappell.com/notes/windows/license/memory.htm is IMHO excellent reading and although I do not have 8GiB of RAM I did successfully increase the physical address space limit and consequently was able to use 4092MiB of RAM with 32 bit Vista SP1, 4GiB of RAM installed, for testing purposes. I also verified the amount of RAM using VirtualAlloc and no page file. Normally only 3068MiB of RAM is available to me with the standard 4GiB physical address space limit.
With all the conflicting information around rather than just relying on someone’s word, if you have the appropriate hardware just test it for yourself.
Your math is entirely wrong! with 32bits you can count and address 4GB of things… normally it addresses BYTES in the same way that 1 bit can address 2 BYTES and 8 bits can address 256 BYTES or ASCII CHARS or people or cats… so 4 million bits addresses 4 million BYTES.
When you are counting or addressing it has NOTHING to do with what you are counting and that is why it has nothing to do with BITS or bytes… it is just counting and addressing and with 32 bits you can count or address 4GB of addresses or memory or bytes.
So 32 bits is 4GB not 0.5GB. Replace your stupid spreadsheet with a disclaimer asking people to forgive your grievous mistake.
@LencoTB
addressing is counting… 32bits gives you the ability to count to 4GB… don’t try to convert bits to bytes to determine how many bites that is…
32bits is 2^32 = 4,294,967,296 bits which can address 4GB of things we call addresses aka memory units aka bytes…
with 8 bit addressing you can address 256 bytes… think smaller and perhaps you’ll see your obvious mistake… otherwise ignore that we are addressing bytes… imagine we are counting instead or that we are addressing houses or something else and don’t try to convert things as if they are equal… one is a number (the bits) the other is what is being counted or addressed (the bytes).
Great article and comments, a ton of useful information here. Big thanks to the informative contributions from Geoff Chappell and Killer B, and also the linux guy saying “my system runs the latest software…”, that was a good laugh.
I’ve had a 32-bit Vista/32-bit hardware Dell laptop (I really appreciate their allowing me to order 4GB of RAM for a thoroughly 32-bit system!) for 8 months and this limitation hadn’t occurred to me until today /idiot. For some reason I assumed that PAE was ubiquitous in Windows /idiot.
I know it’s really my fault for the oversight and I it’s naive to think Dell (or any other PC maker) would warn you of such a scenario, but why would they when they’re moving 4 RAM sticks rather than 2.
This issue also arose when my uncle asked about adding more RAM to his Mac - which if I remember correctly has a hardware limitation of 2GB - and a salesman mentioned that Snow Leopard would “support 64TB* of RAM”… Being unfamiliar with the 64-bit world, I was completely incredulous, so I did the numbers and realized the hypothetical limitation was much, much higher. What I didn’t know about was the impact of hardware on address space /idiot.
What got me thinking about this was a warning on some new hardware about the 4GB wall. Took all that time. /Idiot. 64-bit needs to be a top industry priority.
To those claiming Linux doesn’t have this problem: You’re wrong. A 32-bit Linux OS will have the exact same limitations, right down the the kilobyte.
The issue has nothing to do with Windows or Vista. Vista is simply the first OS that reports the amount of USABLE memory, as opposed to the amount of physical memory installed. That doesn’t change the fact that other 32-bit OSes can’t use it either.
Yes, there’s PAE - but to use PAE you need a lot of stars to align and it’s just not worth it. You need a kernel that can use PAE, you need a motherboard and CPU that support it, and most of all you need applications that are compiled with PAE (and AWE on Windows) in mind.
Microsoft has all but abandoned PAE in favor of going all-out 64-bit. Also, on Windows - I’m pretty sure only the server SKUs support PAE for addressing more than 4GB of memory (even though the PAE kernel is used on XP to support DEP).
Regarding the Mac, they’re in the worst position of all. There is no 64-bit Mac OS (other than the PAE-style “pretend 64-bit” of the G5 era), although Leopard is supposedly going to change that at last. But it’s normal for the Mac to be behind the times technology-wise. Especially as the newcomer to the x86 world.
This is just like the old dos days (look at the bottom part of the diagram that shows dos compatbility memory) where you at a 1024 address space where 640k was made for ram adn 384k was reserved for mapping in the video card and other devices. the only thing thats really different now is the units of measure defining these areas.
I keep waiting to see some switch in boot.ini that says /windows=high to claim more of that reserved address space. Though when i first saw dos=high in config.sys I thought to myself…well that explains a lot
Ludo - I own a Mac (actually two, though one isn’t in active use), and I know what I’m talking about. The Mac OS isn’t 64-bit. There’s some tricky mapping they do that’s PAE-like on the G5 hardware, but they have some crazy limitations including the fact that only console apps are able to actually run as 64-bit process and use 64-bit addressing.
Leopard should catch things up, providing a real 64-bit OS (although I don’t know for certain that the entire OS will actually be compiled as AMD64 code, as Windows is) - with the ability to write 64-bit applications and to use 64-bit memory addressing on Intel hardware.
ouch. thanks for writing this after i bought 2 extra GB!
I didn’t even realise i was shortchanged 400MB. I, and alot of other people, were under the impression that hardware device addressing is on a completely separate continuum of address space altogether. Who would have expected it to be in the same physical address space as RAM_content.
the problem is, my server is installed with win2003 Standard edition. So not only must i first upgrade to Enterprise edition, i also have to consider possibility of hardware failure for any that may not work well with PAE? Is there some way to “test” this prior to an attempted upgrade?