Assume that the disk block size for the disks on a file server was increased by a factor of four. What would be the effect on the client's execution time in reading file F (again, not cached)?
(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:
[1]
while ( [2] )
{
[3]
b.wait
[4]
}
[5]
Considering the code snippet above, create a table with five rows corresponding to the five placeholders in the code and two columns corresponding to the invariant I and condition B. For each entry in the table, write "hold", "!hold", or "unknown" depending upon what can be assumed about the invariant or condition, respectively, at each point in the code snippet.
(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?