Sunteți pe pagina 1din 3

Deadlocks

Algoritmo del Banquero:


Algoritmo para prevenir los bloqueos (deadlocks avoidance) para sistemas con recursos que poseen mltiples 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 implementacin.

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

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

4. Si Finish [ i ] = True para todos los procesos, 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. Sea Request i un vector para el proceso Pi. Si Request i [ j ] = k significa que el proceso Pi requiere k instancias del recurso j. 2. Si Request i <= Need i, vaya al paso 3. En otro caso, se muestra un error ya que proceso ha excedido su mximo declarado. 3. Si Request i <= Available vaya al paso 4. Caso contrario, Pi debe esperarmpuesto que no hay recursos disponibles. 4. La posible adjudicacin de los recursos de Pi establece cambios en las estructuras de datos que determinan el estado del sistema, as: Available = Available Request i Allocation = Allocatioin + Request i Need i = Need i Request i Si el estado resultante del sistema es Safe State, la transaccin se completa y los recursos se adjunta. Caso contario se revierten los cambios.

S-ar putea să vă placă și