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 operation

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.

  1. Mutex is Binary in nature
  2. Operations like Lock and Release are possible
  3. Mutex is for Threads, while Semaphores are for processes.
  4. Mutex works in user-space and Semaphore for kernel
  5. Mutex provides locking mechanism
  6. A thread may acquire more than one mutex
  7. 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 –

  1. Wait
  2. Signal
Mutex in Operating System

Semaphore Types

We have two types of semaphores –

  1. Binary Semaphore
    1. Only True/False or 0/1 values
  2. Counting Semaphore
    1. 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)

  1. Wait decrements the value of semaphore by 1

Signal v(s) or signal(s)

  1. Signal increments the value of semaphore by 1

Semaphore

  1. Semaphore can only have positive values
  2. Before the start of the program, it is always initialised to
    1. n in Counting semaphore (Where n is the number of processes allowed to enter critical section simultaneously)
    2. 1 in the case of a binary semaphore
Mutex in operating system 6

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

Mutex in Operating System 3

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.

Mutex in Operating System 2

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

Checkout list of all the video courses in PrepInsta Prime Subscription

Checkout list of all the video courses in PrepInsta Prime Subscription