GeeksforGeeks » Operating Systems
Process Synchronization Question
(6 posts)-
Two processes, P1 and P2, need to access a critical section of code. Consider the following synchronization construct used by the processes:
/* P1 */ while (true) { wants1 = true; while (wants2==true); /* Critical Section */ wants1=false; } /* Remainder section *//* P2 */ while (true) { wants2 = true; while (wants1==true); /* Critical Section */ Wants2=false; } /* Remainder section */Here, wants1 and wants2 are shared variables, which are initialized to false. Which one of the following statements is TRUE about the above construct?
(A) It does not ensure mutual exclusion.
(B) It does not ensure bounded waiting.
(C) It requires that processes enter the critical section in strict alternation.
(D) It does not prevent deadlocks, but ensures mutual exclusion. -
it does not prevent deadlocks, but ensure mutual exclusion.
-
It does not ensure bounded waiting
-
Producer process
item nextProduced; while (1) { while (counter == BUFFER_SIZE) /* do nothing */ buffer[in] = nextProduced; in = (in + 1) % BUFFER_SIZE; counter++; } -
It does not ensure bounded waiting because , when wants1=true and wants2=true then , in this condition no one will enter the critical section waiting for each other to become false.
-
This is Petersons solution. According to it satisfies all 3 crriteris , Mutual excusion , bounded wait and progress. So c) is the answer
Reply
You must log in to post.