And it is a very real limit. The OS makers aren't necessarily to blame; the Intel architecture itself only allows 232 bits to address physical memory. That'syou guessed it4GB. However, there is a workaround. Introduced on the Pentium Pro, Intel's PAE or Physical Address Extension, allows the address space to be extended to 236 bits64GB. This is little more than a hardware hack, and using it requires special OS support. Without PAE support, you're limited to 4GB in all commonly available operating systems. In the case of Linux, you have to recompile the kernel and pay a 3-6 percent performance penalty across the board. In the case of Windows, you're looking at Advanced Server for more than 4GB, Datacenter Server for the maximum 64GB, and a comparable performance penalty for PAE mode. All other Microsoft NT kernel operating systems are limited to 4GB, and the Win9x kernel is limited to 2GB, which is mostly of academic interest.
But that's not allit gets worse. The OS will always land-grab about 1GB of your physical memory for itself. And beyond that, even if you're fortunate enough to obtain an OS that can use more than 4GB of memory, most application calls are still 32-bit. That means your apps will be limited to 4GB of memory, regardless of how much memory is in your machine. There are ways to get around this, such as the Address Windowing Extensions, introduced with Windows 2000. If you're having flashbacks to the bad old DOS days of EMS, XMS, and HMA...well, you're right. This is a nasty software hack.
It's an ugly situation, and until recently, it wasn't relevant to 99.9 percent of users. But it will be, and sooner than anyone ever predicted. What's the ultimate answer? 64-bit operating systems running 64-bit apps. Until then, expect some weird stuff to occur, but who knows? As Bill Gates was so famously quoted circa 1981, 4GB should be enough for anybody. Right?