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

Deadlock Avoidance

Deadlock Avoidance

In an operating system, for deadlock avoidance, we perform the following:

  • We only grant the request of the resources if the resulting state of the system will not cause any deadlock in the system.
  • We continuously check the state of the system, whether the system state is safe or unsafe.
  • It is a must that the process informs the operating system about the maximum resources it needs to finish its execution.
  • In the deadlock avoidance algorithm, we check the allocation of the resources to prevent from circular wait condition.
  • Even we can define the resource allocation state of the system with the help of the instances of the allocated resources to a process, available resources, and the maximum instance of the resources requested by the process to finish its execution.

The below table showed the state of a system that is recorded at a random time.

Resources Assigned

   Process  Type 1  Type 2   Type 3   Type 4
    A      0     1     4       1
    B      1     1     2       0
     C      2     0     1       0
    D      3     0     1       2

Resources Still Needed

   Process    Type 1   Type 2   Type 3   Type 4
       A       1      1       0        0
      B       0      1       1        2
       C       1      2       1        0
      D       2      1       1        2

I = (8 7 9 5)

J = (6 2 8 3)

K = (2 5 1 2)

In the above tables, we have used vector I, J, and K that define the resource allocation state of the system. The three vectors I, J, and K where:

‘I’ is used to determine the total instances of each resource in the system.

‘J’ is used to represent the instance of resources which we assigned to the processes.

'K' is used to determine the number of resources that are not in use.

In the system, we have four processes and four kinds of systems. Here, Table 1 contains the instances of each resource that are assigned to the processes, and Table 2 contains the resources which the processes still need.

Thus, when a system allocates all the requested resources to the processes without any deadlock occurrence, that system state is called a Safe State. When the system does not complete the resource request of the process, then we called it an Unsafe State.  

So, the key to deadlock avoidance is that if a process requests for any resource, then the request should be approved only if the resulting state is in a safe state.