Programa para la condición libre de interbloqueo en el sistema operativo

Dado: Un sistema tiene R recursos idénticos, P procesos que compiten por ellos y N es la máxima necesidad de cada proceso. La tarea es encontrar la cantidad mínima de recursos necesarios para que nunca se produzca un punto muerto. 

Fórmula: 

R >= P * (N - 1) + 1 

Ejemplos:  

Input : P = 3, N = 4
Output : R >= 10

Input : P = 7, N = 2
Output : R >= 8 

Acercarse: 

Considere, 3 procesos A, B y C. 
Sea, la necesidad de cada proceso es 4 
Por lo tanto, los recursos máximos requeridos serán 3 * 4 = 12 , es decir , dé 4 recursos a cada proceso. 
Y, Los recursos mínimos requeridos serán 3 * (4 – 1) + 1 = 10. 
Es decir, Dale 3 Recursos a cada uno de los Procesos, y nos quedamos con 1 Recurso. 
Ese recurso 1 se le dará a cualquiera de los Procesos A, B o C. 
De modo que después de usar ese recurso por cualquiera de los Procesos, dejó los recursos y esos recursos serán utilizados por cualquier otro Proceso y, por lo tanto , Nunca ocurrirá un Interbloqueo. . 

C++

// C++ implementation of above program.
#include <bits/stdc++.h>
using namespace std;
 
// function that calculates
// the minimum no. of resources
int Resources(int process, int need)
{
    int minResources = 0;
 
    // Condition so that deadlock
    // will not occur
    minResources = process * (need - 1) + 1;
 
    return minResources;
}
 
// Driver code
int main()
{
    int process = 3, need = 4;
 
    cout << "R >= " << Resources(process, need);
    return 0;
}

Java

// Java implementation of above program
 
class GFG
{
 
// function that calculates
// the minimum no. of resources
static int Resources(int process, int need)
{
    int minResources = 0;
 
    // Condition so that deadlock
    // will not occur
    minResources = process * (need - 1) + 1;
 
    return minResources;
}
 
// Driver Code
public static void main(String args[])
{
    int process = 3, need = 4;
     
    System.out.print("R >= ");
    System.out.print(Resources(process, need));
}
}

Python3

# Python 3 implementation of
# above program
  
# function that calculates
# the minimum no. of resources
def Resources(process, need):
 
    minResources = 0
 
    # Condition so that deadlock
    # will not occur
    minResources = process * (need - 1) + 1
 
    return minResources
 
# Driver Code
if __name__ == "__main__" :
 
    process, need = 3, 4
 
    print("R >=", Resources(process, need))
 
# This Code is Contributed
# by Naman_Garg

C#

// C# implementation of above program
using System;
 
class GFG
{
 
// function that calculates
// the minimum no. of resources
static int Resources(int process, int need)
{
    int minResources = 0;
 
    // Condition so that deadlock
    // will not occur
    minResources = process * (need - 1) + 1;
 
    return minResources;
}
 
// Driver Code
public static void Main()
{
    int process = 3, need = 4;
     
    Console.Write("R >= ");
    Console.Write(Resources(process, need));
}
}
 
// This code is contributed
// by Sanjit_Prasad

Producción: 

R >= 10

Publicación traducida automáticamente

Artículo escrito por Naman_Garg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *