[eros-arch] Re: [CapROS-devel] Problem with the semantics of address
translation and keeper invocation
Eric Northup
digitale at digitaleric.net
Fri Sep 2 22:53:51 EDT 2005
On Fri, 2005-09-02 at 17:29, Charles Landau wrote:
> >I don't recall who proposed this fix (Scott thinks it was Shap), but it
> >does address the problem of the unintended communication channel. We
> >could change the way we define a valid translation path, so that instead
> >of bounding the total number of steps in the path, we bound the number
> >of steps it takes to translate the range of bits matching a hardware
> >page table. The total path length is still bounded, but in a way that
> >makes it unnecessary to check the length of multiple cached translation
> >paths in response to a single page fault.
>
> I believe this is the way KeyKOS worked, and it seems like the
> correct way. Specifically, there need to be separate bounds on each
> portion (I was going to say each "segment") of the path:
>
> 1. From the domain root, to the node defining the whole address
> space, corresponding to CR3 (usually this is of length one, but in
> KeyKOS it could be more). In KeyKOS, the top-level page table ("page
> directory" in x86, e.g. PageTable2) could be shared.
I was a bit surprised that EROS does not share the top-level page table.
I don't quite understand the case where the node defining the whole
address space is not directly named by the address space root
capability. Even if there are several layers of non-translating/wrapper
nodes, doesn't the first wrapper still define the address space?
[...]
> Furthermore, KeyKOS used any existing translations to optimize the
> tree walk. If a mapping exists from CR3 to a page table, it would
> begin walking from the node corresponding to the page table, instead
> of from the domain root. So the tree walk really was broken into
> three separate tree walks for the three levels.
EROS/CapROS also use existing translations to skip parts of the software
translation (look for FAST_TRAVERSAL in
eros/src/sys/arch/i486/kernel/PageFault.c).
-Eric
More information about the eros-arch
mailing list