[BUG #NaN] Windows 32-bit says I only have 3.3GiB of RAM
Posted by: bigbolshevik in Advocacy, Permanent Articles, Proprietry software, Technology Stupidities, Web/TechAn open letter to computer users and the builders of gaming computers:
32-bit Windows (indeed, any 32-bit operating system) cannot address more than 4 gibibytes of RAM. This is a limitation of the number of bits required to represent memory addresses above 4 gibibytes, not a bug in Windows.
In fact, a 32-bit operating system cannot actually use more than 3.3 GiB of RAM; sometimes less. This is due to “memory-mapped I/O”. Parts of the computer hardware have their own small amounts of memory that the processor and motherboard need to be able to address, and they do this by mapping them to the ceiling of the address space. Basically, from 4 gibibytes downwards, any hardware devices with memory on them are allowed to take address space. Typically, you end off with 3.3 GiB of address space afterwards.
People and companies building gaming computers are either incredibly ignorant or are playing on the ignorance of others. You occasionally see ‘gaming PCs’ being advertised or reviewed with 8 GiB of RAM and 32-bit Windows. Most of that RAM will not even be SEEN by the processor running in 32-bit mode! What’s really daft is including two 512MiB or 1GiB graphics cards in SLI/Crossfire, as the former will eat up another gibibyte of address space, and the latter will eat over half the available address space, leaving you with only 2 gibibytes of memory available for Windows and your programs!
When asked, the companies often say “We use 32-bit Windows because 64-bit doesn’t work with anything”. Well, at least 64-bit Windows works with all your RAM! Besides, 64-bit operating systems work with almost everything nowadays; I’ve been using one for months without even noticing a difference.
You still hear people complaining that they just installed a 32-bit operating system and “It only sees 3.3 gigabytes!”, but what’s even more disturbing is hearing people say “Go to this address and install a hacked Windows DLL that my friend made, that enables PAE support.”. Or, on Linux, they say “Here’s a HOWTO about recompiling your kernel with PAE support”.
In the first instance, installing hacked DLLs is a really, REALLY bad idea for the possible harm it can cause, and the very likely possibility that the hacked DLL has a rootkit in it, preying on ignorant young souls who want to use obscene amounts of memory without the pain of using an operating system that “doesn’t work with anything”. In the second instance, recompiling the kernel is much more work than just installing a 64-bit version of your distribution. In both instances, there are more 64-bit-compatible drivers than there are PAE-compatible drivers, especially on Windows!
So please, practice smart computing. Follow this checklist:
1. Got 4 gibibytes of RAM or more? Install a 64-bit operating system.
2. Got 3 gibibytes of RAM and more than 512MiB of graphics memory? Install a 64-bit operating system.
3. Got 2 gibibytes of RAM and a pair of 768MiB or 1GiB graphics cards? Install a 64-bit operating system (3300MiB - (768MiB x 2) = 1764MiB addressable).
4. Are you affected by 1, 2 or 3 and your processor is 32-bit? (Core Solo and Core Duo, but not Core 2, are 32-bit). If you use Windows on the desktop, you must use 32-bit; you have no choice (hacked DLLs is not a choice, and using a server edition of Windows is probably not a choice either). If you use Linux, then either build or install a pre-built PAE kernel.
3. Otherwise, either use your existing 32-bit operating system or, if you’re already going to be installing or reinstalling, take the opportunity to move to 64-bit.
Entries (RSS)
Thanks! I did not realize this. Good article….