Subject: Re: Alternative to memory maps for large (> 10GB) files on ix86.
To: Mike Cheponis <mac@Wireless.Com>
From: Bill Sommerfeld <sommerfeld@orchard.arlington.ma.us>
List: port-i386
Date: 10/16/2000 08:04:25
> On the 486 (and I assume Pentii) each task on the 486 has a maximum of
> 2^14-1 (16K) selectors, and offsets can be 2^32 bytes, giving a total of
> 2^46 bytes (or 64 terabytes) of logical address space per task.  (A selector
> is the contents of a segment register).  That's 70,364,449,210,368 bytes
> per task.

There's this unfortunate implementation detail: all selectors do is to
provide a base and offset into a single 2^32 byte address space.

Now, it's conceivable that one could play some games with faulting
segments into this address space on demand, but only by limiting the
maximum segment size -- if you tried to use a 2^32 byte data segment
in this sort of "large model" alternate universe you'd have to evict
all other segments from memory, which wouldn't work very well, since
you need somewhere to put your code and your stack..

So, it's more than a lot of code.  It's a new ABI (new compiler,
linker, and run-time libraries) and a new VM system...

.. it's probably more effort than porting to a sane CPU which lets you
do this stuff *without* jumping through hoops..

If you want real 10GB mmap'ed files, get a real 64-bit CPU...

						- Bill