Homework II Due Date: December 3, 1997 (at start of class) 1. Remote procedure calls simplify the task of distributed programming because the automatically generated stubs take care of many of the problems that application programmers must deal with when programming in a message passing system. Explain what these problems are and how/why they can be handled by the stub code. The RPC design discussed in the Birrell/Nelson paper tries to provide at-most-once semantics despite communication and node failures. Explain what mechanisms are employed by it to deal with failures of server nodes. 2. The server side of a distributed file system implementation must receive client requests and process them as they are received. Provide detail of the server side for a file system such as Sprite. In particular, list the type of messages received and sent by the server side, the major data structures maintained by it and the management of control (e.g., multithreading) at the server side. For full credit, describe how requests are dispatched and handled. 3. Can a distributed file system (DFS) be implemented using a subsystem that provides consistent distributed shared memory (DSM)? If this is a good idea, identify what simplifications are possible in the DFS design and implementation because of the availability of the DSM system. If you do not recommend building DFS over a DSM system, explain why this is not a good idea. 4. Does there exist a set of real-time tasks such that the tasks in the set can be scheduled by the least-laxity algorithm but not by the earliest-deadline algorithm? If your answer is yes, give a set of tasks and values for the parameters that describe them (e.g., period, execution time). If the answer is no, explain why such an example cannot be created.