Semaphore in Operating System
What is Semaphore in Operating System
Semaphore is defined as an integer variable which is used to solve the problem of the critical section in process synchronization. In semaphore, we use two types of atomic operations, and that operations are wait and signal.
The definitions of wait and signal are as follows:
Wait: - In wait operation, the argument ‘S’ value is decrement by 1 if the value of the ‘S’ variable is positive. If the value of the argument variable ‘S’ is zero or negative, no operation is performed.

Signal: - In Signal atomic operation, the value of the argument variable ‘S’ is incremented.

Characteristic of Semaphore
There are following characteristics of Semaphore:
- Semaphore carries a non-negative integer value always.
- We use semaphore mechanism to offer synchronization of tasks.
- It is a low-level synchronization mechanism.
Types of Semaphores
We have following two types of Semaphores:
- Counting Semaphores
- Binary Semaphores
- Counting Semaphores: - Counting Semaphore is defined as a semaphore that contains integer values, and these values have an unrestricted value domain. A counting semaphore is helpful to coordinate the resource access, which includes multiple instances.
- Binary Semaphores: - Binary Semaphores are also called Mutex lock. There are two values of binary semaphores, which are 0 and 1. The value of binary semaphore is initialized to 1. We use binary semaphore to remove the problem of the critical section with numerous processes.
Advantages of Semaphore
There are following advantages of semaphore:
- In the Semaphore, only one process is allowed to enter into the critical section. In this, the principle of mutual exclusion is to be followed strictly. And the semaphore mechanism is a more efficient mechanism than other methods which we use in process synchronization.
- It is machine-independent because it is implemented in the microkernel’s machine-independent code.
- With the help of the semaphore, the resources are managed flexibly.
- In semaphore, there is a busy waiting, so there is no wastage of resources and process time.
- In the semaphore, more threads are permitted to enter into the critical section.
Disadvantages of Semaphore
There are following disadvantages of Semaphore:
- There is a priority inversion in the semaphore, and this is the biggest drawback of the semaphore.
- In the semaphore, due to program error violation of mutual exclusion, deadlock can be happened.
- In the semaphore, there are more chances of programmer errors.
- For the purpose of large-scale use, the semaphore is not a practical method, and due to this, there may be loss of modularity.
- The Programming of the semaphore is tough, so there may be a possibility of not achieving mutual exclusion.
- In the semaphore, the OS has to preserve all calls to wait and signal semaphore.
Difference between Counting Semaphore and Binary Semaphore
Counting Semaphore | Binary Semaphore |
In counting semaphore, there is no mutual exclusion. | In binary semaphore, there is mutual exclusion. |
In the counting semaphore, any integer value can be possible. | It contains only two integer values that are 1 and 0. |
In counting semaphore, there are more than one slots. | In the binary semaphore, there is only one slot. |
The counting process offers a set of processes. | Binary semaphore contains mutual exclusion mechanism. |
Difference between Semaphore and Mutex
Parameter | Semaphore | Mutex |
Data Type | It is an integer variable. | It is an object. |
Mechanism | Semaphore is a signaling mechanism. | Mutex is a type of locking mechanism. |
Types | There are two types of semaphore, which are binary semaphore and counting semaphore. | There are no types of mutex. |
Operation | In semaphore, wait() and signal() operations are performed to modify the value of semaphore. | In mutex, locked or unlocked operation is performed. |
Thread | In semaphore, there may be multiple program threads. | In mutex, there may also be a multiple program thread but not simultaneously. |