[ale] "per-process virtual address space" limit only for x86 architecture?

JK jknapka at kneuro.net
Mon Jul 28 14:59:01 EDT 2008


Warren Myers wrote:
> I believe, though am not 100% positive, that this is listed because of
> the inherent limitation of a 32-bit OS and processor to address more
> than 3GB of RAM without some weird extra coding.

This is really just a quirk of the Linux kernel implementation.

The x86 version of Linux uses a common virtual memory area for
all kernel code and data. This area is mapped into the top 1GB
of *every* process's virtual address space, leaving only 3GB
of the 4GB virtual address range for user code.  This means that
the kernel addresses are valid in every process's context, so
no reloading of pagetables etc is required when entering kernelspace.
I don't know how this is handled on other architectures, but I
would be surprised if it were drastically different.

There's a patch floating around somewhere that gives the kernel
a completely separate set of pagetables, and allows processes
access to the full 4GB virtual address space.  But this requires
flushing of TLBs and so forth on every entry into kernel-land,
so it's slower than a stock kernel.

-- JK


-- 
I do not particularly want to go where the money is -
  it usually does not smell nice there. -- A. Stepanov


More information about the Ale mailing list