CMPSCI 677 (Spring 2008): Homework 3

Due: In-Class, March 25 2008

Web posted: 10:01 March 12, 2008

  1. RPC cannot support local references (such as pointers), as these refer to objects only locally accessible. Instead, global object references should be used, if possible. Outline an implementation of such a reference.

  2. One way to handle parameter conversion in RPC systems is to have each machine send parameters in its native representation, with the other one doing the translation, if need be. The native system could be indicated by a code in the first byte. However, since locating the first byte in the first word is precisely the problem, can this actually work?

  3. What is the main drawback of using RPC compared to messaging (as in message-queuing systems)?

  4. What is the main difference between a remote method invocation (RMI) and a RPC.

  5. With persistent communication, a receiver generally has its own local buffer where messages can be stored when the receiver is not executing. To create such a buffer, we may need to specify its size. Give an argument why this is preferable, as well as one argument why this is not preferable.

  6. Communication between processes can be characterized along different dimensions. Give an example plus a short description for each of the following combinations.
    transient persistent
    synchronous ? ?
    asynchronous ? ?

  7. The root node in hierarchical location services may become a potential bottleneck. How can this problem be effectively circumvented?

  8. In contrast to naming service like DNS, general-purpose directory services such as X.500 are much harder to scale. Why?

  9. When a node synchronizes its clock to that of another node, it is generally a good idea to take previous measurements into account as well. Why? Also, give an example of how such past readings could be taken into account.

  10. Use an example to show Lamport timestamps are not sufficient to capture causality.