32bit Windows can use more than 3GB of RAM, MS just doesn't want you too
geoffchappell.com
geoffchappell.com
It was a weird XMS sort of memory extension developed for enteprise applications on the Pentium Pro. Supporting it adds all sorts of weird corner cases that have to be dealt with in the operating system. It is a good thing MS doesn't support it, it's the right technical choice.
Much better to go with a straight flat 64bit address space than hacked up crap. Anyone who remembers segments and offsets can tell you how horrible it is.
oracle, mssql, etc had weird extended windowed memory versions for huge ppro systems (Remember this is back in 1996). All the horrors of working with XMS/EMS type memory with the added joy of windows. How could you lose?
ETA footnote:
1: Having finally managed to gain access to the article, I can see I was using the word "support" as in "technical capability", rather than "will stand behind it and help you when it breaks".
I'm not aware of the "corner cases" you're referring to. The page table format changes, (4 levels instead of 3, rather like in 64-bit mode) and if you wish you can use the x86 memory segmentation system in creative ways, IIRC. You also need to watch the addresses you can use as DMA sources and destinations, but you have to do that in real 64-bit mode as well. (not all PCI devices support >32-bit memory addresses for DMA) Plain Windows XP even enables PAE if supported by the hardware, but refuses to touch memory above the 4GB address barrier.
The real problem, as far as I can tell, is kernel-mode code, which must be aware of PAE and must be able to deal with it accordingly, especially concerning the DMA issue mentioned above. And for better or worse, there's a lot of third-party kernel-mode code running on the average Windows system (drivers, virus scanners, etc.) and MS understandably don't want to deal with the support quagmire of third-party drivers that don't properly support PAE. Because even if it's the driver developer's fault, the customer will see Windows crashing, and therefore it's Microsoft's fault.
Certain server versions of Windows do support PAE, but they have their own, more expensive driver certification process, which is fine for hardware and software created for "enterprise" customers. And things like databases from Oracle and IBM did and presumably still do use the hairy remapping APIs in their 32-bit versions, because the 64-bit-era has only arrived relatively recently in windows-land.
Linux solves this by controlling all officially supported drivers because they ship with the official kernel, so making all drivers PAE-aware is easy. Everything outside of that is the user's or the distributor's responsibility.
The big one (aside from virtual memory space) is the NX bit. You can set regions of memory noexec.
Imagine doing this to things like the stack, or the heap. Done properly, you can mitigate the risk from buffer overflows (the program will simply crash if it ends up in the wrong spot).
Then why do they still sell Windows?
/me ducks
BTW, PAE has been working for me under Linux for what seems to be ages. It's a kludge, sure, and no replacement for a 64 bit CPU, but remember the x86 did not enter the 64-bit world until there was a viable OS and software for the AMD64.
And some may even consider the AMD64 a kludge of its own.
I think this might be the article (google cache): http://209.85.173.132/search?q=cache:Li-1XUnINOUJ:www.geoffc...
Meantime, the price of 64-bit Windows is the same as 32-bit windows, and last I looked MS would swap your Vista DVD for free on request if you realized you should have bought 64-bit. So why do I care?
Or both...