Question: Consider the following program: Boolean blocked [2]; Int turn; Void P (int id) { While (true) { Blocked [id] = true; While (turn! = id)

Consider the following program:
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

1 Expert Approved Answer
Step: 1 Unlock

Consider the case in which turn equals 0 and P 1 set... View full answer

blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Document Format (1 attachment)

Word file Icon

E-CE-OS (333).docx

120 KBs Word File

Students Have Also Explored These Related Computer Engineering Questions!