Message passing
William S. Frantz
frantz@netcom.com
Wed, 14 Dec 1994 22:53:55 -0800 (PST)
> KeyKOS is designed so that the message send can be restarted. It's
> approach to transmitting a message is to pin all of the relevant pages
> and nodes and then do the transfer. If any resource proves not to be
> available, it initiates a pagein/nodein and places the process to
> sleep waiting for that I/O event, unlocking all pinned resources.
> When the I/O completes the process retries the message send (unless
> gronked by a debugger) from the beginning. [I suppose I should be
> clear that this is how EROS (the 386 KeyKOS rewrite) worked. I think
> KeyKOS worked the same way, but there were differences in the
> low-level I/O architecture.]
KeyKOS works this way also.
> If message
> transfer can be partially completed, then it seems to me that the OS
> needs to have some new process states to express the fact that a
> process has partially received/sent a message.
Perhaps the message passing design can take a idea from the 370
instruction set here. The 370 has an instruction, Move Long, that
can copy up to 16 meg of data (The size of virtual memory). This
instruction is specified to be interruptable between implementation
defined "units of operation". The way the source and destination
fields are specified is by a pair of address/length registers. If
the instruction is interrupted, then when the interrupt occurs, the
instruction pointer is set to re-issue the instruction, and the source/
destination pairs are updated for the data already moved. (The address
is incremented and the length is decremented.) Thus, when the processes
is restarted, it will complete the move. The transfer is not defined
as atomic, and the visible intermediate states are well defined.
There would be problems in KeyKOS implementing this definition, but
there may not be in other systems.
-----------------------------------------------------------------
Bill Frantz Periwinkle -- Computer Consulting
(408)356-8506 16345 Englewood Ave.
frantz@netcom.com Los Gatos, CA 95032, USA