Bloqueos en Sistemas Distribuidos

Son peores que los bloqueos en sistemas monoprocesado:

Son especialmente críticos en sistemas de bases de datos distribuidos.

Las estrategias usuales para el manejo de los bloqueos son:

El algoritmo del avestruz merece las mismas consideraciones que en el caso de mono-procesador.

En los sistemas distribuidos resulta muy difícil implantar algoritmos para evitar los bloqueos:

Las técnicas más aplicables para el análisis de los bloqueos en sistemas distribuidos son:

Detección Distribuida de Bloqueos

Cuando se detecta un bloqueo en un S. O. convencional se resuelve eliminando uno o más procesos.

Cuando se detecta un bloqueo en un sistema basado en transacciones atómicas se resuelve abortando una o más transacciones:

Las consecuencias de la eliminación de un proceso son mucho menos severas si se utilizan las transacciones que en caso de que no se utilicen.

Detección Centralizada de Bloqueos

Cada máquina mantiene la gráfica de recursos de sus propios procesos y recursos.

Un coordinador central mantiene la gráfica de recursos de todo el sistema, que es la unión de todas las gráficas individuales.

Cuando el coordinador detecta un ciclo elimina uno de los procesos para romper el bloqueo.

La información de control se debe transmitir explícitamente, existiendo las siguientes variantes:

La información de control incompleta o retrasada puede llevar a falsos bloqueos:

Detección Distribuida de Bloqueos

Un algoritmo típico es el de Chandy-Misra-Haas.

Los procesos pueden solicitar varios recursos (por ejemplo cerraduras) al mismo tiempo, en vez de uno cada vez.

Se permiten las solicitudes simultáneas de varios procesos:

Si el proceso “0” se bloquea debido al proceso “1”:

Una forma de romper el bloqueo es que el proceso que inició la exploración se comprometa a suicidarse y, si varios procesos se bloquean al mismo tiempo e inician exploraciones, todos ellos se suicidarán.

Una variante es eliminar solo al proceso del ciclo que tiene el número más alto.

Prevención Distribuida de Bloqueos

La prevención consiste en el diseño cuidadoso del sistema para que los bloqueos sean imposibles estructuralmente.

Entre las distintas técnicas se incluye:

En un sistema distribuido con tiempo global y transacciones atómicas:

La idea es que cuando un proceso está a punto de bloquearse en espera de un recurso que está utilizando otro proceso:

Al seguir cualquier cadena de procesos en espera:

Otra posibilidad es permitir la espera de procesos solo si el proceso que espera tiene una marca mayor (es más joven) que el otro proceso; las marcas aparecen en la cadena en forma descendente.

Es más sabio dar prioridad a los procesos más viejos:

 

Hosted by www.Geocities.ws

1