You are on page 1of 3

Deadlocks

Algoritmo del Banquero:
Algoritmo para prevenir los bloqueos (deadlocks avoidance) para sistemas con recursos que poseen múltiples instancias.
Basado en el concepto de que cualquier Banco nunca debe ‘despachar’ todo su efectivo a tal grado que no pueda satisfacer las necesidades de todos sus clientes. Al igual de que los algoritmos de ‘Deadlock Prevention’, el ‘Algoritmo del Banquero’ consume recursos en su implementación.

Implementación:
Cuando un proceso ingresa al sistema, debe declarar el máximo número de instancias por recurso que necesitará. Cuando un proceso requiere un conjunto de recursos, el sistema debe determinar si la adjudicación de dichos recursos deja el sistema en ‘safe state’ los recursos se asignan. Estructuras de datos necesarias:
Sea N el número de procesos en el Sistema, y M el número de tipos de recursos. Available: Un vector de longitud M que representa el número disponibles de cada tipo. Si Available[ j ]= k significa que hay ‘k’ instancias disponibles del recurso Rj.

Allocation: Es una matriz de N x M elementos. n-1) 2. que define los recursos restantes que necesitan cada proceso para terminar su tarea. que define la demanda máxima de cada proceso. …. Algoritmo para ‘Safe State’: Utilizado para establecer si el sistema tiene un ‘Safe State’ 1.Max: Es una matriz de N x M elementos. Si Max[ i. Sean Work y Finish dos vectores de longitud M y N. 1. Si Allocation [ i. vaya al paso 4. tal que se cumplan las dos condiciones: Finish [ i ] = false Need i = Work Si no existe tal proceso. Work = Work + Allocation 3. Finish [ i ] = True Vaya al paso 2 . que define el número de recursos de cada tipo que actualmente han sido adjudicados para cada proceso. Encontrar un proceso i.Los cuales se inicializan con Work = Available y Finish[ i ] = false. j] = k significa que el proceso Pi tiene actualmente asignadas ‘k’ instancias del recurso Rj Need: Es una matriz de N x M elementos. respectivamente. j ] = k significa que el proceso Pi requiere a lo más ‘k’ instancias del recurso Rj. para todos los procesos ( i = 0.

Sea Request i un vector para el proceso Pi. Pi debe esperarmpuesto que no hay recursos disponibles. Caso contrario. La posible adjudicación de los recursos de Pi establece cambios en las estructuras de datos que determinan el estado del sistema. la transacción se completa y los recursos se adjunta. . se muestra un error ya que proceso ha excedido su máximo declarado. 4. así: Available = Available – Request i Allocation = Allocatioin + Request i Need i = Need i – Request i Si el estado resultante del sistema es ‘Safe State’. el sistema se encuentra en un estado seguro ‘Safe State’ No hay deadlocks Algoritmo para ‘Resource-Request’: Utilizado para establecer si el requerimiento puede satisfacerse 1. Si Request i <= Need i. vaya al paso 3. 2. En otro caso. Si Request i [ j ] = k significa que el proceso Pi requiere ‘k’ instancias del recurso ‘j’. Caso contario se revierten los cambios. Si Request i <= Available vaya al paso 4. 3. Si Finish [ i ] = True para todos los procesos.4.