Why can't 32-bit Windows access 4GB of RAM?
32-bit processors and operating systems, in theory, can access up to 4GB of memory. So how come Qasim Zaib's PC, with 4GB installed, only sees 3GB?
Every byte of RAM requires its own address, and the processor limits the length of those addresses. A 32-bit processor uses addresses that are 32 bits long. There are only 4,294,967,296, or 4GB, possible 32-bit addresses.
There are workarounds to these limitations, but they don't really apply to most PCs. I discuss them briefly below.
Okay, so if the processor, and the operating system designed for that processor, can only handle 4GB, why can't Qasim's PC (and yours if it's 32-bit) see that much?
Because not all of those addresses are available for RAM. There are other pieces of hardware inside your computer that need addresses, such as the PCI bus and the USB host adapter.
Your graphics card is probably the biggest address hog. Today's graphics adapters often contain a gigabyte or more of RAM, and every one of those bytes needs an address. To be fair, I doubt that many of those multi-gigabyte graphics cards are in 32-bit PCs, but even a 512mb video card will take a sizeable bite out of 4GB.
Unfortunately, there's not much you can do about it except upgrade to a 64-bit computer and operating system. You'll do that eventually, but you may not need to, or can afford to, right now.
I promised above that I would tell you about a workaround to the 4GB limit, even if it won't really help you. A technology called Physical Address Extension (PAE) allows a 32-bit processor to access up to 64GB.
The good news is that your processor almost certainly supports PAE. The bad news: Unless you're running a server edition, your copy of Windows does not.
So much for that idea.