Gate CS-2012 Question Paper With Solutions

Q. 32 Fetch_And_Add(X,i) is an atomic Read-Modify-Write instruction that reads
the value of memory location X, increments it by the value i , and returns the
old value of X. It is used in the pseudocode shown below to implement a busywait
lock. L is an unsigned integer shared variable initialized to 0. the value of 0
corresponds to lock being available, while any non-zero value corresponds to the
lock being not available.

  AcquireLock(L){
         while (Fetch_And_Add(L,1))
               L = 1;
   }
  ReleaseLock(L){
         L = 0;
   }

This implementation

(A) fails as L can overflow

(B) fails as L can take on a non-zero value when the lock is actually available

(C) works correctly but may starve some processes

(D) works correctly without starvation

Answer: (B)

Explanation:

Gate CS-2012 Question Paper With Solutions Gate CS-2012 Question Paper With Solutions

Learn More:   Gate EE-2018 Question Paper With Solutions

LEAVE A REPLY

Please enter your comment!
Please enter your name here