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
Ejemplo
proceso\recurso | R1 (7) | R2(7) | R3(7) | |
Maximos | P1 | 5 | 3 | 1 |
P2 | 3 | 2 | 3 | |
P3 | 2 | 3 | 1 | |
P4 | 5 | 0 | 3 | |
Asignados | P1 | 3 | 3 | 1 |
P2 | 2 | 2 | 2 | |
P3 | 0 | 1 | 1 | |
P4 | 0 | 0 | 1 | |
Necesarios | P1 | 2 | 0 | 0 |
P2 | 1 | 0 | 1 | |
P3 | 2 | 2 | 0 | |
P4 | 5 | 0 | 2 | |
Disponibles | 2 | 1 | 2 |
Supongamos las siguiente peticiones de recursos:
- P2[1,0,1]:El sistema queda en un estado seguro
- P3[2,0,0]:El sistema queda en un estado inseguro
P2[1,0,1]:El sistema queda en un estado seguro
ResponderEliminarP3[2,0,0]:El sistema queda en un estado inseguro porque?