This is a guide I've put together for those not yet familiar with the various OS's RAM limitations & pitfalls, focusing on the three biggies (Mac, Windows & Linux - no offense to any of the others!). Feel free to correct me see bottom, but sources must be provided.
Most 32-bit computers can only access a maximum of 4GB of ram, as 4GB is the maximum value of a 32-bit unsigned integer when expressed in bytes.
Due to the 3-4GB memory problem*, no 32-bit computer can access all of that, and some OS's (including Vista 32-bit) have been artificially hard-limited to restrict access in the 3-4GB area.
Some x86 32-bit computers may be able to access up to 64GB of ram due to the PAE extension. This is however an uncommon situation, at least on windows OS's with consumer-grade motherboards. Winxp SP2/SP3 explicitly removes PAE support, for RAM access at least.
64-bit computers can theoretically access up to 16 exabytes of RAM, but most operating systems have fairly low limits at present (2008).
The amount of RAM that the OS allows a singular program or process to utilise also varies significantly.
http://en.wikipedia.org/wiki/64-bit
http://www.dansdata.com/askdan00015.htm
http://en.wikipedia.org/wiki/Physical_Address_Extension
* If you are using a 32-bit OS, and have 4GB of RAM, some of the last GB of RAM (the 3GB-4GB area of memory) will be unusable as the system uses that area of memory address space to address hardware components.
How much memory you will lose typically depends most on the amount of ram your graphics card has, as this is the most ram-heavy device in a typical consumer machine. For example, if your graphics card has 512MB of ram, you will lose access to at least half of your last 1GB of system ram. Using PAE with your OS will not prevent this. Some modern gamers have video cards with 1GB or 1.5GB of memory - at these sizes you will lose memory in the 2-3GB memory area, as well.
** If you are using a 64-bit OS, have 64-bit drivers, and a 64-bit motherboard and CPU, you may be able to "reclaim" the entire fourth GB of system ram, -if- your motherboard supports memory address space remapping (or "hoisting") in the BIOS, and this has been enabled (in the BIOS). This moves the hardware addressing space to a higher memory area.
http://www.dansdata.com/askdan00015.htm
| XP: | 4GB * |
| XP 64-bit edition: | 64GB ** |
| XP x64: | 64GB ** |
| Vista Starter | 1 GB |
| Vista 32-bit: | 3.2GB * |
| Vista Home Premium 64-bit: | 16GB ** |
| Vista (all other) 64-bit: | 128GB ** |
| 2000 Advanced: | 8 GB with PAE, 4GB without * |
| 2000 Datacenter: | 32 GB with PAE, 4GB without * |
| 2003 Enterprise Edition: | 32 GB with PAE, 4GB without * |
| 2003 R2 (or SP1) Enterprise Edition: | 64 GB with PAE, 4GB without * |
| 2003 Datacenter Edition: | 64 GB with PAE, 4GB without * |
| 2003 Standard Edition: | 4 GB * |
| 2008 Enterprise or Datacenter Edition: | 64 GB with PAE, 4GB without * |
| 2008 other editions: | 4 GB * |
| 2003 SP2 Datacenter Edition: | 2 TB ** |
| 2003 SP2 Enterprise Edition: | 2 TB ** |
| 2003 R2/SP1 Datacenter Edition: | 1 TB ** |
| 2003 R2 Enterprise Edition: | 1 TB ** |
| 2003 SP1 Enterprise Edition: | 1 TB ** |
| 2003 R2 Standard Edition: | 32 GB ** |
| 2003 Standard Edition SP1: | 32 GB ** |
| 2003 Datacenter Edition: | 512 GB ** |
| 2003 Enterprise Edition: | 64 GB ** |
| 2003 Standard Edition: | 16 GB ** |
| 2008 Datacenter: | 2TB ** |
| 2008 Enterprise: | 2TB ** |
| 2008 Standard: | 32GB ** |
| 2008 for Itanium-Based Systems: | 2TB ** |
| Windows Web Server 2008: | 32GB ** |
http://www.dansdata.com/askdan00015.htm
http://www.mydigitallife.info/2007/01/14/windows-vista-32-bit-and-64-bit-x86-and-x64-maximum-supported-ram-physical-memory-limit/
http://en.wikipedia.org/wiki/Physical_Address_Extension
http://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx
http://www.memorydeal.net/physical-memory-limits-windows-server.php
By default in XP and Vista, each application is restricted to using 2GB of memory. For an application to utilise more than that, it must itself be large-address-aware, and the OS must have certain switches enabled.
For a large-address-aware application to gain access to more than 2GB of ram under Winxp 32-bit, you will need to have more than 2GB of RAM free, and also enable the /3GB switch in the boot.ini.
To learn how to do this, read the following link:
http://www.vfxpedia.com/index.php?title=FAQ/3GB_Switch
NOTE: Do NOT do this if uncertain. If you screw up the boot.ini your OS will NOT boot. Do NOT copy-and-paste from a website. Websites may contain Unicode characters which notepad will happily insert into the boot.ini without your realising it. Your machine is then FUBAR.
To change application memory allocation on Vista, read the following article:
http://usa.autodesk.com/adsk/servlet/ps/item?siteID=123112&id=9583842&linkID=9242018
The /3GB switch simply changes the reserved space for the Windows kernel from 2GB to 1GB, leaving additional memory space for applications to use.
Under 64-bit Windows or Windows utilising PAE, where larger memory amounts are possible, the /3GB switch may or may not be useful depending on (a) how much system RAM you have, and (b) how streamlined your windows install is (number of running services, nLite'd versions of windows).
http://support.microsoft.com/kb/833721
http://msdn2.microsoft.com/en-us/library/ms791558.aspx
http://msdn.microsoft.com/en-us/library/bb147385.aspx
http://en.wikipedia.org/wiki/X86-64
Hardware ram limitations vary between different mac machine types, but 32-bit macs are limited in roughly the same ways as 32-bit intel Windows machines.
32-bit: dependent on machine, maximum 4GB *
64-bit: 4 TB in software, theoretically, though no mac machine exists as yet (2008) which supports this much memory. *
http://www.osnews.com/story/4009
http://www.apple.com/macosx/technology/64bit.html
http://developer.apple.com/macosx/64bit.html
I can't find any information on Mac OS X's application ram limitations. (help?)
Linux of course suffers from the 3-4GB memory area loss in 32-bit versions, as explained above.
In addition it can currently only access more than 4GB in 64-bit versions via PAE. PAE also works well in 32-bit editions, however finding an appropriate motherboard (32bit for more than 4GB ram) can be tricky.
32-bit: 64GB if PAE is enabled in build, otherwise 4GB *
64-bit: 64GB if PAE is enabled in build, otherwise 4GB *
http://www.spack.org/wiki/LinuxRamLimits
http://en.wikipedia.org/wiki/Physical_Address_Extension#Linux
http://kerneltrap.org/node/2450
By default the kernel reserves 1GB for it's own use, though this may be tweakable. Applications, as I understand it, can access all the rest per process.
http://www.spack.org/wiki/LinuxRamLimits
In particular if you've got any Mac (older or newer) or Linux info to add feel free to contribute, however all contributors *must* provide sources. Will update with any new information as it comes to hand- my contact email can be found here.