From: ahemavathy (ahemavathy_at_hotmail.com)
Date: Wed Jan 28 2004 - 15:02:05 PST
This is a very nice paper explaining the basics of Remote Procedure Calls and its implementation. The paper written 20 years ago must have been the foundation for many of the existing RPC implementations as most of the basic concepts are the same even today. Remote procedure calls are function (procedure) calls only that the function is located on a remote machine. Nelson and Birrell's goal was to built a system which would facilitate distributed computing and also not complicate it. They wanted the system to be simple so that developers would not feel the overhead building distributed applications.
RPC has five pieces : the user, the user stub, RPC package, server stub and the server. When the user wants to call a remote function, it makes a local call to a procedure in the user stub. The user stub then packs all the arguments and necessary commands and invokes the RPCRuntime to transmit it to the server. The RPC runtime on the server passes it to the server stub which unpacks the arguments and makes a local call invoking the appropriate procedure in the server. User stubs and Server stubs are generated by their program Lupine from the interface. Every interface name has a type and an instance. A distributed database Grapevine takes care of the binding.
It was interesting how they have tried to optimize process swapping and also other things like cutting acks for simple calls unless specifically requested and the client probing the server etc. It is an excellent paper for getting a few basic ideas of Remote procedure Calls.
This archive was generated by hypermail 2.1.6 : Wed Jan 28 2004 - 15:02:11 PST