CMPSCI 677 (Spring 2008): Homework 3
Due: In-Class, March 25 2008
Web posted: 10:01 March 12, 2008
- 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.
- 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?
- What is the main drawback of using RPC compared to messaging (as in message-queuing
systems)?
- What is the main difference between a remote method invocation (RMI) and a RPC.
- 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.
- 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 | ? | ?
|
- The root node in hierarchical location services may become a potential bottleneck.
How can this problem be effectively circumvented?
- In contrast to naming service like DNS, general-purpose directory services such as X.500
are much harder to scale. Why?
- 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.
- Use an example to show Lamport timestamps are not sufficient to capture causality.