Está en la página 1de 5

EL ALGORITMO DEL BANQUERO

El Algoritmo del banquero, en sistemas operativos es una forma de evitar el interbloqueo,


propuesta por primera vez por Edsger Dijkstra. Es un acercamiento teórico para evitar los
interbloqueos en la planificación de recursos. Requiere conocer con anticipación los recursos que
serán utilizados por todos los procesos. Esto último generalmente no puede ser satisfecho en la
práctica.

Este algoritmo usualmente es explicado usando la analogía con el funcionamiento de un banco.


Los clientes representan a los procesos, que tienen un crédito límite, y el dinero representa a los
recursos. El banquero es el sistema operativo.

El banco confía en que no tendrá que permitir a todos sus clientes la utilización de todo su crédito a
la vez. El banco también asume que si un cliente maximiza su crédito será capaz de terminar sus
negocios y devolver el dinero a la entidad, permitiendo servir a otros clientes.

El algoritmo mantiene al sistema en un estado seguro. Un sistema se encuentra en un estado


seguro si existe un orden en que pueden concederse las peticiones de recursos a todos los
procesos, previniendo el interbloqueo. El algoritmo del banquero funciona encontrando estados de
este tipo.

Los procesos piden recursos, y son complacidos siempre y cuando el sistema se mantenga en un
estado seguro después de la concesión. De lo contrario, el proceso es suspendido hasta que otro
proceso libere recursos suficientes.

En términos más formales, un sistema se encuentra en un estado seguro si existe una secuencia
segura. Una secuencia segura es una sucesión de procesos, ,..., , donde para un
proceso , el pedido de recursos puede ser satisfecho con los recursos disponibles sumados los
recursos que están siendo utilizados por , donde j < i. Si no hay suficientes recursos para el
proceso , debe esperar hasta que algún proceso termine su ejecución y libere sus recursos.
Recién entonces podrá tomar los recursos necesarios, utilizarlos y terminar su ejecución. Al
suceder esto, el proceso i+1 puede tomar los recursos que necesite, y así sucesivamente. Si una

secuencia de este tipo no existe, el sistema se dice que está en un estado inseguro, aunque esto
no implica que esté bloqueado.

Así, el uso de este tipo de algoritmo permite impedir el interbloqueo, pero supone una serie de
restricciones:

 Se debe conocer la máxima demanda de recursos por anticipado.


 Los procesos deben ser independientes, es decir que puedan ser ejecutados en cualquier
orden. Por lo tanto su ejecución no debe estar forzada por condiciones de sincronización.
 Debe haber un número fijo de recursos a utilizar y un número fijo de procesos.
 Los procesos no pueden finalizar mientras retengan recursos.
Estructuras y complejidad
Se deben utilizar cuatro estructuras de datos para implementar el algoritmo del banquero. Estas
codifican el estado del sistema de asignación de recursos. Sea n, el número de procesos del
sistema, m el número de tipos de recursos. Se necesita:

 Recursos (Available, disponible): Un vectores de longitud m que mantiene la cantidad total de


recursos, de cada tipo, que pueden ser utilizados por los procesos. De esta forma, Recursos[i]
= k significa que hay una cantidad total k de recursos tipo disponibles.
 Demanda (Max): Esta matriz, n x m, guarda las cantidades máximas de recursos de cada tipo
que pueden ser demandadas por cada proceso. Si Max[i][j]=k, el proceso i, puede solicitar,
como máximo k instancias del recurso j.
 Asignación (allocation): En esta matriz, n x m, número de recursos de cada tipo actualmente
asignados a cada proceso. Asignación[i][j] = k significa que el proceso i tiene asignado k
unidades del recurso j.
 Necesidad (need): Una matriz, n x m, que indica la necesidad restante de recursos de cada
proceso. Si Necesidad[i][j] = k, entonces el proceso i puede necesitar k instancias del tipo de
recurso j. Observe que Necesidad[i][j] = Max[i][j] - Asignación[i][j].
En términos de complejidad, el algoritmo del banquero es de orden O(n2 × m), donde n es el
número de procesos y m la cantidad de recursos.

A continuación se presenta un ejemplo:

Utilizando el algoritmo del banquero resuelva el siguiente problema, indicando el orden


en que los procesos pasan a ser estados seguros evitando el problema del
interbloqueo.

Lista de procesos: P1-P3-P4-P0 ó P2


A la derecha se tienen 5 procesos, cada uno tiene recursos de tipo A, B y C. En
la primer columna de asignados está la cantidad de recursos que el proceso ha obtenido
a lo largo de un tiempo; en la segunda columna de Máximo Necesario, están los recursos
que tiene que obtener de cada tipo para comenzar a ser ejecutado. Por ejemplo, el P0
no ha obtenido ningún recurso del tipo A, sólo 1 del tipo B y ninguno del tipo C, y necesita
para ejecutarse haber conseguido 7 del A, 5 del B y 3 del C.

En la última columna se tienen los recursos disponibles que da el sistema, los que se
pueden utilizar con todos los procesos. Hay 3 del A, 3 del B y 2 del C.
El algoritmo del banquero trata de asegurar qué proceso tiene un “estado seguro” es
decir, se requiere alcanzar el máximo requerido entre los que estén en Asignados y los
que se encuentren en Disponibles.
Ejemplo: El proceso 0 no está en estado seguro. Si se suman Asignados + Disponibles
para cada uno de los recursos A, B y C, realmente no se alcanzan los Máximos
Requeridos.
Entonces se va al proceso 1 y se trata de hacer lo mismo, sumar Asignados +
Disponibles. Allí sí se tiene un ESTADO SEGURO, A con 5, B con 3 y C con 2, y como se
alcanza a llenar los Máximos, ese proceso se ejecuta.

Una vez que el proceso se ejecutó, entonces se procede a SUMAR los recursos
asignados del proceso anterior a los disponibles. Hay que recordar que el proceso al
terminar de ejecutarse libera todos sus recursos, por lo tanto pasan tanto los de tipo
A, B y C a sumarse con los disponibles 3-3-2 y se tendrán nuevos DISPONIBLES que
repartir, siendo ahora éstos 5-3-2.
Con estos se pasa al proceso P2 y así sucesivamente.
Y el algoritmo es como sigue:
(El algoritmo principal es el de asignación de recursos)
Ventajas del algoritmo del banquero:

 No es necesario expulsar y hacer retroceder procesos como en la detección del


interbloqueo.
 Es menos restrictivo que la prevención.

Desventajas:

 Se debe conocer la máxima demanda de recursos por anticipado.


 La ejecución de los recursos no debe estar forzada por la sincronización.
 Se tiene un número fijo de procesos y recursos.
 Los procesos no finalizan mientras retengan recursos.
 Requiere que los procesos salden sus préstamos en un tiempo finito.

BIBLIOGRAFIA

http://es.wikipedia.org/wiki/Algoritmo_del_banquero

http://sistemas-operativos.blogspot.mx/2012/10/algoritmo-del-banquero.html

También podría gustarte