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