Why can't x86 (32-bit) operating systems use more than 3.25 GB of RAM memory and not whole 4 GB?

Why can't x86 (32-bit) operating systems use more than 3.25 GB of RAM memory and not whole 4 GB? /  32 bit operating system 3.25 GB RAM Limit



A 32 bit client version of Windows has a physical address space of 4 GB. It would be nice if all of this space could be used for RAM but that is not the case. A portion of this address space is used for memory mapped hardware devices. The CPU can communicate with these devices by reading or writing to their address space just as it does with RAM. There are other methods available but memory mapped hardware is much faster, important for high performance devices like video systems. Typically memory mapped devices consume about .5 to 1 GB but is tan be more or less in some cases.

You can't have 4 GB RAM and 0.5 to 1 GB memory mapped devices in the same 4 GB address space. It just won't fit. Thus whatever space is used for hardware devices is not available for RAM. If you have 3 GB or less RAM there is usually address space to spare and no RAM is lost.

If the address space used for hardware devices is subtracted from 4 GB that leaves about 3 to 3.5 space available for RAM. 3.25 GB is just typical and the number often quoted.

I suppose all of this could have been done differently but that would have complicated the design, and a 4 GB address space was huge at the time. Changing it now would have serious compatibility issues. And we already have a much better solution in using a 64 bit OS. A 64 bit OS has a much larger address space so there is plenty of room for everything.

PAE is often suggested as a solution. This is a special setting that allows for a much larger physical address space. Conflicting RAM can be addressed above 4 GB where it can then be addressed. This option is supported by 32 bit server operating systems. The problem was that many device drivers behaved very poorly in such an environment with very unfortunate results, such as crashes or data corruption. For that reason client systems simply ignore RAM above 4 GB. This has become a license restriction and enforced in the kernel.

As PAE doesn't work in client systems and 32 bit servers are virtually obsolete it is essentially a dead issue.



0 comments:

Post a Comment