Missing Gig of Mem under XP

M

Ms. Linda A.W.

I recently got a computer with 4GB of memory with Windows XP
Professional (not 64-bit, 32-bit), but XP-32 w/SP2 is hard coded to
ignore anything above 3GB.

I tried loading SP1, but my machine had hardware too new to be
recognized (SAS drives). Does anyone know how I can get XP to see
the extra Gig?

From what I've read, 4GB was accessible on XP but not generally
usable due to some application library bug (for which, a patch was
available on request). Unfortunately with SP2, MS hard-coded a 3GB
maximum, for non-specific security concerns.

I'm not a 4GB address space for any specific program. I do want it
to be available for holding programs and file buffer space. I
don't know for certain, but I would think XP would automatically
use free memory for file-caching.

Thanks,
Linda
 
R

Robert Moir

Ms. Linda A.W. said:
I recently got a computer with 4GB of memory with Windows XP
Professional (not 64-bit, 32-bit), but XP-32 w/SP2 is hard coded to
ignore anything above 3GB.

Nonsense. I don't know who would tell you such a thing.
I tried loading SP1, but my machine had hardware too new to be
recognized (SAS drives). Does anyone know how I can get XP to see
the extra Gig?

You can't. The space between 'about' 3Gb (varies depending on number and
type of h/w devices you have) and 4Gb in the memory map is being used by the
computer to map hardware and things like that. It's being used by the
computer, it isn't visible to the user.

If you're convinced you need the extra memory visible to you then you need
64 bit Windows.
From what I've read, 4GB was accessible on XP but not generally
usable due to some application library bug (for which, a patch was
available on request). Unfortunately with SP2, MS hard-coded a 3GB
maximum, for non-specific security concerns.

Where did you read this? I need a good laugh.
I'm not a 4GB address space for any specific program. I do want it
to be available for holding programs and file buffer space. I
don't know for certain, but I would think XP would automatically
use free memory for file-caching.

It will use free memory as you suggest. On a 32 bit machine, the space
between 3gb and 4gb isn't free.
 
K

Ken Blake, MVP

Ms. Linda A.W. said:
I recently got a computer with 4GB of memory with Windows XP
Professional (not 64-bit, 32-bit), but XP-32 w/SP2 is hard coded to
ignore anything above 3GB.


No, this is not correct. Windows XP has a 4GB address space and that address
space has to be shared with memory used for other devices. So Windows (not
just XP but all 32-bit versions, including 32-bit Vista) can't use that
entire 4GB for itself.

How much it can use is not simply 3GB, but depends on what devices are
installed. It's normally a little more than 3GB. It's *far* from being
hard-coded, and it's not at all a bug, as you call it below.

I tried loading SP1, but my machine had hardware too new to be
recognized (SAS drives).


It wouldn't have helped. The issue is not specific to SP2.

Does anyone know how I can get XP to see
the extra Gig?


You can't.

From what I've read, 4GB was accessible on XP but not generally
usable due to some application library bug (for which, a patch was
available on request). Unfortunately with SP2, MS hard-coded a 3GB
maximum, for non-specific security concerns.


Sorry, but what you've read is completely false.

I'm not a 4GB address space for any specific program. I do want it
to be available for holding programs and file buffer space. I
don't know for certain, but I would think XP would automatically
use free memory for file-caching.


Unless you run extrememly memory-intensive software (most editing of large
photographic images and video editing fall into this category), it's
*highly* unlikely that you would see the slightest perfromance improvment by
have 4GB of usuable RAM instead of 3GB. How much can help your performance
depends on what apps you run, and in fact, even 3GB is probably way overkill
for most people. Only very few people will see an improvement by exceeding
1GB, and in fact even 512MB is enough, or more than enough, for many people.
 
M

Ms. Linda A.W.

No, this is not correct. Windows XP has a 4GB address space and that address
space has to be shared with memory used for other devices. So Windows (not
just XP but all 32-bit versions, including 32-bit Vista) can't use that
entire 4GB for itself.
---
Sigh. I wish people would quite spreading misinformation. I was told
the same about linux until I tried it. 32-bit linux has no problem using the
full 4GB. Sounds like Windows taking the easier programming route due to having
been burnt in the past.

I found the references I needed on MS's website.
Sorry, but what you've read is completely false.
---
You'll have to take that up with Microsoft.
from http://www.microsoft.com/technet/prodtechnol/winxppro/maintain/sp2mempr.mspx:

"The primary driver compatibility concern is running Physical Address
Extension (PAE) mode on 32-bit systems. PAE mode enables processors to
address greater than 4 gigabytes (GB) of memory. "

And here is the SP2 change that appears to cause the problem (same URL):

"To constrain compatibility issues, Windows XP Service Pack 2 includes
hardware abstraction layer (HAL) changes that mimic the 32-bit HAL DMA
behavior. ...
the kernel memory manager ignores any physical address above 4 GB."
^^^^^^^^^^^^^^^^^

This is the problem -- because of the device mapping, the addr's below
4GB may have device mappings. with PAE, physical memory can be mapped
and accessed above 4GB. The minor programming challenge (which I saw
discussed on the linux kernel mailing list a few years ago) is that
32-bit devices cannot do I/O directly to memory mapped above 32 bits.
Thus i/o to any memory that is above 32 bits must be done first to a
"bounce buffer" (in kernel space, below 32-bits), which is then
transferred to the physical page above 4GB.

Given the fragility of the Windows code, I can see why they chose to disable
this feature. You will likely get a performance bonus out of a 64-bit OS
if you have more than the 3.5G that is directly addressable. Using the bounce
buffers generate a small performance hit (extra memory copy) over lower mapped
memory -- but accessing extra memory with a memory -> memory copy happens in
the multi-gigabyte speed range. Reading the same information off disk is
around 1000 times slower.

If you have programs that need that much memory, it would be better to go with
a 64-bit OS, but for file buffering, 32-bit is much more compatible with most
devices, much better tested and much faster than the equivalent operations
paging or doing i/o from disk.

Sorry, for the overly technical question. :-(
 
R

Robert Moir

Ms. Linda A.W. said:
---
Sigh. I wish people would quite spreading misinformation. I was told
the same about linux until I tried it. 32-bit linux has no problem
using the full 4GB. Sounds like Windows taking the easier
programming route due to having been burnt in the past.

*sigh* the decision on whether to support "tricks" like PAE is an
engineering decision that has advantages and disadvantages.

The people who compiled the Linux distro you're using looked at the issue
and decided that the pros outweighed the cons. Microsoft decided that the
reverse was true? Who is correct? Either one? Neither one? "It Depends?".

I do wonder why you asked the question in the first place if you had already
made up your mind that you knew what the answer was. Some people have
strange hobbies.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top