Mostrando entradas con la etiqueta Algoritmo banquero. Mostrar todas las entradas
Mostrando entradas con la etiqueta Algoritmo banquero. Mostrar todas las entradas

Llamado: (Algoritmo de Dijkstra)

Este algoritmo se usa para evitar interbloqueos en el sistema, básicamente procede de la siguiente manera: cada proceso declara el máximo de recursos a utilizar y cada vez que se hace una solicitud de asignación de recursos, se determina si al asignar los recursos se deja en un estado inseguro y de ser así se pospone la asignación, de lo contrario, se asignan los recursos solicitados.

Asignación

Se determina si hay disponiboles
Se valida que no exceda su máximo declarado
Se verifica que si se concede la petición, el sistema quede en estado seguro
Si no se cumple cualquiera de estas condiciones, el proceso queda suspendido hasta que exista una liberación de recursos.

Desventajas

Se necesita saber desde un principio el máximo de recursos que usará cada proceso
Este proceso implica un retardo en cada asignación de recursos, lo que puede degradar el sistema si se manejan muchos recursos y/o procesos
Se requiere una garantía de devolución: c/proceso liberará los recursos asignados


proceso\recursoR1 (7)R2(7)R3(7)
MaximosP1531
P2323
P3231
P4503
AsignadosP1331
P2222
P3011
P4001
NecesariosP1200
P2101
P3220
P4502
Disponibles212
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.

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 R_i disponibles.
Demanda (Max): Esta matriz, n\times 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.