Author Topic: 3 gb Limit For Windows XP ?  (Read 4415 times)

cman

  • Member
  • **
  • Posts: 201
3 gb Limit For Windows XP ?
« on: July 10, 2012, 04:12:20 AM »
I just added another 2gb ( for a total of 4gb ) Ram to my PC equipped with Windows XP Pro.  My System Information dialog tells me my Total Physical Memory is 4,096.00 MB but Windows Task Manager lists total physical memory at 3135016 KB. Can Windows Xp only use around 3 gb of my Ram or has Windows reserved this memory for some other purpose? Thanks for any information....

dedndave

  • Member
  • *****
  • Posts: 8751
  • Still using Abacus 2.0
    • DednDave
Re: 3 gb Limit For Windows XP ?
« Reply #1 on: July 10, 2012, 05:24:37 AM »
32-bit windows versions only support 4 Gb to some extent
it is usable by the OS or by drivers, services, etc
but it will not be available to user-mode applications
so - it is still nice to have the extra Gb   :P

K_F

  • Member
  • *****
  • Posts: 1293
  • Anybody out there?
Re: 3 gb Limit For Windows XP ?
« Reply #2 on: July 10, 2012, 06:46:47 AM »
If I remember correctly.. you only have 2 Gigs to play with... the system uses the upper 2 gigs.
Anything above 2 gigs and you have the virtual disk going nuts.. and eventually the wonderful blue screen.

 :biggrin:
'Sire, Sire!... the peasants are Revolting !!!'
'Yes, they are.. aren't they....'

Obivan

  • Regular Member
  • *
  • Posts: 3
Re: 3 gb Limit For Windows XP ?
« Reply #3 on: July 10, 2012, 07:42:23 AM »
Quote
...you only have 2 Gigs to play with...
Yes and No. You can used the 4GT RAM Tuning Switch to extend your Usermodespace up to 3 GB. In the knowlegdebase is describe the dark side of this tuning. The switch works on all 32 Bit Windows Versions.

The System can only use RAM space lower than the first IO Space, that ist the limitation of your 3135016 KB. This Limitation ist not the fault of Windows, it is the fault of the 32 Bit architecture.

Happy testing

dedndave

  • Member
  • *****
  • Posts: 8751
  • Still using Abacus 2.0
    • DednDave
Re: 3 gb Limit For Windows XP ?
« Reply #4 on: July 10, 2012, 08:53:55 AM »
oh yah - i seem to recall something about a "/3GB" switch you can add to boot.ini

http://support.microsoft.com/kb/833721

not sure that is advisable, though

MichaelW

  • Global Moderator
  • Member
  • *****
  • Posts: 1209
Re: 3 gb Limit For Windows XP ?
« Reply #5 on: July 10, 2012, 09:02:36 AM »
Well Microsoft, here’s another nice mess you’ve gotten us into.

dedndave

  • Member
  • *****
  • Posts: 8751
  • Still using Abacus 2.0
    • DednDave
Re: 3 gb Limit For Windows XP ?
« Reply #6 on: July 10, 2012, 09:31:45 AM »
interesting Michael
it would seem that it borders on "false advertising"
at the bottom of that page is a link for "4 GB Tuning"
http://msdn.microsoft.com/en-us/library/windows/desktop/bb613473%28v=vs.85%29.aspx
and another for PAE

hutch--

  • Administrator
  • Member
  • ******
  • Posts: 4930
  • Mnemonic Driven API Grinder
    • The MASM32 SDK
Re: 3 gb Limit For Windows XP ?
« Reply #7 on: July 10, 2012, 12:07:50 PM »
The main win with the extra memory is it allows the OS to put all of its code above the 2 gig address limit and that means that you can allocate just under 2 gig without fiddles. Above 3 gig you often get video, sound and other drivers running and while you can extract some more with the 3 gb switch, you must change the linker options for the application that uses it.

It was a fudge for 32 bit software that needed some more address space, mainly servers that did not load the upper address range with video and sound drivers.
hutch at movsd dot com
http://www.masm32.com    :biggrin:  :biggrin:

clive

  • Regular Member
  • *
  • Posts: 27
  • Toolsmith and Assembler coder (x86,ARM,MIPS,68K)
Re: 3 gb Limit For Windows XP ?
« Reply #8 on: July 21, 2012, 07:01:42 AM »
NT and XP classically used the high order bit to determine if an address was in kernel space, the /3GB option works when drivers/applications are aware that >=0xC0000000 is kernel space, not just >=0x80000000 (sign bit). The Kernel and non-page pool live in the top 1 GB (always virtualized up there), the Kernel can't tolerate page faults (ie can't deal with another page fault, while handling a page fault), and maps/locks user memory into these high regions so that kernel drivers can touch them regardless of whatever application/task is running below. You'd get pretty blue screens if your driver touched the lower user space after the context switched. IRQL not less than or equal, or some such. A clear sign a driver writer had failed to test across a context switch, and had only observed instant completion of his asynchronous IO. You also can't DMA into context switched memory, needs pining to a physical page or pages. And block and file system drivers need to keep all their structures in non-page pool.

Per Michael's link

"X86 client versions with PAE enabled do have a usable 37-bit (128 GB) physical address space. The limit that these versions impose is the highest permitted physical RAM address, not the size of the IO space. That means PAE-aware drivers can actually use physical space above 4 GB if they want. For example, drivers could map the "lost" memory regions located above 4 GB and expose this memory as a RAM disk."

I have an old Athlon64 box (HP DC5750) running XP 32-bit, with PAE enabled, 4 slots of DDR2 with 8GB total memory, and yes there are RAM DISK drivers that can use this space. I think the BOOT.INI had /PAE /3GB, the PAE setting can be confirmed via Right Click My Computer, Properties

Most Intel boxes of this era have 2GB max, and at most 4GB unless you got to Xeon/Server chipsets.

Now if you have a modern Win7 x64 AMD Box you can easily, and cheaply, get 4 slots of DDR3 with 32GB total memory, Windows will automatically use all uncommitted memory as disk cache.
It's a pity the clowns in Washington DC don't understand the Constitution as well as Edward Snowden