X hits on this document

70 views

0 shares

0 downloads

0 comments

6 / 21

transmit

Call packet

,5 wait

,5 receive

/ Result packet

importer exporter interface

44

  • A.D. Birrell and B. J. Nelson

Network

User

Caller machine

User-stub

RPCRuntime

RPCRuntime

receive

transmit

Callee machine

Server-stub

Server

~

i r--nt

lr,,um

importer exporter interface

Fig. 1. The components of the system, and their interactions for a simple call.

invoked the procedure in the server directly. Indeed, if the user and server code were brought into a single machine and bound directly together without the stubs, the program would still work.

RPCRuntime is a standard part of the Cedar system. The user and server are written as part of the distributed application. But the user-stub and server-stub are automatically generated, by a program called Lupine. This generation is

specified by use of Mesa interface modules. These are the Cedar) separate compilation and binding mechanism 9. mainly a list of procedure names, together with the types

basis of the Mesa (and An interface module is of their arguments and

results. This is sufficient information perform compile-time type checking

for the

caller and

and to

generate

callee to independently appropriate calling se-

quences. A export that

program module that interface. A program

implements procedures in an interface is said module calling procedures from an interface

to is

said mer that

to import that first writes an interface and

interface. When writing a distributed application, a program- interface module. Then he can write the user code that imports the server code that exports the interface. He also presents

the and the the

interface to Lupine, which generates the user-stub, (that exports the interface) the server-stub {that imports the interface). When binding the programs on 'caller machine, the user is bound to the user-stub. On the callee machine, server-stub is bound to the server.

Thus, the programmer does not need to build detailed communication-related code. After designing the interface, he need only write the user and server code. Lupine is responsible for generating the code for packing and unpacking argu- ments and results (and other details of parameter/result semantics), and for dispatching to the correct procedure for an incoming call in the server-stub. RPCRuntime is responsible for packet-level communications. The programmer must avoid specifying arguments or results that are incompatible with the lack of shared address space. (Lupine checks this avoidance.) The programmer must also take steps to invoke the intermachine binding described in Section 2, and to handle reported machine or communication failures.

2. BINDING There are two aspects to binding which we consider in turn. First, how does a client of the binding mechanism specify what he wants to be bound to? Second,

ACMTransactionson ComputerSystems,Vol.2, No. 1,February1984

Document info
Document views70
Page views70
Page last viewedFri Dec 16 08:23:48 UTC 2016
Pages21
Paragraphs669
Words10995

Comments