Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?

share|improve this question

marked as duplicate by Tom Wijsman, surfasb, Nifle, Ƭᴇcʜιᴇ007, studiohack Mar 29 '12 at 21:58

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

You can have 64 GB!!! – Aki Mar 26 '12 at 13:31
There isn't. It's a licensing issue in MS Windows. – Breakthrough May 10 '12 at 16:37
up vote 8 down vote accepted

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.

share|improve this answer
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.

share|improve this answer

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