Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Don't know if this is the right place to ask this question.

I've been reading that 32bit OSs (like the Ubuntu i'm running right now) can't adress more than 3.2gb or 3.3gb of RAM memory.

I remember for my old Computer Architecture course that the memory limitation was 2^32 "pointers" (don't remember the right word). I mean, the memory was represented like an array where the CPU can acces it directly, but up to its limit. If the CPU is 32 bit, then it can address 2^32 words, if it's 64 bits 2^64, etc.

So, if what i said before is right, then, my OS should be able to address 2^32 = 4294967296 = 4Gb.

I'm thinking maybe some sort of space is reserved to the particular use of the Kernel, cache, buffering or swapping. But don't have the correct answer.

Can you give me a hint?

share|improve this question

migrated from serverfault.com Nov 18 '10 at 4:19

This question came from our site for professional system and network administrators.

    
Feel free to vote up any answers that helped you too. –  Mark Henderson Nov 17 '10 at 20:43

6 Answers 6

Windows uses some of the hardware addresses ment to address memory, for other hardware (like USB, SATA, Disk Controllers, whatever). So some of thos hardwareaddresses cannot be used for your memory. Hence the limit.

To my knowledge, Unix/Linux CAN address a little more than the 3.2GB limit of Windows. This is because Linux uses a different addressing scheme.

There is also a function called PAE (Physical Address Extension) Wich makes 32-bit OSes use more than 4GB.

share|improve this answer
    
For Windows a detailed explanation can be found here: commonsense4commonpeople.net/2007/12/how-adding-more.html –  adamo Nov 17 '10 at 21:54

This has to do with memory the BIOS has to reserve for base processes like transferring data to devices and video memory. Memory above about 3.2GB (it varies from system to system, I've seen 3.6GB and 3.1GB) gets remapped over the 4GB boundary where PAE is required to access it. Different systems handle this case differently. Some systems don't bother accessing it, giving only 3.2ish GB of RAM for processes. Others just seamlessly use PAE, which is slower, for processes.

share|improve this answer
    
True.. around 3-6% CPU hit just for using the PAE extensions –  Arenstar Nov 17 '10 at 20:53

PAE is not standard in 2.6 kernels of Linux.. But it is supported above 2.3.23 kernels..

PAE allows usage of up too 64GB of ram on a 32bit system However limiting a single process to the 32bit space.. and degradation of performance overall/ not just for using above 4gb..

I had to change some growing databases operating systems to 64bit so MySQL could take advantage of the RAM installed.. The speed difference was noticeable :D

Take a look here http://en.wikipedia.org/wiki/Physical_Address_Extension#Linux

share|improve this answer

Your 32-bit OS can address 4GB of RAM however the PC architecture means that Video memory and a lot of other resources are memory mapped so not all of that address space is free for use as ordinary RAM.

share|improve this answer
1  
There's a nice picture of this at codinghorror.com/blog/2007/03/… (it says from Intel -- can anyone find the original?) –  mattdm Nov 17 '10 at 21:07

== Off Topic ==

This reminds me of the old age of DOS, where a computer could only see 640k of RAM even though more might be installed. Even though architecturally 2^20 bytes (1024k) where accessible the top 384k (uppper memory area) could only be addressed with tricks.

share|improve this answer
1  
Ah, the good(?) old days... Yeah, I thought of the QEMM/HIMEM.SYS era when I read this question, too. –  Dave Sherohman Nov 18 '10 at 9:54

The Wikipedia article on the "3GB barrier" explains it pretty well. If your OS doesn't support PAE you're going to be limited to 4 GB physical address space, and that has to include both RAM and mappings of PCI device "registers" and "memory". The usual big consumer in the latter category is your video card. https://en.wikipedia.org/wiki/3GB_barrier

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.