Homework 11

22C:116, Spring 1997

Due Friday May 2, 1997, in class

Douglas W. Jones
  1. Background: In the extreme case, each operation on an object can be protected by its own access right, so, for example, the list of operations in Fig. 14-5 in the text would require 9 access rights bits to protect. The problem is, Amoeba only provides 8 access rights bits, and for these bits to be useful, some must be uncommitted, available for class-specific operations beyond the set of standard operations in Fig. 14.5.

    The Problem: Carefully go through the list of standard Amoeba operations and, for each operation, determine if it needs protection by an access right, and if so, if the right for that operation can be reasonably combined with the right to perform some other operation in the list. Document why your conclusions! Note that there is no unique correct answer to this problem, and that your reasoning is as important as your conclusions!

  2. Background: In DEMOS, messages were sent over links to incoming message queues. Links were portable and could be moved from process to process, but incoming message queues were tightly bound to the process entitled to receive from that queue.

    The Problems: What Amoeba object corresponds to a DEMOS link? What Amoeba object corresponds to an incoming message queue? Do the corresponding Amoeba objects have the same kind of binding to processes as they have in DEMOS?

  3. Background: The Amoeba RPC primitives guarantee reliable communication. That is, the client blocks until a reply is received, and the server blocks twice, once until a call message is correctly received, and again, in sending the reply, until the data has been correctly received.

    The Problem, part A: What is the minimum number of messages that must be exchanged by client and server to complete a remote procedure call using this approach, and what information would you expect to be transferred in each such message.

    The Problem, part B: What is queued in Amoeba? Specifically, are messages queued or is something else queued when multiple clients are attempting to communicate with one server.

    The Problem, part C: Write pseudocode for the get-request, put-reply and trans operations (defined in section 14.5.1), using low level send and receive primitives. Do not focus on addressing; instead, focus on control structure and message flow.

  4. The Problem: Which of the standard operations listed in Fig. 14.5 can be implemented using a standard implementation that does not depend on the object being manipulated? Why and why not? You should read section 14.6 before trying to answer this question!