Loading AI tools
De Wikipedia, la enciclopedia libre
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. 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 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:
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.
Recursos iniciales | ||
R1 | R2 | R3 |
18 | 6 | 12 |
Recursos máximos | Recursos en uso | Recursos necesarios para finalizar | |||||||||||
R1 | R2 | R3 | R1 | R2 | R3 | R1 | R2 | R3 | |||||
P1 | 6 | 4 | 4 | P1 | 2 | 0 | 0 | P1 | 4 | 4 | 4 | ||
P2 | 12 | 2 | 6 | P2 | 10 | 2 | 2 | P2 | 2 | 0 | 4 | ||
P3 | 6 | 2 | 8 | P3 | 4 | 2 | 6 | P3 | 2 | 0 | 2 |
Recursos disponibles=total recursos iniciales - total recursos en uso
Recursos disponibles | ||
R1 | R2 | R3 |
2 | 2 | 4 |
Si, por ejemplo, P2 está solicitando (2,0,2): las matrices de recursos en uso y recursos necesarios para finalizar son las siguientes:
Recursos máximos | Recursos en uso | Recursos necesarios para finalizar | |||||||||||
R1 | R2 | R3 | R1 | R2 | R3 | R1 | R2 | R3 | |||||
P1 | 6 | 4 | 4 | P1 | 2 | 0 | 0 | P1 | 4 | 4 | 4 | ||
P2 | 12 | 2 | 6 | P2 | 12 | 2 | 4 | P2 | 0 | 0 | 2 | ||
P3 | 6 | 2 | 8 | P3 | 4 | 2 | 6 | P3 | 2 | 0 | 2 |
Recursos disponibles | ||
R1 | R2 | R3 |
0 | 2 | 2 |
Recursos necesarios para finalizar | Recursos disponibles | ||||||
R1 | R2 | R3 | R1 | R2 | R3 | ||
P1 | 4 | 4 | 4 | 0 | 2 | 0 | |
P2 | 0 | 0 | 0 | ||||
P3 | 2 | 0 | 2 |
Recursos en uso | Recursos necesarios | Recursos disponibles | ||||||||||
R1 | R2 | R3 | R1 | R2 | R3 | R1 | R2 | R3 | ||||
P1 | 2 | 0 | 0 | P1 | 4 | 4 | 4 | 12 | 4 | 4 | ||
P2 | 0 | 0 | 0 | P2 | 0 | 0 | 0 | |||||
P3 | 4 | 2 | 6 | P3 | 2 | 0 | 2 |
Es un algoritmo que determina si el sistema está en un estado seguro y sin que haya que molestar a un recurso .2-xc tmlp .r3l-4t-cx1
Este algoritmo determina si un pedido de recursos puede ser satisfecho de forma segura. Es ejecutado por el sistema cada vez que llega una petición de recursos por parte de un proceso.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.