More Bad Drivers on the Information Superhighway

Opinion: To prevent bad device drivers from making the system unstable, Microsoft artificially limits the amount of memory available to Windows.

Its as true of any operating system as it is of Windows, but Windows gets a harder time for it: Bad device drivers make for a bad computing experience.

Device drivers are effectively system software. Very often its hard to tell the difference between a device driver problem and a Windows bug, and this is certainly the case for the non-technical. The system can become unreliable or unresponsive. Devices and programs can seem slow or the quality of multimedia features can degrade.

Device drivers need physical access to the hardware, so they have to be trusted by the operating system. This means they have to be trusted not only to respect security measures—a malicious device driver has access to anything and everything on your computer—but its trusted not to muck things up generally.


From market share shifting to the shift to notebooks, the world of desktop computing is always in flux. Read more in our special report .

How bad can it get? If youre running 32-bit Vista and you have 4GB of RAM in your system, youre paying the price for it, whether you have bad drivers or not.

Thirty-two-bit versions of Windows Vista are limited to 3,120MB of effective memory, even if the system has the full 4GB (4,096MB) that 32-bitness should allow. This is intentionally done to protect against what appear to be common errors in device drivers.

The problem is that memory in 32-bit x86 systems is complicated. Its not just a 4GB block of RAM. First, hardware usually reserves big chunks of memory near the top of the address space, limiting usable memory to about the 3.1GB that Windows allows.

But wait, what about PAE (Physical Address Extensions), the standard that puts 36 address pins on those same processors? Surely that means I can use up to (let me find my old HP calculator) ... a lot more than that? 64GB? Yes, but only in theory.

Originally, Windows XP supported all 4GB in systems that had it, but it turned out to be problematic. Microsoft noticed blue screens and crashes.

PAE doesnt change the fact that Windows is a 32-bit operating system. Pointers in programs dont suddenly get 36 bits in them just because the system has PAE memory in it. Im sure other operating systems have similar issues.

PAE is a paging system, sort of like the old EMS (expanded memory system) from real-mode x86 days. In the case of PAE, page tables are used to map a different 4GB space into different processes. So because of the reserved areas of address space, on a system with 4GB of RAM, about 0.9GB of it will be above the 4GB physical limit.

This means that the physical addresses of that memory will have more than 32 bits in them. Because of memory-mapped I/O, device drivers often need to be aware of this fact and account for it, and guess what: They often dont. Sometimes they just assume that addresses are 32 bits.

For this reason, Windows just chops off the upper part of the memory on 32-bit versions. In fact, on Windows Server versions there are similar restrictions, except on the Advanced SKUs. To use all of your memory you need 64-bit Windows, and then you run into the fact that lots of drivers just arent written for it.

Look for this to be an increasingly annoying problem if memory continues to get cheaper, which, over the long term, its bound to do. The move to 64-bit operating systems on the desktop wasnt supposed to be necessary for technical reasons, but it may turn out to be so just so that we get our moneys worth out of our hardware.

Security Center Editor Larry Seltzer has worked in and written about the computer industry since 1983.


Check out eWEEK.coms for the latest security news, reviews and analysis. And for insights on security coverage around the Web, take a look at Security Center Editor Larry Seltzers blog Cheap Hack.

More from Larry Seltzer