Originally posted by: omghaxcode
so the rest is literally wasted?
In 32 bit operating systems (XP, Vista, whatever), there is a bucket of addresses that's 4GB deep. Why 4GB? That's just how the math works out: 2^32 = a 4GB 'bucket' of addresses that your OS has available to use to communicate to everything.
All PCs require a certain amount of address space in the bucket - roughly 500~750MB, depending - just for themselves: Bios, motherboard resources, etc.
Installed devices also consume addresses - Graphics being the greediest, as video memory has to be addressed from the same bucket as everything else. But just about everything counts in some way.
Now, if the operating system cannot address the thing, than it cannot communicate/use it. So the operating system assigns system stuff first, then RAM last. Why? Because if a system device isn't addressed, it will not function. If there's RAM left over, then the OS simply doesn't use it.
If you're having trouble visualizing: Imagine a container that holds exactly 1 quart - 1 cup representing 1 GB.
3/4 cup of water represents the 750MB needed for system usage
<Pours that in the quart jar>
Toss in a half cup to represent a 512MB video card
<Pours in a half cup of water - jar fills up some more>
Now... If you take another 4 cups of water - for the 4GB of RAM you have sitting there - and try to pour that in the quart jar?? It simply doesn't fit. That's the issue here - The operating system can only handle 4GB, and that 4GB *must* include thing other than RAM. When the 4GB is reached, there are no more addresses so nothing more can be added.
On a server operating system
(NT, 2003, 2008) there is a way around the limit. But this functionality isn't available on the consumer side.
The permanent solution is to change operating system to a 64 bit version of windows. That puts the address limit out to the (current, artificially set) 128GB limit.