Re: Creating a per-task kernel space for kmap, user pagetables, et al

Itai Nahshon
2002-03-21T04:23:00Z

On Thursday 21 March 2002 01:39 am, Alan Cox wrote:
> > That has been implemented in Caldera OpenUnix in the last years.
>
> V7 unix had it. Thats where the "uarea" aka u. comes in. Its one of the
> killer problems with Linux 8086 - on the 11 they could put the kernel stack
> file handles and other process local crap into a swappable segment that
> could also be swapped from the kernel address space. On the 8086 thats
> trickier

Some 20 years ago I knew almost everything about BSD-4.x on a VAX.
The user area was just above the user stack. Actually it was part of the
user space, accessible RO from user mode and RW for the kernel.
It was always mapped at a fixed address that was just below the 2G
marker.

The process table contained whatever was needed to swap-in
and access the user area, some scheduling parameters and
signal mask/pending bits (I'm sure I missed something).

This arrangement might save some physical memory because
this area was swapped with the process (actually that was the last
thing to swap out/first to swap in because the page table for the
rest of the process was in there).

I think this arrangement made stuff as shared memory (and libs),
ptrace and other IPC more complicated. Then memory management
stuff... Remember that the system base architecture knew how
to swap in/out only whole processes. Paging was implemented
above it with a global clock (LRU like) algorithm.

Truely I thought that putting everything in "current" in Linux was
more of a design decision and not something that's derived from
the '86 architecture.

-- Itai