Homework 8

22C:116, Spring 1999

Due Friday Apr 2, 1999, in class

Douglas W. Jones
  1. A Problem: Suggest (at the level of pseudocode) how you would write client and server-side RPC stubs using the DEMOS interprocess communications primitives, as described in the notes.

    Your solution need not account for lost messages, but it should account for the fact that there may be many clients active, and it should allow the client to use the DEMOS access rights to guarantee that no more than one reply is ever generated for any particular call, no matter how ineptly the server is coded.

  2. Background: The illustration of Ada rendezvous semantics given in the lecture notes applies only to the simplest of rendezvous. In fact, Ada allows for far more complex behavior. The following two features are central to this:

    To change the subject, timers in DEMOS are handled by a timer server. Clients wishing to be notified of the passage of a time interval send this interval to the server, along with a reply link. When the interval has passed, the server sends an empty message along the reply link.

    Part A: Explain why the basic DEMOS interprocess communications primitives (create a link, send a message over a link, and await a message in a specific mailbox) are not sufficient to allow implementation of time limits on an Ada rendezvous.

    Part B: DEMOS included a solution to the inadequacy outlined above, in the form of a multiwait primitive. This allowed a process to wait for an incoming message in any of a designated set of mailboxes. Explain how this solves the problem.

  3. Background: A number of diferent clock synchronization algorithms were given in the notes and in the book. Suppose you have a collection of n independent clocks, and you use each of the synchronization algorithms given, in turn, to this set of clocks. Each synchronization algorithm constructs a different composite clock from the set of clocks.

    The Question: What is the difference between the diferent composite clocks? Specifically, what measures of clock performance will differ, and what measures depend only on the underlying set of clocks?