Making use of non-addressable wasted RAM on 32 bit systems?

  • Thread starter Thread starter John Doe
  • Start date Start date
J

John Doe

I just copied the subject line from a website article title.

Is a RAM drive the only use for extra memory on a 32-bit Windows
system?

Thanks.
 
I just copied the subject line from a website article title.

Is a RAM drive the only use for extra memory on a 32-bit Windows
system?

More or less. Almost any app can in theory use PAE but it has
to be written with that in mind. No wonder that none are. The RAM
Drive app is one of the welcome exceptions. I use it at work where I
opted to keep XP on a high end machine simply because I did
not feel like reinstalling anything when upgrading from the old one.

DK
 
John said:
I just copied the subject line from a website article title.

Is a RAM drive the only use for extra memory on a 32-bit Windows
system?

Thanks.

RAMDisk is a use for the extra memory. And the reason
it works, is the RAMDisk is done with driver code, in
Ring 0. And the properties of Ring 0 are different
than Ring 3. At least, on Windows.

Now, pretend you were using an OS not involving Bill Gates.
The processors have had PAE support for a while. Which takes 64GB of
physical RAM, and allows it to be accessed as 16 chunks of 4GB
worth of address space. A 32 bit address going into the mapping
function, causes a 36 bit value to come out the other side, and
that 36 bits accesses the memory controller. That's PAE.

Now, even though PAE is enabled on WinXP SP3 x32, that doesn't
mean you can run 16 programs each using their own private 4GB space.
The Windows memory license allows up to 4GB or so, to be used.

If you were on Linux, you'd need a kernel compiled with the
appropriate options, to use PAE and do what Windows won't allow
you to do.

These are some examples of Linux kernel configuration options.
The first one, might be for systems with up to 1GB or so. The
64G one, I'm guessing here, looks like a PAE option. If the
kernel was 64 bit, then 64GB would not be a limit on such a
system, and 64G to me, is synonymous with x32 OS and PAE enabled.

CONFIG_HIGHMEM=y
CONFIG_HIGHMEM_4G=y
CONFIG_HIGHMEM_64G=y

I've probably posted this link before, where the author of this
article hacked Vista x32, to break the memory license and
access more than 4GB. So this guy does get his money's worth
from the RAM he purchased.

http://www.geoffchappell.com/viewer.htm?doc=notes/windows/license/memory.htm

It's a "32-bit Operating System" with "8189 MB" of memory. Apparently
3MB of installed RAM are reserved for something else :-) Maybe
some of that is 640K for Bill Gates.

http://www.geoffchappell.com/notes/windows/license/_images/system8189.jpg

HTH,
Paul
 
I just copied the subject line from a website article title.
Is a RAM drive the only use for extra memory on a 32-bit Windows

system?

Just to be clear to us noobs that don't know much about this--are we talking about that area of memory that's between 3.6GB and 4 GB that cannot be used by a PC? Or something else? I would imagine that the OS uses all memory it can get it's hands on, but to the 3.6 GB limit (for a 32 bit OS).

RL
 
Just to be clear to us noobs that don't know much about this--are we talking about that area of memory that's between 3.6GB and 4 GB that cannot be used by a PC? Or something else? I would imagine that the OS uses all memory it can get it's hands on, but to the 3.6 GB limit (for a 32 bit OS).

The OS itself can't use that bit of wasted memory--and getting 3.6gb
available was above average. Usual values were lower than that, I saw
one system that only gave 2.88gb available.

The basic problem is that the extra memory can't coexist with the rest
of the system. That's why it was thrown away in the first place, it
can neither reference nor be referenced by anything else with taking
great (and somewhat slow) care.

Effectively the only thing you can do with such memory is put pure
record-oriented data in it. I did some programming using such a
system back on the old TRS-80--you had to ensure your code wasn't
going to get swapped out (which likely meant that you had to write
your code to tolerate being moved to a safe location, a pain on a
system with no segment registers), disable all interrupts, swap the
memory, copy your data, swap the banks back and re-enable interrupts.

A RAMdisk is basically pure record-oriented (one sector = one record)
data and the overhead of switching things around is tiny compared to
the overhead of going to a real disk.
 
Back
Top