Open In App
Related Articles

Operating Systems | Process Synchronization | Question 5

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report
The atomic fetch-and-set x, y instruction unconditionally sets the memory location x to 1 and fetches the old value of x in y without allowing any intervening access to the memory location x. consider the following implementation of P and V functions on a binary semaphore .
void P (binary_semaphore *s) {
  unsigned y;
  unsigned *x = &(s->value);
  do {
     fetch-and-set x, y;
  } while (y);
}

void V (binary_semaphore *s) {
  S->value = 0;
}
Which one of the following is true? (A) The implementation may not work if context switching is disabled in P. (B) Instead of using fetch-and-set, a pair of normal load/store can be used (C) The implementation of V is wrong (D) The code does not implement a binary semaphore

Answer: (A)

Explanation: Let us talk about the operation P(). It stores the value of s in x, then it fetches the old value of x, stores it in y and sets x as 1. The while loop of a process will continue forever if some other process doesn’t execute V() and sets the value of s as 0. If context switching is disabled in P, the while loop will run forever as no other process will be able to execute V().

Last Updated : 02 Feb, 2013
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads