Jeff covered this a while back on his blog in terms of 32 bit Vista.

Does the same 32 bit 4 GB memory cap that applies in 32 bit Vista apply to 32 bit Ubuntu? Are there any 32 bit operating systems that have creatively solved this problem?

+1  A: 

In theory, all 32-bit OSes have that problem. You have 32 bits to do addressing. 2^32 bits / 2^10 (bits per kb) / 2^10 (kb per mb) / 2^10 (mb per gb) = 2^2 = 4gb.

Although there are some ways around it. (Look up the jump from 16-bit computing to 32-bit computing. They hit the same problem.)

Rob Rolnick
The standard way around this is to use PAE to provide 36 bits to do addressing.

Linux supports a technology called PAE that lets you use more than 4GB of memory, however I don't know whether Ubuntu has it on by default. You may need to compile a new kernel.

Edit: Some threads on the Ubuntu forums suggest that the server kernel has PAE on by default, you could try installing that.

+2  A: 

Yes, 32 bit ubuntu has the same memory limitations.

There are exceptions to the 4GB limitation, but they are application specific... As in, Microsoft Sql Server can use 16 gigabytes with "Physical address Extensions" [PAE] configured and supported and... ugh

Also drivers in ubuntu and windows both reduce the amount of memory available from the 4GB address space by mapping memory from that 4GB to devices. Graphics cards are particularly bad at this, your 256MB graphics card is using up at least 256MB of your address space...

If you can [your drivers support it, and cpu is new enough] install a 64 bit os. Your 32 bit applications and games will run fine.

This is not entriely true. 32 bit apps and games MOSTLY run fine - in THEORY. In practice it's a huge hassle.
This is incorrect. 32-bit Ubuntu running one of the PAE_enabled kernels supports more than 4 GB of physical RAM. There are still per-process limits, however.
+2  A: 

Well, with windows, there's something called PAE, which means you can access up to 64 GB of memory on a windows machine. The downside is that most apps don't support actually using more than 4 GB of RAM. Only a small number of apps, like SQL Server are programmed to actually take advantage of all the extra memory.

PAE is the way the OS can access more than 4Gb of physical memory. Linux supports this too. It doesn't allow applications to use more than 3Gb of address space. Windows provides a nasty way for apps like SQL server to use more memory than this; I'm not aware of anything similar for linux.
Mark Baker
PAE is only supported on Enterprise editions of Windows.
Roger Lipscombe
+3  A: 

Ubuntu server has PAE enabled in the kernel, the desktop version does not have this feature enabled by default.

This explains, by the way, why Ubuntu server does not work in some hardware emulators whereas the desktop edition does

This should be the correct answer :)
+1  A: 

There seems to be some confusion around PAE. PAE is "Page Address Extension", and is by no means a Windows feature. It is a hack Intel put in their Pentium II (and newer) chips to allow machines to access 64GB of memory. On Windows, applications need to support PAE explicitely, but in the open source world, packages can be compiled and optimized to your liking. The packages that could use more than 4GB of memory on Ubuntu (and other Linux distro's) are compiled with PAE support. This includes all server-specific software.

There is some confusion indeed, and you're not making it any better. PAE does nothing to allow applications to access it transparently. And indeed how could it? With only 32 bits in your address register accessing more than 4 Gb will need application support.
Mark Baker