Dude, Where's My 4 Gigabytes of RAM?

Great article. LOTS of unnecessary nitpicking in the comments unfortunately and of course the usual wiki powered posts getting things half wrong or misunderstanding and serving only to confuse people. My only advice (take it for what it is worth) is for folks coming here to stick with the article and ignore the vast majority of the comments.

On a topic like this, you cant really just jump to wiki and expect to become an expert without having a lot of foundation knowledge and, more importantly, experience. Suffice to say that it really isnt as difficult as it may seem and that the original article is really just fine on this topic.

Ill just leave with a few points… The address width of a processor architecture does indeed determine its virtual address space. So for a processor with 32bit address support, we are talking about 2^32 or 4GB of address space. Physical address space refers to physical RAM. In the vast majority of cases, virtual space is LARGER than physical space.

There is nothing defficient in the original Windows NT 32 bit kernel and nothing “missing” that has anything to do with drivers. It is a typical 32bit OS running on 32bit hardware and, as such, it has a virtual address space of 4GB which maps to an amount of physical RAM determined by the chipset, motherboard and memory module density. As the physical RAM approaches the size of the virtual memory limit, you can have trouble if some of those addresses have been mapped for other uses. Like video RAM. Yes video RAM is dedicated on the card, but the OS has to be able to get to that RAM. The way that happens is that the video cards memory is mapped to a virtual address range. Its that easy. This doesnt matter until there is PHYSICAL RAM in that address range.

Any technique which circumvents the limits of a virtual address space will involve paging. Paging sucks in nearly every case. It doesnt matter that it dates back to the original IBM VM OS, was on PDP 11s, was what we lived with back in the DOS/EMS days (nitpickers please just die here rather than stating the exact first OS that paging dates back to). The fact is that the article is correct. PAE is an ugly hack that essentially allows you to page out multiple 32bit address spaces in a 36bit physical address space.

The Intel FLAT 32bit memory model (and the comment above indicating that even within 32bit space the Intel architecture is paging is a huge oversimplification of a complex topic) remains but is now augmented by a page table which can physically map to 36bit of RAM (64GB).

This IS a hardware issue and, like most hardware issues, IS present in ANY OS. So Linux and Mac fanatics, sorry, but this isnt fuel for your holy fires.

Again, GREAT concise and clear summary of a topic that, as you can see by the bulk of the comments, still causes a lot of trouble.