Bloqueo Mutuo

Imprime esta anotacion - Imprime esta anotacion - 27 Agosto, 08 by miki

Tiene gran cantidad de nombres: bloqueo mutuo, dead lock, abrazo mortal, interbloqueo; pero todo viene a ser la misma parte de una situación cuando hablamos de un proceso. Un bloqueo mutuo se produce cuando estamos en una situación en la que no podemos seguir adelante ya que se produce un bloqueo completo del sistema. Normalmente, éste problema se produce cuando en un sistema de llamadas a datos o recursos del sistema pelean diferentes hilos de ejecución por la misma acción concurrente.

bloqueo-mutuo.png

El ejemplo que vemos arriba es uno de los más comunes que se enseñan para entender lo que es el bloqueo mutuo. Cuatro coches en una intersección de caminos que cada uno bloquea al otro, por lo que existe un interbloqueo que no tiene por tanto una solución sencilla ya que para que cada uno se pueda mover se ha de mover el de delante suya.

Realmente el bloqueo mutuo viene de la formación y repartición de los procesos y/o de los recursos. Desde el punto de vista matemático económico el bloqueo mutuo se podría solucionar con unos algoritmos de simplex usados a priori, ya que con dicho algoritmo se haría un buen ajuste de los procesos y los recursos y nunca se llegaría al interbloqueo; el problema es que no siempre tenemos los datos suficientes para hacer ésto con anterioridad.

La manera de solucionarlo por tanto es un tanto más tosca, y es que en vez de hacer un simplex y resolver el sistema de golpe, hacer antes de cada paso varios algoritmos para comprobar si el siguiente será un paso correcto y estable sin que se produzca bloqueo mutuo.

  • Algoritmo de seguridad de no bloqueo
  • Del grafo de asignación de recursos que el similar al simplex pero en cada uno de los pasos del proceso y
  • El algoritmo del banquero que indica como mediante el un proceso no se puede bloquear nunca, ya que sólo permite la interacción de dicha llamada si el paso se hace de forma segura, sino es así espera a que se liberen recursos suficientes en el sistema para que se realice el proceso. Éste algoritmo tiene un problema y es que siempre pone como condicional inicial el hecho de tener recursos ilimitados para realizar los procesos, cosa que no siempre es cierta, por lo que cuando halla un proceso que sea más grande que la capacidad de procesamiento, éste algoritmo del banquero bloquearía siempre el proceso al no poder hacerse nunca de forma segura sin quedar en bloqueo mutuo.

Añade tu Comentario

1 Comentario en éste post

  1. shakaran Comenta:

    Es un poco extraño que sin introducción y sin venir a cuento hables de una forma tan general de algoritmos de concurrencia.

    Yo detallaría mucho más para dar una mejor compresión (además de facilitar más ilustraciones), porque la gente que no le suene mucho esto, no habrá comprendido apenas nada.

    Saludos

Dejanos tu comentario

XHTML: Puedes usar los siguientes tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

nacho | Bueno, vaya día más raro... en fin. Hasta mañana!

miki | @failurez gracias.... Nos va a hacer mucha falta....