[coyotos-dev] Contrasting Coyotos, EROS & Keykos

EricNorthup digitale at digitaleric.net
Fri Jan 21 21:09:14 EST 2005


On Fri Jan 21 20:09:24, Norman Hardy wrote:

> A Keykos application with this need would probably arrange static 
> access to
> a node in the memory tree and a reserved slot in that node.
> This arrangement required some knowledge of the memory tree logic.
> Storing into the slot caused the kernel to execute a few hundred 
> instructions
> to kill the part of the real map defined by the previous slot contents,
> and perhaps  a few hundred more to enable the new access.
> 
> Keykos programmers did not typically assume that their entire address 
> space
> was kept by one segment keeper.
> In Keykos terminology, a segment is either a page or is composed 
> several other
> (typically smaller) segments.
> Thus the page passing trick can apply to entire segments with about the
> same overhead and without faults for each page.

You are correct - there is no increase in expressiveness in the
capability-address-space vs. capability-registers model.  And for a
long-term communication channel with a high bandwidth requirement,
setting up a long-term shared memory region can be done by all of the
system.

The difference is that it can now be performed with a single system call
(IPC), perhaps making it more suitable for one-shot, zero-copy messages.
 Security considerations aside, L4's method of transmitting mappings
(pages which will be mapped in the recipient's address space) as part of
their fast-path IPC is something that is much more efficient than the
equivalent operation would have been in EROS.  The proposed Coyotos
model can be similar in efficiency to the L4 model.

Hmm... now that I think about it, this would have been possible in
KeyKOS / EROS too.  The important part is that capabilities recieved by
an IPC operation end up directly in the address space of the IPC
recipient.  If a server process can get a capability to the Node which
contains its capability registers, then it can do one-shot zero-copy IPC
too: just map the "capability register root" node into the address space
tree somewhere.  Then each capability register has a corresponding part
of the address space.  If, after an IPC operation, we have reason to
believe that a capability register contains a memory segment, then we
can access those portions of memory.  It is possible that optimizations
EROS/KeyKOS do to Node representations may make this operation expensive
if it requires re-writing Nodes back and forth between formats.

--Eric


More information about the coyotos-dev mailing list