therefore, each IPC message from an Eject to the Eden kernel, and vice versa, involves at least a Unix process switch and copying the IPC message into and out of the Unix kernel. The first versions of Eden required 14 IPC messages to be sent per local invocation. A local invocation occurs when the invoking Eject and the target Eject reside on the same physical machine. What was 2-process kernel's role in this setup? The 2-process Eden kernel was finally replaced by a 1-process Eden kernel, immediately reducing the number of messages required for an invocation by eliminating the IPC messages between the two kernel processes. The final reduction in IPC messages sent per invocation occurred during the summer of 1984. Two more IPC messages were eliminated. One of the messages eliminated was the IPC message from the Eden kernel to the invoking Eject that communicated the {\it invocation handle} assigned to that particular call. It was replaced by a scheme where the invoking Eject was allowed to generate its own {\it local invocation handle} to communicate with the Eden kernel, and the Eden kernel would generate its own unique handle in order to communicate with another Eden kernel or the target Eject. The Eden kernel guarantees that the reply message to an invocation will be stamped with the invoking Eject-generated handle. The other IPC message eliminated was the status message from the Eden kernel to the target Eject confirming the kernel's approval of the reply message (format, or contents if capabilities were contained in the reply). The more logical scheme of notifying the invoking Eject of the failure status of the reply, or the actual reply if the status was success, is now being used. The result of all these improvements is shown in figure \ref{oldfig}. (See section \ref{oldexp} for an explanation of figure \ref{oldfig}.) \section{Related Work}\label{introrel} Nelson's thesis thoroughly examines remote procedure calls. He studies a number of implementations, and proposes a design for Emmisary(?), a new RPC mechanism with excellent transparency and exceptional performance. To attain exceptional performance, Nelson gives a list of "lessons" that an RPC mechanism must have. The lessons are summarized here for the reader: \begin{itemize} \end{itemize} In designing an RPC mechanism, it is convenient to use a layer model. However, strict adherance to the layer model often results in poor implementations. There is a prohibitive cost associated with highly modular implementations that cannot be tolerated in RPC implementations. In proposing a solution to the asynchrony problem, Cooper\cite{soft} advocates "soft layering". The idea of soft layering may be applied to any naturally layered system whose layers must work well together. \section{Structure of Thesis}\label{introstruct} Chapter \ref{old} examines the deficiencies of the current Eden invocation mechanism. The reader is taken on a tour through the process of initiating an invocation and receiving its reply, and receiving a new invocation and replying to the invocation. Chapter \ref{new} proposes restructuring the dispatcher module for synchronous invocations (by far the most heavily used form of communication within Eden) and breaking down the "hard layering" that currently exists between the various layers that support invocations, from the Eject's point of view, in order to obtain significant performance gains. \chapter{A Closer Look at the Eden Invocation Mechanism}\label{old} \section{The Dispatcher -- Interface and Internals}\label{olddis} \section{Flow of Data -- CIP, Stub, and ESCII}\label{olddat} \section{Summary}\label{oldsum} \chapter{An Alternative Synchronous Invocation Mechanism}\label{new} \section{Assumptions and Limitations}\label{newass} \section{The Dispatcher -- Interface and Internals}\label{newdis} \section{A Word About Buffer Management}\label{newbuf} \section{Flow of Data -- CIP, Stub, and ESCII}\label{newdat} \section{Results and Timings}\label{newres} \section{Summary}\label{newsum} \chapter{Conclusions and Further Work}\label{concl} \section{Lessons Re-learned}\label{conles} \section{Soft Layering}\label{conlay} \section{Modularization and Interfaces}\label{conmod} \section{Further Work}\label{confur} \end{document}