<P> In computer science, a semaphore is a variable or abstract data type used to control access to a common resource by multiple processes in a concurrent system such as a multitasking operating system . A semaphore is simply a variable . This variable is used to solve critical section problems and to achieve process synchronization in the multi processing environment . A trivial semaphore is a plain variable that is changed (for example, incremented or decremented, or toggled) depending on programmer - defined conditions . </P> <P> A useful way to think of a semaphore as used in the real - world systems is as a record of how many units of a particular resource are available, coupled with operations to adjust that record safely (i.e. to avoid race conditions) as units are required or become free, and, if necessary, wait until a unit of the resource becomes available . </P>

What do you mean by semaphore in operating system