n
Hence, in fact, a semaphore is a record (structure):
type semaphore = record
count: integer;
queue: list of process
end;
var S: semaphore;
n
When a process must wait for a semaphore S, it
is blocked and put on the semaphore’s queue
n
The signal operation removes (acc. to a fair
policy like FIFO) one process from the queue
and puts it in the list of ready processes