Consider Peterson's algorithm for mutual exclusion between two concurrent processes i and j. The program executed by process is shown below.
repeat
flag[i] = true;
turn = j;
while (P) do no-op;
Enter critical section, perform actions, then
exit critical section
Flag[i] = false;
Perform other non-critical section actions.
Until false;
For the program to guarantee mutual exclusion, the predicate P in the while loop should be
1)flag[j] = true and turn = i
2)flag[j] = true and turn = j
3)flag[i] = true and turn = j
4)flag[i] = true and turn = i