Operating Systems
5.12. Consider the following definition of semaphores:
void semWait(s)
if (5 count > 0)
s.count-;
else
place this process in s.queue;
block;
252 CHAPTER 5 / CONCURRENCY: MUTUAL EXCLUSION AND SYNCHRONIZATION
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?