Requisito previo: detección y recuperación
de puntos muertos Cuando un algoritmo de detección de puntos muertos determina que se ha producido un punto muerto en el sistema, el sistema debe recuperarse de ese punto muerto. Hay dos enfoques para romper un punto muerto :
1. Terminación del proceso:
para eliminar el interbloqueo, simplemente podemos eliminar uno o más procesos. Para ello utilizamos dos métodos:
- (a). Abortar todos los Procesos Interbloqueados: Abortar todos
los procesos ciertamente romperá el punto muerto, pero con un gran costo. Los procesos interbloqueados pueden haber computado durante mucho tiempo y el resultado de esos cálculos parciales debe descartarse y existe la probabilidad de volver a calcularlos más tarde.
- (b). Abortar un proceso a la vez hasta que se elimine el interbloqueo:
Abortar un proceso a la vez, hasta que se elimine el ciclo de interbloqueo del sistema. Debido a este método, puede haber una sobrecarga considerable, porque después de abortar cada proceso, tenemos que ejecutar un algoritmo de detección de interbloqueo para verificar si algún proceso aún está interbloqueado.
2. Apropiación de recursos:
para eliminar interbloqueos mediante la apropiación de recursos, apropiamos algunos recursos de los procesos y damos esos recursos a otros procesos. Este método planteará tres cuestiones:
- (a). Selección de una víctima:
Debemos determinar qué recursos y qué procesos se van a adelantar y también el orden para minimizar el costo.
- (b). Reversión:
debemos determinar qué se debe hacer con el proceso del que se apropian los recursos. Una idea simple es la reversión total. Eso significa abortar el proceso y reiniciarlo.
- (C). Inanición:
En un sistema, puede suceder que el mismo proceso sea siempre elegido como víctima. Como resultado, ese proceso nunca completará su tarea designada. Esta situación se llama inanición y debe evitarse. Una solución es que un proceso debe ser elegido como víctima solo un número finito de veces.