Holy cow, I wrote a book!
The Windows boot.ini file has a /MAXMEM
switch whose name would lead you to believe that it sets the
maximum amount of memory that Windows will use.
But that's not what it does; the name is misleading.
What the /MAXMEM flag really does is
set the maximum physical address that Windows will scan in search of RAM.
If your physical memory map contains discontiguous chunks of RAM,
such as the one at the 3.5GB boundary
in the sample diagram I drew a few months ago,
then the amount of RAM Windows finds will be less than the
/MAXMEM value you specified.
For example, if there were a gap between 128MB and 256MB (said gap
used by some hardware device, say), then
setting /MAXMEM to 512MB would only give you 384MB of RAM.
You lost 128MB of physical address space to the gap.
Knowledge Base article Q108393 says
Microsoft has not committed to keeping the switch
in any future releases of Windows.
In fact, Windows Vista carries through that threat.
The /MAXMEM switch has no effect in Windows Vista.
To try to avoid the confusion surrounding the meaning of MAXMEM,
the kernel folks changed its name to TRUNCATEMEMORY.
(It also specifies the physical address limit in bytes rather than
I'm not sure the name change will really help much
to dispel the confusion, though,
since it still says "memory".
I think they should've called it something like