CS 4513                                                    Exam #2                                        April 30, 2002


All five problems count equally.  When you are finished, please staple this question sheet to the front of your answer sheets.


1.   Briefly define each of the following:

a. remote procedure call (in general, not specifically Sun RPC or Java RMI)

b. private key encryption

c. M/M/n queueing system

d. load sharing in a distributed system


2.   Contrast the following implementation issues for Sun RPC and Java RMI.

a.       functionality of the server stub (called a skeleton in RMI)

b.      what is generated by the compiler (rpcgen for RPC; rmic for RMI)

c.       what the programmer needs to do to pass a structure between the client and the server

d.      what the name server returns to the client when the client looks up the server (the name server is portmapper  for RPC and RMIRegistry for RMI).


3.   DCE has a Time Service, which keeps the clocks at the various nodes of the distributed system almost synchronized or loosely synchronized (these are synonyms).

  1. What does it mean to have clocks that are loosely synchronized?

b.  Is loose synchronization good enough?  Describe a service of DCE for which loosely synchronized clocks are adequate.


4.   If you were building a load sharing system, you would have to decide on several design issues.  For each of the following design issues, describe the advantages and disadvantages of the two approaches indicated.

  1. How to measure load:

·        CPU utlization only

·        CPU, memory and disk utilization.

  1. When to transfer jobs:
  2. How a heavily-loaded machine locates a lightly loaded machine

·        lightly loaded nodes broadcast their load information

·        using a central server to keep track of each node’s load information.



5.  You need to design a distributed system to be extremely reliable.  You have already taken all the usual steps to make sure that individual nodes are reliable – using an uninterruptible power supply, using reliable hardware components, performing regular backups, etc.  What further steps could you take to make sure that a failure in one node results in as little disruption to other nodes as possible?  Your answer should focus on the following issues:


a.  A reliable distributed file system

b.   A reliable system for distributed computations


For each, your answer could either propose use of an existing system or you could describe features of a new system that would have to be built.  In either case, explain why your proposal would lead to increased reliability.