Homework 13

22C:116, Fall 2000

Due Friday Dec. 1, 2000, in class

Douglas W. Jones

  1. Conisder the problem faced by an Amoeba programmer, writing at the native Amoeba kernel level without the aid of the library routines that emulate the UNIX kernel. Your program must have, at minimum, a capability for the file server if it is to function correctly (the file server can store capabilities for other commonly required resources, so if you can get to the file server, you can get any stock of capabilities you may require).

    Tannenbaum merely says that this capability is a "well known capability" and does not describe how it is implemented. Suggest an appropriate way to implement this concept that is consistant with everything you know about good software engineering practice.

  2. The idea of server-side authentication is well illustrated by Amoeba in the context of capabilities for RPC communication with remote processes, and this illustrates the possibility of allowing user capabilities to be freely stored within a user's data objects instead of being segregated into capability lists. Consider the possibility of allowing capabilities for segments (as used in the Multics system) to be freely intermixed with user data objects.

    a) Does Amoeba allow this? How?

    b) Could Multics be modified to use this model, completely eliminating the need for a Multics-style directory hierarchy.

  3. a) Why is garbage collection a problem under Amoeba?

    b) Is the Amoeba solution guaranteed to eventually collect all unreachable objects? Why or why not?

    b) Is the Amoeba solution guaranteed to never collect all reachable objects? Why or why not?

    Note that the answers to a and b above must both be yes if Amoeba is to be considered formally correct, in the sense that the mark-sense algorithm can be considered to be correct.

NOTE: The notes on Amoeba are not definitive! Tannenbaum wrote Amoeba and he wrote the book. What he says should be considered to be definitive!