CSE 221: Homework 2

Winter 2005

Due: Thursday, February 10, 2005 in class

  1. There has been a long history of "thin clients" such as diskless workstations in computer systems, including TTYs, IBM terminals, VTs, X terminals, Sun Blades, etc. Concisely restate the argument for diskless workstations from the V and Sprite papers. Given this argument, why haven't diskless workstations proliferated?

  2. Sprite and LOCUS are two systems that provide network file systems with improved performance, functionality, and reliability over popular network file systems today (NFS and Windows). Indeed, many new network file systems have been proposed over time that improve over what we use today. Given that users perceive longer delays when using networked file systems, and occasionally annoying failures, why do you think that we still use network file systems that do not have these additional optimizations and features?

  3. The Hoare Monitors paper describes assertions before and after the operations wait and signal in terms of the monitor invariant I and condition B.

    (a) Describe similar assertions for wait and signal using Mesa monitors.

    (b) The Mesa Monitors paper describes how programmers should test and wait for conditions using Mesa monitors:

    while (    )

    Annotate the code snippet above in terms of when the invariant I and condition B hold.

  4. [Chase] Many implementations of Sun's Network File Service (NFS) use the following Work Crew scheme on the server side. The server node's incoming network packet handler places incoming requests on a shared work queue serviced by a pool of server threads. When a server thread is idle (ready to handle a new request), it examines the shared queue. If the queue is empty, the server thread goes to sleep. The incoming packet handler is responsible for waking up the sleeping server threads as needed when new requests are available.

    (a) Show how to implement the NFS server-side synchronization using a monitor with Mesa semantics. For this problem you may assume that the incoming packet handler is a thread rather than an interrupt handler.

    (b) Early NFS server implementations used broadcast as a wakeup primitive for the server threads, because no signal primitive was available in Unix kernels at that time (around 1985). This was a common performance problem for early NFS servers. Why is signal more efficient than broadcast here?