domingo, 13 de noviembre de 2011

Detección y Recuperación de los Deadlocks

Detección Interbloqueo
El interbloqueo se puede detectar comprobando si existe una secuencia de terminación
de procesos (similar a la sec. segura):
- Sea L la lista de procesos del sistema y R el conjunto de recursos disponibles
1. Buscar en L un proceso que puede continuar con los recursos disponibles en
R
2. Si no se encuentra ningún procesos, ir al paso 5
3. Suponer que P termina (lo retiramos de L) y que libera los recursos que
retiene (los añadimos a R)
4. Volver al paso 1
5. Si L no está vacía, hay interbloqueo.
Recuperación del interbloqueo.
- Un sistema que pretenda recuperarse del interbloqueo, debe invocar a un algoritmo
de detección cuando lo considere oportuno (ej. periódicamente)
- Formas de intentar la recuperación:
- Terminación de procesos.
- Expropiación de recursos.
- Terminación de procesos
- matando a todos los procesos implicados (drástico)
- matando a uno de los procesos ¿cuál?
- el que más recursos libere
- el que menos tiempo lleve en ejecución.
- retrocediendo la ejecución de algún proceso (rollback)
- muy complicado de implementar y necesita que el programa esté diseñado
para que pueda retroceder.

1 comentario:

  1. Para complementar:
    "matando a uno de los procesos ¿cuál?
    - el que más recursos libere
    - el que menos tiempo lleve en ejecución."

    se seleccionan por prioridad y por recursos adicionales que el proceso utilizara.

    Ademas cabe mencionar que si se pasa el proceso al estado rollback, este utiliza los mismos criterios de la cancelación.

    ResponderEliminar