The first known correct software solution to the critical-section problem for two processes was developed by Dekker. The two processes, P0 and P1, share the following variables: boolean flag[2]; /* initially false */ int turn; The structure of process Pi (i == 0 or 1) is shown below; the other process is Pj (j == 1 or 0). Prove that the algorithm satisfies all three requirements for the critical-section problem. while (true) { flag[i] = true; while (flag[j]) { if (turn == j) { flag[i] = false; while (turn == j) ; /* do nothing */ flag[i] = true; } } /* critical section */ turn = j; flag[i] = false; /* remainder section */ }
The first known correct software solution to the critical-section problem for two processes was developed by Dekker. The two processes, P0 and P1, share the following variables:
boolean flag[2]; /* initially false */
int turn;
The structure of process Pi (i == 0 or 1) is shown below; the other process is Pj (j == 1 or 0). Prove that the
while (true) { flag[i] = true; while (flag[j]) {
if (turn == j) { flag[i] = false; while (turn == j)
; /* do nothing */
flag[i] = true;
} }
/* critical section */ turn = j;
flag[i] = false;
/* remainder section */ }
Trending now
This is a popular solution!
Step by step
Solved in 2 steps