To help clarify. 32-bit computers, by limitations of the processor (largest address space accessible is 0xFFFFFFFF which is 4GB in bytes) you are only able to access 4GB of memory. However, 32-bit applications running on the processor under Windows and Linux are only able to use 2GB of their own memory. The operating system (which includes the kernel and drivers which load into the kernel's address space) use the other half. Even if you only have 32MB of physical memory, through virtual memory (a feature of the processor that modern, and even not-so-modern OS' support) you can access the whole 4GB by mapping different addresses. Through page faults that the kernel will handle, it will sometimes read and write memory to the harddisk to the pagefile (Windows) or swap partition (Linux.)
When you use a 64-bit processor (Intel or AMD) you can access a 36-bit address space (weird, I know.) This gives you access to 2^36 bytes of memory, which is about 16~18
TB. This allows you to access a much higher degree of memory. This is the software limitation. As far as hardware goes, good luck getting enough slots to actual support that amount of memory.
NOTE: -
I'm pretty sure it's 36-bit, it's definitely not 64-bit though. Reading through the Intel manuals will confirm this. I will not provide citations, if you want any look on Wikipedia or read through the Intel/AMD manuals which are freely available in PDF form through their websites. If ANY
information is incorrect, please correct it and provide citation. Thank you.
Cheers,
-naota
Your signature has been erased by a mod because it's too large--- 800k !?