• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

How does Windows XP-32 bit handle having 4 GB worth of system memory?

BeakerChem

Senior member
From my limited understanding, Windows XP 32-bit version has a maximum usable system memory total of 4 GB (4 - 1024MB sticks). I have some thoughts on how it uses this memory from internet searching, but was interested in hearing if people have a better idea.

My thought on how it works so far: The OS reserves 2GB while allowing only 2 GB for applications.

Expand, contridict, explain?

Thanks!
 
This isn't *really* Highly Technical (this question would be better in the Operating Systems forum), but I'll answer it anyway because I'm feeling nice.

Windows' virtual address space gives each process 2GB of addressable memory and 2GB of reserved addresses for OS use. Using the /3GB switch gives processes 3GB of addressable space (google for more details than you probably really want).

So while no individual process can access more than 2-3GB of memory, multiple applications (and Windows itself) can, indeed, use all of it.

There's also PAE (Physical Address Extension), an API for allowing programs to access more than 4GB of RAM. But this is mostly used only for a handful of server-side database applications and a few scientific computing programs.
 
Thank you for your quick response! I could definately move the thread if it is deemed lowly technical. No problem. 🙂

I looked up the toggle /3GB earlier and it seemed as if it was used only by server versions of the OS (NT, etc) and was not supposed to be used for general XP. (As per microsoft.com technical document. I can look this up again, in fact I will so I can be sure)



 
Originally posted by: BeakerChem
Thank you for your quick response! I could definately move the thread if it is deemed lowly technical. No problem. 🙂

I looked up the toggle /3GB earlier and it seemed as if it was used only by server versions of the OS (NT, etc) and was not supposed to be used for general XP. (As per microsoft.com technical document. I can look this up again, in fact I will so I can be sure)

I'm pretty sure this is accurate, although I also think there is a registry hack to enable it with WinXP (like there is with the software RAID5 support). But it's not something I've tried.

 
You do not want to use /3GB as this seriously limits mappable memory for device drivers and the operating system itself. It is offered more or less as a workaround and you do not want to activate it unless you are really aware of what you're doing.

As for PAE, it is only supported by Windows 2003 Enterprise. MS decided to not support this in XP (http://blogs.msdn.com/carmencr/archive/2004/08/06/210093.aspx) because of poor quality in third-party drivers. I used to think XP supported PAE too, but such is evidently not the case. 🙂

If you run 64-bit XP, 32-bit processes will have access to 3GB of virtual memory. This is the proper solution. (I.e. forget about the /3GB boot.ini switch and use the real thing)

All this assumes that the 32-bit executable has a flag set in the PE header signifying 3GB support in the first place. Not all applications can gracefully handle more than 2GB address space. (due to treating pointers like signed integers)
 
XP does support PAE mode in SP2 - if only to support the "No Execute" page flag, which is only present in PAE-ish page tables. Whether or not that implies actual PAE addressing support, I don't know.
 
Uhm, Peter... Check out the link I posted... It pretty much spells it out: No memory beyond 4GB unless you're running Win2k3 Enterprise (or a 64-bit Windows version).

Edit: Hmm, the link was slightly mangled (because of the parenthesis). Click here if you're too lazy to remove the ")". 🙂
 
OK, so it's just as I suspected - it runs PAE mode to get to the NX flag, but it doesn't do paged 36-bit addressing.
 
It'll be a while before games are using 4gb of memory. Current ones usually top out at about 900mb + vga texture memory. Unless you're running a server or you actually do use a multitasking workstation with more than one core/processor, there is absolutely no call for over 2gb of system memory.
 
The games will use more than their share (2GB) of memory only when the operating systems will support that natively. I hope no kind of memory extenders will appear in games (if you used to run old MSDOS games, think of all the strange memory configurations were needed - lots of base memory, XMS, EMS, bla bla bla)
 
Originally posted by: hippotautamus
Unless you're running a server or you actually do use a multitasking workstation with more than one core/processor, there is absolutely no call for over 2gb of system memory.

One word: Photoshop.

Adobe even released a whitepaper explaining that even though the PS process is limited to 3GB virtual memory, the user can benefit from having more memory since the OS will cache PS' scratch files.

This has nothing to do with multitasking -- merely the amount of data you want to churn. 4GB is a small amount of memory when dealing with 16-bit (per colour!) 16 Megapixel pictures. A couple of layers and you've eaten half your memory. Then spend some time merging several exposures in HSM (using 32-bit per colour) and say a big hello to 8GB+ memory requirements (in the very near future -- I'm sure several PS users are already there with bells on).

I can only imagine what the video editing guys need. I think it is a safe bet that more memory won't hurt there either.

 
Back
Top