Consider the two functions incr and decr shown below.
incr(){
wait(s);
X = X+1;
signal(s);
}decr(){
wait(s);
X = X-1;
signal(s);
}There are 5 threads each invoking incr once, and 3 threads each invoking decr once, on the same shared variable X. The initial value of X is 10.
Suppose there are two implementations of the semaphore s, as follows:
I-1: s is a binary semaphore initialized to 1.
I-2: s is a counting semaphore initialized to 2.
Let V1, V2 be the values of X at the end of execution of all the threads with implementations I-1, I-2, respectively.
Which one of the following choices corresponds to the minimum possible values of V1, V2, respectively?
- (A)
15, 7
- (B)
7, 7
- (C)
12, 7
- (D)
12, 8
