Before understanding
semaphore we should first discuss the critical section.
critical section is a piece of code that can be executed by
two or more process at a time. Because of the simultaneous access of code our
data might get inconsistent. To avoid this inconsistency we use synchronization
methods.
so semaphore is one of the synchronization technique. It is a locking mechanism which is use to provide a
lock for the access of critical section. If a process wants to access the critical
section it has to acquire the lock first and free the lock once it has
completed their work. When one process is already having the lock and other
process try to acquire the lock then that process has to wait for the time till
the lock is freed by previous process.
suppose we have total n number of same object and for that
we have n number of lock. if a process try to acquire a lock and lock is
available then the value of lock will be decreased by one or if lock is not
available then that process has to wait till the time any lock is available. we
can understand this by following example.
total number of objects = 3
total number of locks available =3
Process Step Lock
available Lock value Status
P1 acquire Yes 2 Acquired
P2 acquire Yes 1 Acquired
P3 acquire Yes 0 Acquired
P4 acquire No 0
Wait
P2 release Yes 1 Released
P4 acquire Yes 0 Acquired