Bob said:
You sure about the 4 gigs? I always thought it had a 3 gig limit.
And then the stuff you mentioned was deducted from that.
Where can I look that up?
Scroll down, until you see the WinXP entry.
http://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx
"Physical Memory Limits: Windows XP
Version Limit in 32-bit Windows Limit in 64-bit Windows
Windows XP 4 GB 128 GB "
There are a couple aspects to memory. There is the total
amount of memory available to the system. Once the address
space for the system buses have been provided, that might
leave room to address 3.2GB of memory. The rest of the memory
is ignored, as there is no way to get to it. (The memory
is physically there, but there is no address value the
processor can emit, which will gain access to the other 800MB.)
The other aspect, is the kernel space/user space split. That
can be set to 2GB:2GB or 3GB:1GB. That controls the max address
space that a single program can use. That is what is shown at
the very top of that Microsoft information page.
The program capability is called LARGE_ADDRESS_AWARE.
The boot.ini has a switch called /3GB, which works to
allow LARGE_ADDRESS_AWARE programs to use more memory.
See the /3GB entry here, which is a boot.ini option.
http://support.microsoft.com/kb/833721
To give a couple examples, say I have a couple infinitely greedy
computer programs to run. I'll call them Program1 and Program2.
I have a computer with 4GB of memory installed. The system reports
3.2GB of memory free. I'm going to ignore a few issues, to make the
results easier to see.
In the boot.ini, on my first run, I'm not using /3GB. This is how
your WinXP would behave, right after it is installed. I start both
programs. This is the amount of memory each program gets.
Program1 2.0GB
Program2 1.2GB
OK, now I go to the boot.ini, and enable the /3GB switch. I start
the programs again. Hmmm. Same results. Why did this happen ?
Program1 2.0GB
Program2 1.2GB
My problem is, the programs don't have the LARGE_ADDRESS_AWARE flag
set on them. This is a property of the program itself. So I go
to the program manufacturer, and get new, LARGE_ADDRESS_AWARE versions.
Now I start the two programs.
Program1 3.0GB
Program2 0.2GB
So the largest address space a single program can use is 3GB, and
that is under ideal conditions. Since the free memory on the computer
might only be 3.2GB, this is not such a big deal. The kernel needs
some space too, and I've ignored that in my example.
I can run any number of programs, to use up all the possible memory
that can be given to the programs. In my example, this was 3.2GB
of memory. The system had 3.2GB to give, and it all got used.
But what I cannot do, is manage to get a single program to use
3.2GB.
That probably isn't a very clear explanation, but it'll give you
some things to look up.
I had 4GB installed on my computer for a short time. I tried
the /3GB switch, and it turned out, I didn't have any
LARGE_ADDRESS_AWARE programs to experiment with. In fact,
all I could manage, with an old copy of Photoshop, was for
Photoshop to use 1600MB of memory. I didn't bother loading
up programs until the system broke or anything, so I didn't verify
that I could use all the memory. I was more interested in how close
I could get to 3GB, and in fact, I didn't get very close at all.
Memory is never wasted. Any unused memory, can be used for file
caching. When you read files off disk, they are cached in any
free memory which exists on the system. A later access to the
files, uses the copy in memory. This speeds up access, but
only under specific conditions. But it means, the memory is
always working for you, in some way. The only bit which is
truly wasted, is that 800MB that has no address pattern to
get to it.
The PAE option might have worked at one time, but for WinXP
it has been hobbled.
http://en.wikipedia.org/wiki/Physical_Address_Extension
"However, desktop versions of Windows (Windows XP, Windows Vista)
limit physical address space to 4 GB for driver compatibility reasons."
HTH,
Paul