Originally Posted by
Ancalagon
Not true.
Applications can only use memory that Windows can assign to them. If Windows cant see it, neither can they. The other portion of your memory is not being used at all, not by anything.
The reason for this concerns memory mapped IO and whats called an address space. An address space refers to all memory that the computer can access. It normally means main memory, except when memory mapped IO is involved (and it always is on modern computers). One quick note, programs have their own address space which is distinct to the windows address space. A program's address space is also smaller than the windows address space, since it must be able to fit into the windows address space. The biggest unsigned number that a 32 bit computer address is around 4 billion, which is why a 32 bit computer can access 4GB of memory, at maximum. However, this is not what Windows sees, and memory mapped IO is the reason. Memory mapped IO assigns a portion of that address space - which normally points to main memory - to your other devices, such as your sound card and your graphics card. This is convenient for programmers because it means we only have one address space to work with, but it means our 4GB address space has to be shared with both main memory and all devices. Obviously, since we need devices, main memory must shrink. This is why main memory becomes reduced in size.
These days, there is no reason to use 32 bit at all. You should never use it, even if only have 2GB of RAM right now. You'll just run into headaches when you eventually expand your memory. I've been using 64 bit windows since the Vista days, back in 2007, and never had any problems with it.