Mutex in Operating system (OS)
Mutex in OS
On this page we will discuss about what Mutex in an Operating System is and how it helps us . Mutex lock in OS provides code wise functionality for mutual exclusion.
Mutex in Operating System
Mutex lock in OS is essentially a variable that is binary nature that provides code wise functionality for mutual exclusion. At times, there maybe multiple threads that may be trying to access same resource like memory or I/O etc. To make sure that there is no overriding. Mutex provides a locking mechanism.
Only one thread at a time can take the ownership of a mutex and apply the lock. Once it done utilising the resource and it may release the mutex lock.
Mutex Highlights
Mutex is very different from Semaphores, please read Semaphores or below and then read the difference between mutex and semaphores here.
- Mutex is Binary in nature
- Operations like Lock and Release are possible
- Mutex is for Threads, while Semaphores are for processes.
- Mutex works in user-space and Semaphore for kernel
- Mutex provides locking mechanism
- A thread may acquire more than one mutex
- Binary Semaphore and mutex are different
Semaphores in OS
While mutex is a lock (wait) and release mechanism. Semaphores are signalling mechanisms that signal to processes the state of the Critical section in OS and grant access to the critical section accordingly.
Semaphores use the following methods to control access to critical section code –
- Wait
- Signal
Semaphore Types
We have two types of semaphores –
- Binary Semaphore –
- Only True/False or 0/1 values
- Counting Semaphore –
- Non-negative value
Semaphore Implementation
Wait and Signal are two methods that are associated with semaphores. While some articles are represented as wait(s) or signal(s) however in some blogs are represented as p(s) for wait and v(s) for signal
Wait p(s) or wait(s)
- Wait decrements the value of semaphore by 1
Signal v(s) or signal(s)
- Signal increments the value of semaphore by 1
Semaphore
- Semaphore can only have positive values
- Before the start of the program, it is always initialised to
- n in Counting semaphore (Where n is the number of processes allowed to enter critical section simultaneously)
- 1 in the case of a binary semaphore
Signal Operations
- Increments semaphore by 1
- Signals that the process has completed its critical section execution
signal(S) { S++; }
Wait Operations
- Wait operation decrements the value of semaphore S if S is a positive number
- Else if S is 0 or negative then code gets stuck at while loop as it keeps implementing infinitively
- The semi-colon after while forces while loop definitively if S is 0 or negative
- Thus the code doesn’t move ahead in hopes that the value of S will increase because of some other signal operation elsewhere
Code Logic for Incrementing – Decrementing value of Semaphore –
wait(S) { while (S<=0); S--; }
Actual Working for both functions together to achieve access of critical section –
// some code wait(s); // critical section code signal(s); // remainder code
The eventual goal is to protect the critical section code using wait and signal operations.
You can visualize the whole operation on how the Semaphore system works with the example below
For Counting Semaphore
For Counting Semaphore we initialise the value of semaphore as the number of concurrent access of critical sections we want to allow.
The eventual goal is to protect the critical section code using wait and signal operations.
You can visualize the whole operation on how the Semaphore system works with the example below
Prime Course Trailer
Related Banners
Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription
Get over 200+ course One Subscription
Courses like AI/ML, Cloud Computing, Ethical Hacking, C, C++, Java, Python, DSA (All Languages), Competitive Coding (All Languages), TCS, Infosys, Wipro, Amazon, DBMS, SQL and others
Login/Signup to comment