Always, on every assignment, please write your name legibly as it appears on your University ID and on the class list!
In implementing this assignment, you face several design choices. A critical choice has to do with how the list of incoming boxes for each process is arranged. There are two obvious alternatives:
Prior to writing any code, this assignment asks you to discuss the tradeoffs between these two alternatives:
Part a: The underlying channels you are to use, as implemented in the previous assignment, have a semisynchronous characteristic -- each interprocess channel can buffer exactly one message. The two approaches to using the code from the previous assignment to implement the new required semantics will produce interprocess channels with distinctly different semantics. Identify the differences!
Part b: Suppose you wanted a multiwait primitive -- that is, the ability to await input from any one of a specific list of incoming message channels. Discuss how you would do this under each of the above implementation alternatives.
A Problem: What goes in the interprocess communication queues?
A Problem: Outline the code of a name server process in a system that uses blocking synchronous interprocess message passing, as in the Demos system.