Question: void semWait(semaphore s) { semWaitB(mutex); s--; if (s < 0) { semSignalB(mutex); semWaitB(delay); } else SemsignalB(mutex); } void semSignal(semaphore s); { semWaitB(mutex); s++; if (s

void semWait(semaphore s)

{

semWaitB(mutex);

s--;

if (s < 0) {

semSignalB(mutex);

semWaitB(delay);

}

else SemsignalB(mutex);

}

void semSignal(semaphore s);

{

semWaitB(mutex);

s++;

if (s <= 0)

semSignalB(delay);

semSignalB(mutex);

}

Initially, s is set to the desired semaphore value. Each semWait operation decrements s, and each semSignal operation increments s. The binary semaphore mutex, which is initialized to 1, assures that there is mutual exclusion for the updating of s. The binary semaphore delay, which is initialized to 0, is used to block processes. There is a flaw in the preceding program. Demonstrate the flaw and propose a change that will fix it. Hint: Suppose two processes each call semWait(s) when s is initially 0, and after the first has just performed semSignalB(mutex) but not performed semWaitB(delay), the second call to semWait(s) proceeds to the same point.

All that you need to do is move a single line of the program.

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!