Operating System Tutorial

What is Operating System Evolution of Operating System Types of Operating System Functions of Operating System What is Kernel and Types of Kernel Operating System Properties Operating System Services Components of Operating System Needs of the Operating System Linux Operating System Unix Operating System Ubuntu Operating System What is DOS Operating System Difference Between Multi-programming and Multitasking What is Thread and Types of Thread Process Management Process State What is Process Scheduler and Process Queue What is Context Switching What is CPU Scheduling Scheduling Algorithm FCFS (First-come-First-Serve) Scheduling SJF (Shortest Job First) Scheduling Round-Robin CPU Scheduling Priority Based Scheduling HRRN (Highest Response Ratio Next) Scheduling Process Synchronization Lock Variable Mechanism TSL Mechanism Turn Variable Mechanism Interested Variable Mechanism What is Producer-Consumer Problem What is Semaphore in Operating System Monitors in Operating System What is Deadlock Deadlock Avoidance Strategies for Handling Deadlock Deadlock Prevention Deadlock Detection and Recovery Resource Allocation Graph Banker’s Algorithm in Operating System Fixed Partitioning and Dynamic Partitioning Partitioning Algorithms What is Paging and Segmentation What is Demand Paging What is Virtual Memory Disk Scheduling Algorithms FCFS and SSTF Disk Scheduling Algorithm SCAN and C-SCAN Disk Scheduling Algorithm Look and C-Look Disk Scheduling Algorithm File in Operating System File Access Methods in Operating System File Allocation Method Directory Structure in Operating System Difference between C-LOOK and C-SCAN Difference between Rotational Latency and Disk Assess Time Trap vs Interrupt How to implement Monitors using Semaphores N-Step-SCAN Disk Scheduling Why is it critical for the Scheduler to distinguish between I/O-bound and CPU-bound programs Difference between C-SCAN and SSTF Difference between SCAN and FCFS Difference between Seek Time and Disk Access Time Difference between SSTF and LOOK

Process Synchronization | Operating System

Process Synchronization

Process Synchronization means managing the process in such a manner so that no two processes have access to share similar data and resources.

We can use Process Synchronization in a Multi-Process System in which the number of processes are executed collectively and where more processes want to use similar resources at the same time.

 Due to this, shared data can become inconsistent. Thus, the changes done in one process should not affect another process when another process needs to access similar shared data or resources. To stop this kind of data incoherence, the processes must be synchronized with each other.

Based on synchronization, processes are classified into two types:

  1. Independent Process
  2. Cooperative Process

Independent Process: - If due to any process execution, another process is getting affects, then this type of process is called as Independent Process.

Cooperative Process: - If due to any process execution, another process does not affect then this type of process is called as Cooperative Process.

The issue of Process Synchronization is occurring in the cooperative process, and the reason is resources are shared in a Cooperative process.

Rare Condition

Rare Condition is the situation which may arise when multiple processes wants to access and manipulates similar data concurrently. The output of the processes depends on the specific order in which the process access the data.

Critical Section Problem

If more than one process wants to access the similar code segment, then that segment is called the Critical Section. There are shared variables present in the critical section, which helps in synchronization so that the data variables consistency is maintained.

In other words, the Critical Section is a collection of instructions/statements or a region of code, which is executed atomically like accessing a resource file, global data, input port, output port, etc.

In Critical Section, only one process can be executed, the rest of the other processes wait in the critical section for their execution and need to wait until the current process finish its execution.

  • With the help of the wait() function, the entry to the critical section is managed. It is represented by P().
  • With the help of the signal() function, the exit from the critical section is managed, and it is represented by V().

Sections of a Program in a Critical Section

There are four sections of a Program in a Critical Section

  1. Entry Section
  2. Critical Section
  3. Exit Section
  4. Remainder Section
Process Synchronization

Entry Section: - Entry Section is that portion of the process that takes a decision in the context of the entry of a specific process.

Critical Section: - Critical Section is that section of a program which permits a process to enter and alter the shared variable.

Exit Section: - Exit section permits the processes which are waiting in the entry section to enter into the critical section. Exit Section also contains the information related to the process which has finished its execution and then removes that process from the Exit Section.

Remainder Section: - The part which is not present in any section, i.e., Critical, Exit, and Entry Section, is known as the Remainder Section.

Rules for Critical Section

The rules for the Critical Section are:

  1. Mutual Exclusion
  2. Progress
  3. Bound Waiting

Mutual Exclusion: - In mutual exclusion, if there is a process which is running in a critical section, then no other process is allowed to enter into the critical section.

Progress: - In Progress, if a process does not want to run into the critical section, then it should not deter other processes to enter into the critical section.

Bounded Waiting: This rule says that every process is allotted with a time limit so that they do not need to wait for more time.

Solutions to the Critical Section

There are various methods used to solve the Critical Section Problem:

  1. Peterson Solution
  2. Synchronization Hardware
  3. Mutex Locks
  4. Semaphore Solution

Peterson Solution: - Peterson Solution is one of the methods which is used to solve the problem of the critical section. It was developed by a scientist named ‘Peterson’. That’s why the solution was named ‘Peterson Solution.’

In Peterson’s solution, if a process is running inside the critical section, then another process performs the task of executing the remaining code and vice versa. In this, at one time, only a single process can execute inside the critical section.

Synchronization Hardware

The problem of the Critical Section can be solved with the help of hardware. Most of the OS provides the facility of lock functionality in which if a process wants to enter into the critical section, it needs to acquire a lock and can release the lock if it wants to leave the critical section.

So, if some other process wants to enter into the critical section when it is already acquired by a process, then due to the locked process, it will not be able to enter into the critical section. It can only enter into the critical section if it is free by obtaining the lock itself.

Mutex Locks

Synchronization Hardware method is not easy. That’s why another method Mutex Lock was introduced.

In Mutex Lock method, a LOCK over the resources of the critical section is used within the critical section. It is acquired by the entry section of code. In the section of exit, it releases the LOCK.

Semaphore Solution

Semaphore is another method or a solution which is used to solve the problem of critical section. Semaphore Solution is just like a non-negative variable which is shared among the threads.

Semaphore is a type of signaling method in which a thread which is waiting on the semaphore can give a signal with the help of another thread.

In semaphore, two atomic operations are performed:

  1. Wait
  2. Signal for the Process Synchronization.