RPC
Design choice
- Clean semantics
- Efficiency
- Generality
Difference
- No shared address space
- Linked List
Structure
RPCRuntime is for packet-level communications.
Lupine is for generating the stub code for packing and unpacking arguments and results, and for dispatching to the correct procedure for an incoming call on in the server-stub.
Binding
- Naming
- Locating with Grapevine database
- Bind once, use uid for later calls
- Authentication at binding time (authenticate server)
Connection
Connection is a shared state information between an activity on a calling machine and the RPCRuntime pacakge on the server machine.
Call identifier: [machine id, process] + sequence number
Stateful vs Stateless
Process Management
- Few context switches.
- Idle process handle incoming packets, save the process creation cost.