[lkml]   [2001]   [Jul]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
At 2:45 PM -0400 2001-07-10, Richard B. Johnson wrote:
> > AT&T days that there were Unix ports with separate kernel (vs user)
>> address spaces, as well as processors with special instructions for
>No. The difference between kernel and user address space is protection.
>Let's say that you decided to revamp all the user space to go from
>0 to 2^32-1. You call the kernel with a pointer to a buffer into
>which you need to write kernel data:
>You will need to set a selector that will access both user and
>kernel data at the same time. Since the user address space is
>paged, this will not be possible, you get one or the other, but
>not both. Therefore, you need to use two selectors. In the case
>of ix86 stuff, you could set DS = KERNEL_DS and ES = a separately
>calculated selector that represents the base address of the caller's
>virtual address space. Note that you can't just use the caller's
>DS or ES because they can be changed by the caller.

Sure, for IA-32, it's a royal pain. But Unix runs, after all, on
other CPUs. In point of simple historical fact, there have been Unix
ports with separate kernel and user address spaces, and there are
CPUs that, unlike IA-32, can simultaneously address the two spaces,
by virtue of having separate page table pointers and instructions for
copying between the two spaces.

To the extent that we're talking about Linux on IA-32, though, I
entirely agree that the cost of expanding user space from 3GB to 4GB
far outweighs any benefit. Especially with 64-bit architectures
coming online.
/Jonathan Lundell.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 12:56    [W:0.059 / U:0.148 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site