Post on 12-Feb-2017
UNIVERSIDAD ESTATAL PENÍNSULA DE SANTA ELENA
Facultad de Sistemas y Telecomunicaciones
SISTEMAS OPERATIVOS
Problemas Basicos De Comunicación
El Algoritmo Del Banquero
Diana Tigrero (1), Andrea Vargas (2), Wilson Mazzini (3), Alex Acosta (4).
La Libertad – Ecuador
dianagonzalez20_t@hotmail.com (1), morelia.222@hotmail.com (2),
wilsonjavier99@outlook.es (3), xelax_2121@hotmail.com (4).
Resumen
La realización de este trabajo fue con el objetivo de recolectar información
sobre problemas básicos de comunicación basados mediante la solución del
algoritmo del banquero propuesto por Edsger Dijkstra para resolver
inconvenientes de gestión de recursos de los sistemas operativos.
BIOGRAFÍA EDSGER DIJKSTRA
“Nació el 11 de mayo de 1930 en
Rotterdam.” (Karen, 2011).
Estudios:
Estudio física teórica en la Universidad
de Leiden. Trabajó como investigador
para Burroughs Corporation a
principios de los años 1970. En la
Universidad de Texas en Austin
Estados Unidos, ocupó el
Schlumberger Centennial Chair in
Computer Sciences y se retiró en
2000.
Contribuciones:
En la informática está la solución del
problema del camino más corto,
también conocido como el algoritmo de
Dijkstra, la notación poloca inversa y lo
relacionado algoritmo shuting yard, the
multiprogramming system, el algoritmo
del banquero y la construcción del
semáforo para coordinar múltiples
procesadores y programas.
El algoritmo de Dijkstra es usado en la
ruta más corta primero (SPF) que es
usado en el protocolo de enrutamiento
open shortest path first (OSPF).
Desde los años 1970, el principal
interés de Dijkstra fue la verificación
formal. La opinión que prevalecía
entonces era que uno debe primero
escribir un programa y seguidamente
proporcionar una prueba matemática
de su corrección. Dijkstra objetó que
las pruebas que resultan son largas e
incómodas, y que la prueba no da
ninguna compresión de cómo se
desarrolló el programa.
Muchos de los últimos trabajos de
Dijkstra tratan sobre las maneras de
hacer fluida la argumentación
matemática.
Dijkstra murió el 6 de agosto de
2002 después de una larga lucha
contra el cáncer.
INTRODUCCIÓN
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.” (Alvarez
Izaguirre, 2013)
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.
Según (Alvarez Izaguirre, 2013) en su
blog expone que 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.
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.
Algoritmo del banquero.
El uso de este tipo de algoritmo
permite impedir el interbloqueo, pero
supone una serie de restricciones:
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.
Ventajas del algoritmo del banquero
según (Beiker, 2015):
No es necesario expulsar y
hacer retroceder procesos como
en la detección del interbloqueo.
Es menos restrictivo que la
prevención.
Desventajas (Beiker, 2015):
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.
Debilidades del Algoritmo Del
Banquero
Requiere que exista un número
fijo de recursos asignables, pero
generalmente no se puede
contar con que el número de
recursos se mantenga siempre
constante.
Requiere que la población de
usuarios se mantenga
constante, lo cual es
irrazonable.
Requiere que el S. O. garantice
que todas las peticiones serán
concedidas en un tiempo finito,
pero en la realidad se requieren
mayores garantías.
Requiere que los procesos
reintegren los recursos en un
tiempo finito, pero en la realidad
se requieren mayores garantías.
Requiere que los procesos
indiquen sus necesidades
máximas de recursos por
adelantado, lo cual
generalmente no ocurre.
Generalmente no es utilizado en
S. O. reales.
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 primera 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.
Imagen de comprobación del algoritmo del banquero en modo seguro.
Conclusión
Comprender como funciona el
algoritmo del Banquero, como
trabaja el CPU al momento de
realizar una serie de procesos
que el usuario requiere.
El algoritmo del banquero en
ciertas condiciones (exclusión
mutua y recursos limitados)
puede ser de gran utilidad, en
condiciones donde las
desventajas de este algoritmo
pasen desapercibidas o sean
minimizadas, el proceso de
asignación de recursos seria
óptimo.
El algoritmo del banquero
detecta posibles interbloqueos a
través del algoritmo de
seguridad que utiliza.
Bibliografía A. S. Tanenbaum. (1996). Sistemas Operativos
(2da ed.). MÉXICO: Prentice Hall
Hispanoamericana.
Alvarez Izaguirre, C. (2 de Maerzo de 2013).
Algoritmo del Banquero. Recuperado
el 11 de Noviembre de 2015, de
http://carlosrobertoalvarezizaguirre.bl
ogspot.com/2013/03/algoritmo-del-
banquero.html
Beiker, J. (28 de Abril de 2015). Prezi.
Recuperado el 11 de Noviembre de
2015, de
https://prezi.com/gd0vhrhxcege/algor
itmo-del-banquero/
Deitel, H. M. (1993). Sistemas Operativos (2da
ed.). BOSTON: Addison-Wesley.
JIMENEZ BARRAGAN, A. (11 de Octubre de
2012). SISTEMAS OPERATIVOS.
Recuperado el 11 de Noviembre de
2015, de http://sistemas-
operativos.blogspot.mx/2012/10/algo
ritmo-del-banquero.html
Milenkovic M. (1994). Sistemas Operativos:
Conceptos y Diseño (2da ed.).
MADRID: McGraw-Hill.
Sánchez Torrubia, G., & Lozano Terrazas, V.
(s.f.). Algoritmo de Dijkstra: Un
Tutorial Interactivo. Recuperado el 11
de Noviembre de 2015, de
http://bioinfo.uib.es/~joemiro/aenui/
procJenui/ProcWeb/actas2001/saalg2
23.pdf
Stallings, W. (1993). Computer Organization
and Architecture (3era ed.). NEW
YORK: Macmillan.