All 32-bit Operating Systems can only physically address 4 GB of RAM, due to the math involved (232 = 4,294,967,296). Depending on your hardware, Vista may only see 3GB or 3.5GB of the total RAM installed, because there are some devices that are memory mapped. The most common hardware of this type of device is a video card, which can use up to 512MB of memory for mapping.
You can tweak Vista's core to add another 4-bits of addressing capability, but you must have a 64-bit capable CPU (pretty much any processor made within the past two years like Core 2 Duo or Athlon 64). Even though the math works out to address way more than 4GB (236 = 68,719,476,736), the operating system still has a cap (Windows Server can address anywhere from 8GB to 128GB depending on the flavor).
To force this new addressing method, you have to tell Vista to boot using this new parameter. Vista no longer uses a BOOT.INI file as previous versions of Windows did, so you must modify the boot file using a built-in Vista tool called BCDedit.
To turn on PAE, in Command prompt, type BCDedit /set PAE forceenable.
This PAE flag (Physical Address Extension) tells the Vista core to use an additional 4 bits of addressing, which in theory allows the OS to see all of the RAM you have available. We're not out of the woods yet, because once you reboot you may find that Vista still doesn't see all of your RAM.
Using PAE might make Vista to run slower. Vista runs slower with PAE because of the new page-translation system being used. By default Vista uses 2 cycles to address memory, and will use 3 when Physicall Address Extension is enabled. PAE also supports advanced procesor features such as Data Execution Prevention (no execute), Non-Uniform Memory Architecture (NUMA), and hot-add memory. PAE is automatically disabled when DEP (Data Execution Prevention) is disabled, so you must force PAE when DEP is disabled by running BCDedit:
To disable DEP: BCDedit /set nx AlwaysOff
PAE force on: BCDedit /set pae ForceEnable
You can turn PAE off again by typing BCDedit /set PAE forcedisable or BCDedit /set PAE default.