QUOTE (orbatos @ Aug 12 2008, 12:07 AM)

For various reasons the above translates into "Windows XP/Vista 32 bit only sees a maximum of 3.5 GB of ram".
I agree that sdubb's nephew is limited to 3.5GB of ram in his current setup. Your statement above sounds very final, which does not reflect everyone else's possible configuration. For others who may be in the same boat as sdubb's nephew, I just wanted to add a bit more.
Any 32-bit operating system is limited in it's ability to address a maximum of 4GB of memory. This limitation is an architectural limitation, as the address space of memory is set to be 32-bits. The largest number (address line) that can be represented with 32 bits is 4294967295. Therefore, the maximum memory that any 32-bit architecture can address is 4GB.
Having said that, memory mapping I/O can 'steal' some of that addressable space. Because the system is masking the I/O peripheral as a section of memory, it's mapping must fall somewhere in the 0GB-4GB space. It just so happens that the standard has been to reserve the upper GB in that range. This does not mean that the memory from 3GB to 4GB is lost to the OS. It is only lost if you have any memory mapped I/O peripherals.
So, let's say that you decided to put in an OLD video card into your system; think ISA card. That video card may only have 8MB of memory. If it is memory mapped, it will only take up 8MB of the upper GB of memory. Effectively, the OS will still have access to the full 4GB (minus 8 MB) of memory. If a 256MB card is used, then the OS can access 3.75GB. If a gamer installs a power video card with 1GB of memory, then the Windows OS will map the entire peripheral in the 3GB - 4GB range, leaving the OS with only 3GB of memory to use.
Keep in mind that more than one device could use the reserved space. A 512MB sound card and a 512 MB video card would add up to 1GB of memory mapped devices, leaving only 3GB of memory for the OS.
If you want to see what area of memory a device takes up, just launch the "Device Manager" in windows. Find your peripheral of choice, and select the properties option when you right-click on it. In the properties window, click on the 'Resources' tab to see the Memory Range entries (there may be more than one).
I know, I know, splitting hairs here. I just thought that other people reading this thread might want to know how it all works and what to expect in their situation. They may not have access to 3.5GB if they add more memory to their system.