Question: Consider the following program: Boolean blocked [2]; Int turn; Void P (int id) { While (true) { Blocked [id] = true; While (turn! = id)
Boolean blocked [2];
Int turn;
Void P (int id)
{
While (true) {
Blocked [id] = true;
While (turn! = id) {
While (blocked [1-id])
/* do nothing */;
Turn = id;
}
/* critical section */
Blocked [id] = false;
/* remainder */
}
}
Void main ()
{
Blocked [0] = false;
Blocked [1] = false;
Turn = 0;
Par begin (P (0), P (1));
}
This software solution to the mutual exclusion problem for two processes is proposed in [HYMA66]. Find a counterexample that demonstrates that this solution is incorrect. It is interesting to note that even the Communications of the ACM was fooled on this one
Step by Step Solution
3.27 Rating (165 Votes )
There are 3 Steps involved in it
Consider the case in which turn equals 0 and P 1 set... View full answer
Get step-by-step solutions from verified subject matter experts
Document Format (1 attachment)
E-CE-OS (333).docx
120 KBs Word File
