933 views
0 votes
0 votes
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 busy-wait 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;

}

Release Lock(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.

 

The answer given is B, but I feel A should also be the answer as L clearly overflows, as could anyone give a proper explanation as to why option B is correct??

1 Answer

Related questions

3 votes
3 votes
2 answers
2
Nils asked May 25, 2016
2,412 views
Which of the following is true/false Explain it.1) TSL solution method is deadlock free.2)TSL solution method is starvation free.3)TSL solution method process enter into...
0 votes
0 votes
1 answer
3
0 votes
0 votes
3 answers
4