Part A: Outline the structure of a decentralized clock synchronization protocol using these local operating system features.
Part B: Consider the problem of running your clock synchronization protocol on a ring network. On such a network, the time required to send a message from A to B may be quite different from the time taken to send a message from B to A. Would you expect this assymetry to introduce any systematic error using your protocol?
task SEMAPHORE is entry WAIT; entry SIGNAL; end task; task body SEMAPHORE is begin loop accept WAIT; -- rendezvous had empty body end accept; accept SIGNAL; -- rendezvous had empty body end accept; end loop; end task body;
The problem: Which of Tannenbaum's distributed mutual exclusion algorithms does this exploit?
The problem: Why is the mutual exclusion semaphore needed, and what small change to client and server code allows the elimination of this mutual exclusion semaphore. The Ada example given above may actually suggest a solution to this problem.
The problem, part A: Propose a centralized solution to this problem, where a designated station on the ring is responsible for regenerating lost tokens.
The problem, part B: Propose a decentralized solution to this problem, where any station on the ring can regenerate a lost token, and yet, where mutual exclusion is still guaranteed even when two stations independently recognize the loss of a token and independently begin the token regeneration process.