(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 ( )
{
b.wait
}
Annotate the code snippet above in terms of when the invariant I and condition B hold.
(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?