@mrEvil in no way am I trying to sound harsh, but you are NOT correct. What happends, the way I understand it, is it's a problem of limited mem adresses.
XP can address a max of 4GB of ram, however this 4GB also includes adresses for RAM, Video Ram, System Cache, Various Devices, etc.
So by having a limit of 4GB, what is actualy occuring is that XP addresses the system devices FIRST, then the difference of whatever is left of the available memmory adresses gets used for RAM. So if you have a total of 4GB of ram, there are not enough adresses left over for the remaining amount after adressing all the system devices and the video ram.
As far as I understand, this is an issue with 32bit archetecture and not just XP. Therefore every 32bit system be it XP or Vista 32bit or Your DIY 32bit OS, will have the same issue running on 32 bit processor archetecture.
Vista 32 may SAY 4GB in the system properties however the same 3.25GB will actually be available to system ram on my sytem with 4GB chips installed as it still runs on 32 bit archetecture.
With 64 bit archetecture whcih can adress practicaly unfathomable amounts of adresses 16TB (terra bites or 16,000GB) this will no longer be an issue (until next year j/k) with the archetecture alowing for sytem devices AND the system ram to all be adressed at the same time.
Again to repeat a bit more indepth on what I just said
Devices always "steal" RAM, even on a system with less memory. Most will not notice this, because PCI devices are usually sitting at an address beyond the end of your (RAM) physical memory adresses.
32-bit processors have a 4GB address space (from 0x00000000 to 0xFFFFFFFF). If you have 1GB of RAM, any address above 0x40000000 is free.
Most devices are memory mapped. This means they are mapped to a memory address. If the CPU wants to talk to your Ethernet Card, it reads and writes to a set memory address space, which happens to be where your card is listening.
The memory address that your device uses is determined by the BIOS at boot, the operating system can remap the device later if it needs to. The device can claim anywhere from 0 to 6 memory regions, and they can be just about any size.
Exactly how many memory regions, and their size can vary gratly by the device. Ethernet cards tend to use very little. Graphics cards, however, can use a lot. Grpahics cards have a lot of onboard RAM, mine has 512meg. If you have a video card with 512MB of RAM, it wil claim a 512MB window of available adress space.
If you want to see the addresses claimed on your system, go to Control Panel/System/Hardware/Device Manager/Click View/Resources by Type/Look at the memory section.
Because of the 4GB limit, the system needs to make all of the devices, and RAM fit into the available address space. That is why I and anyone with 4GB of ram on a 32 bit system sees less RAM. If it didn't allocate enough address space for the hardware, the device wouldn't function. So to protect from that, the system just cuts the amount of available RAM as the next best thing it can do.
I believe my understanding is correct and I didn't just hang a long bunch of balony out to dry.....