As memory becomes cheaper, many people are making the decision to purchase the maximum amount of memory on their new computers. However, a common complaint by some is that their new computer does not recognize all of the memory, typically along the lines of “I ordered 4 gigabytes and my computer only sees 3 gigabytes”. This “missing memory” is in fact a limitation of the operating system.
The limitation comes about in the fact standard 32-bit operating systems use 32-bit memory addresses. Therefore the maximum number in memory addresses can be determined by the following equation…
2^32 = 4294967296 bytes … resulting in a maximum address spacing of 4 gigabytes
This is the most that a 32-bit operating system (be it Windows, Linux, Unix, etc.) can address. The “missing memory” comes about because MMIO (Memory Mapped I/O), video card memory, and AGP Aperture sizes are mapped within this 4GB of memory address spacing as well. What remains is now used by your memory (RAM) chips, and is what your computer recognizes as available. This can vary from PC to PC, but typically falls between 3GB and 3.5GB.
While common operating systems such as Windows XP, Vista Home, Vista Ultimate, Redhat Linux, etc. are all 32-bit, there are 64-bit versions of common operating systems such as Windows XP x64, or Vista Ultimate 64-bit that specify they are 64-bit operating systems. These use 64-bit memory addresses, and therefore equate to the following…
2^64 = 18446744073709551616 … resulting in a maximum of 17.2 billion gigabytes
Unfortunately, once you have hit the 32-bit maximum, there are only a few options to view larger amounts of memory such as disabling/uninstalling devices you don’t need, decreasing aperture sizes, or the only real fix being an upgrade to a 64-bit version of the operating system.
However, to prevent this from happening to you, one can make sure that they have a 64-bit operating system from the start. But don’t jump right in to 64-bit processing; keep in mind that there are several significant drawbacks, as well as hardware requirements that I will get into in a future post.

















