GeeksforGeeks » Operating Systems

Process Synchronization Question

(6 posts)

Tags:

  1. ganesh
    guest
    Posted 2 years ago #

    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.

  2. Goldy
    guest
    Posted 1 year ago #

    it does not prevent deadlocks, but ensure mutual exclusion.

  3. gauravs
    Member
    Posted 1 year ago #

    It does not ensure bounded waiting

  4. md.jahurul islam
    guest
    Posted 11 months ago #

    Producer process

    item nextProduced;
    while (1) {
       while (counter == BUFFER_SIZE)
         /* do nothing */
      buffer[in] = nextProduced;
      in = (in + 1) % BUFFER_SIZE;
      counter++;
    }
  5. Pragya
    Member
    Posted 8 months ago #

    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.

  6. raj
    guest
    Posted 8 months ago #

    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.

RSS feed for this topic