Saturday, September 09, 2006

A Lesson Wherein The Protagonist Learns Why 4 = 3

I have 4GB of memory for my computer. 4 Gleaming, shiny artistically designed, deep green, heat sink enshrouded memory chips. This is cool. However, A mystery appears.

When I power up the computer, it does a physical memory check and says it sees 4GB. Good. When it's up and running however, I look ask taskmon and clearly see only 3GB allocated. Nost so good. My page file is 3145196K and my total Limit is 6126444K. Very nice, but not 4GB.

Assuming a hardware problem, I dicked around a while in the case and convinced myself I figured out that one of the chips was bad. [Red Flag: it seemed to be the last oneI tested]. I ordered a new chip. It came yesterday, and I installed it this morning. I was excited because, well, I paided for 4GB and damn it, I want 4GB (despite teh fact I'll never use it all). Closed the case, powered up, BIOS check saw 4GB, started windows, and...... 3GB

Jesus McFuck

It's got to be the OS. Googgle, google, sure enough:
The range of an address space is defined by the native word size of the operating system. For Windows NT based systems, this value has a size of 32 bits, which corresponds to an address space of 2^32 bytes or approximately 4 gigabytes of memory. Thus, all processes on Windows NT platforms are limited to having access to only 4 gigabytes of memory (This limit will be expanded to a range of 2^64, with the introduction of Win64 platforms in the future).This is not the only limitation placed on processes on Windows platforms, though. System addresses are mapped into this address space, so the available address space is further reduced. The amount of address space is utilized by the system is dependent on the version of Windows NT being used. For Windows NT and 2000 Workstation and some versions of Windows NT Server, the upper 2 gigabytes of the address space is reserved for the system. This leaves only 2 gigabytes available to the process for use. For certain Windows Server-class systems (including versions of NT/2000/2003 Server and also Windows XP Professional), the system can be configured such that only the upper 1 gigabyte of the address space is reserved for the system, leaving 3 gigabytes of address space available for use by the process. These limitations are summarized in the following table. (Please consult your system administrator, system documentation or Microsoft for information about configuring your system to use more than 2 GB of memory for process use.)
Operating System
Available Address Space
Windows NT Workstation and Windows Server-class systems
2 Gigabytes
Certain Windows Server-class systems (including NT/2000/2003 Server and XP Professional)
3 GigabytesTo the best of our knowledge, Windows XP also has these same limits. As you will read below, IDL, as a window-based application, does not have access to this full 2 - 3 GB in one contiguous block.SolutionThe only solution for this type of limitation is for the operating system to change. For Windows, a user could move to Windows NT Server, Enterprise Edition (or other systems mentioned above) or a 64 bit version of Windows. Of course, a user could also try another platform such as Linux (32-bit) or Solaris (64-bit).


I'll be dead in the cold, cold ground before I go back to Solaris. There *must* be some tweak I can pull to get the memory count up.
Technically, I have 4GB available, but 1GB is reserved for the OS. It does explain why the system is so damn fast, but ... I want my memory!

Damn those facist Redmond bastards aand their, "I know what's best for you mentaility"!

No comments: