GATE - 2007 | OS | Two processes, P1 and P2, need to access a critical section of code.

GATE - 2007 | OS | Two processes, P1 and P2, need to access a critical section of code.
Posted on 16-02-2022

GATE - 2007 [Operating System]

Question:

Two processes, P1 and P2, need to access a critical section of code. Consider the following synchronization construct used by the processes:Here, wants1 and wants2 are shared variables, which are initialized to false. Which one of the following statements is TRUE about the above construct?v

  /* 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 */

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.

     

Solution:

Option (D) is Correct.

First of all it can be easily seen that mutual exclusion is satisfied.


Now, if in P1


wants1 = true ;


executed and preempted and now if in P2


wants2 = true ;


executed.


Then the deadlock situation will be created because both will fall into infinite loop.

Thank You