On Thu, Jul 10, 2014 at 12:31:11AM -0600, Eric Smith wrote:
[...]
Nothing in the architecture or implementation of
"modern virtual memory
operating systems" (where "modern" hasn't really changed significantly
since
the mid-1970s) precludes what John is talking about. The Windows Address
Windowing Extension (AWE) API he mentions is an existence proof.
And a search for AWE32 initially only found old DOS-era soundcards :)
That Linux, xBSD, etc. on x86-32 don't provide
anything directly equivalent
only demonstrates that there's little demand for such a capability (probably
due to the widespread availability of x86-64), but not that there's anything
fundamentally difficult about it or that it is in any way incompatible with
"modern" operating system architecture or implementation.
I'll state in my own what I understand AWE32 to be, so you may correct me if
I've gotten the wrong end of the stick: it is a Win32 API that allows you to
take a chunk of memory larger than your address space, and map fragments into
your address space.
And that's basically what mmap() does. The only difference is that it maps
virtual memory identified by a file descriptor. Remember that a "file" in Unix
isn't always a file on disk, but can instead be a handle to some other managed
resource, including physical memory.
I posit that AWE wasn't used much not because of x86-64, but because it's not a
very good API and there were better ways to do it.