Message passing

LANDAU_CHARLES@Tandem.COM LANDAU_CHARLES@Tandem.COM
13 Dec 94 14:23:00 +1600


  >Under traditional Mach IPC ... there is a single "primary" message
  >buffer that ... may contain pointers to out-of-line memory regions
  >that always get virtual-copied (using COW).

Because an out-of-line memory region might not begin and end on a page
boundary, extra data (in the same page) will be mapped into the
receiver's address space. I don't know what security assertions Mach
claims to guarantee in this regard, or whether in Mach it is possible to
securely pass out-of-line data without knowing the page size.

  >You haven't defined what "atomic" [message passing] means.

In KeyKOS it means that at every point in time observable by any
process, either all the effects of a message pass have happened or none
have happened.

I don't think there are many places in KeyKOS where processes depend on
the atomicity, and I think they could be done differently if atomicity
weren't guaranteed. The atomicity is mainly a help for the kernel
because it means the kernel doesn't need any intermediate storage.

  >if neither side of an IPC connection needs [scatter/gather], then you
  >don't pay the price for it.

I'd bet the code has an "if" corresponding to the "if" quoted above.
"If"s aren't free even if the "then" clause isn't executed.