What semantics (regular, safe, or atomic) are needed for the shared variables try1, try2, in1 and in2 for this algorithm to correctly implement mutual exclusion? Explain the reasoning behind your answer.
Consider another kind of faulty behavior: a process can be insane. Insane processes can vote any way they wish — for example, an insane process may never vote to allow a process to enter mutual exclusion, or it might vote for multiple processes. Insane processes can also just stop executing — which is equivalent to crashing.
Modify the mutual exclusion protocol so that it can tolerate up to t insane processes. You will need to consider using more than 2t replication.
This should be for n processes, and not just 2 (unlike part a).
19 January 2009 by kam