Possible Duplicate:
Why does Windows only show about 3.5GB of my 4GB+ of RAM?

I stumbled through many blogs about the limitations of a 32-bit Windows in contrast to 64-bit. The foremost difference is that a 32-bit OS can only allocate 2GB of RAM per process and 4GB RAM combined.

While the reason cited is that only 2^32 of address space can be assigned by 32-Bit OS but I am still puzzled how this limitaion comes into play? Can anyone enlighten me about it?


The reason is because 232 is the largest integer that can be stored in a single 32 bit variable.

Therefore, unless you have some scheme to split pointers across 2 (or more) variables or use 64 bit integers it is physically impossible to address a larger memory location. There will be many reasons why 32 bit integers or only a single variable will be used to address memory, but speed and reliability will be high on the list.

  • Ok, I get it. The 32-Bit is the length of integer which is used to represent address in memory. Am I right? – Shubham Mar 26 '12 at 15:32
  • @Shubham - yes, that's it. – ChrisF Mar 26 '12 at 15:33
  • Just Curious, but how are these addresses stored then? and where? – Shubham Mar 26 '12 at 15:43
  • @Shubham They are usually just stored in integer variables. – ChrisF Mar 26 '12 at 16:20
  • Bon Gart's answer is more thorough, but this is still correct. – surfasb Mar 27 '12 at 1:10

It is a combination of factors, and that information has all been provided here... albeit in bits (no pun intended).

First there is the physical limitation, as stated, of the 32 bit model. A bit is either a 1 or a 0. 32 of those together takes up a specific amount of space. You know... binary... 10101010 etc. 4gb of unique space. The range of integer values that can be stored in 32 bits is 0 through 4,294,967,295. Hence, a processor with 32-bit memory addresses can directly access 4 GiB of byte-addressable memory.

Now, with Physical Address Extension, or PAE... well... to quote "The 32-bit size of the virtual address is not changed, so regular application software continues to use instructions with 32-bit addresses and (in a flat memory model) is limited to 4 gigabytes of virtual address space. The operating system uses page tables to map this 4-GB address space into the [larger amount] of physical memory. The mapping is typically applied differently for each process. In this way, the extra memory is useful even though no single regular application can access it all simultaneously." So, even by using PAE, although your OS will recognize and display that you have more than 4gb within your 32bit system, no single program will have access to all your RAM at one time.

Does that clear up the confusion? There are only 4gb worth of unique memory address spaces in a 32 bit system. Since you cannot use the same memory address space twice simultaneously without causing an error, that is the physical limitation. Try to remember... when 32 bit systems were introduced, people had no conception of using systems with that much RAM.

Not the answer you're looking for? Browse other questions tagged or ask your own question.