In: Computer Science
onsider the following definition of semaphores:
void semWait(s)
{
if (s.count > 0) {
s.count--;
}
else {
place this process in s.queue;
block;
}
}
void semSignal (s)
{
if (there is at least one process blocked on
semaphore s) {
remove a process P from s.queue;
place process P on ready list;
}
else
s.count++;
}
Compare this set of definitions with that of Figure 5.3. Note one difference: With the preceding definition, a semaphore can never take on a negative value. Is there any difference in the effect of the two sets of definitions when used in programs? That is, could you substitute one set for the other without altering the meaning of the program?
The two are equivalent. In the definition of Figure, when the value of the semaphore is negative, its value tells you how many processes are waiting. With the definition of this problem, you don't have that information readily available. However, the two versions function the same. you don't have that information readily available. However, the two versions function the same.
you don't have that information readily available. However, the two versions function the same.