Semaphores: observations
nWhen
S.count >=0: the number of processes that
can execute wait(S) without being blocked = S.count
nWhen S.count<0: the number of processes waiting on S is =
|S.count|
nAtomicity
and mutual exclusion: no 2 process can be in wait(S) and signal(S) (on the same S) at
the same time (even with multiple CPUs)
nThis
is a critical section problem: the critical sections are the blocks of code defining wait(S)
and signal(S)