jueves, 26 de febrero de 2009

INTERBLOQUEO EN SISTEMAS DISTRIBUIDOS

Interbloqueo: Situación en la que se encuentran un conjunto de procesos, (al menos dos), tal que cada proceso del conjunto espera la ocurrencia de un evento que solo se puede ser provocado por otro proceso del mismo conjunto.

Las condiciones en las cuales se produce un interbloqueo son:

1. Recursos deben utilizarse en exclusión mutua (sólo un proceso puede usar un recurso en un instante dado)
2. Retención y espera (Existen procesos que poseen recursos y que están en espera de otros recursos)
3. No apropiación (Los recursos solo son liberados por los procesos, no hay prioridades)
4. Círculo vicioso de espera (Existe un circuito en la gráfica de espera)

Interbloqueo por mensajes: Cada proceso espera un mensaje de otro proceso siendo que ningún mensaje esta en tránsito

No disponibilidad de buffers de mensajes

Otra forma en que puede producirse interbloqueo en un sistema de paso de mensajes es por la asignación de buffers para el almacenamiento de los mensajes en camino.

La forma más sencilla de interbloqueo en una red de datos es el interbloqueo directo por almacenamiento y reenvío, que puede producirse si un nodo de conmutación de paquetes utiliza una reserva común de buffers desde donde son asignados a los paquetes bajo demanda. Este tipo de interbloqueo puede impedirse si no se permite que todos los buffers acaben dedicados a un único enlace. Empleando buffers separados de tamaños fijos, uno por cada enlace, incluso usando una reserva común de buffers se puede evitar el interbloqueo si no se permite que enlaces únicos consigan todo el espacio de buffers.

Otra forma simple, interbloqueo indirecto por almacenamiento y reenvío. Para cada nodo, la cola dirigida al nodo adyacente en una dirección está llena de paquetes destinados al nodo más allá del siguiente. La forma simple de impedirlo es emplear una reserva estructurada de buffers. Estos están organizados en forma jerárquicamente.

En sistemas distribuidos surgen estos problemas, en concreto, si la operación enviar (send) es no bloqueadora, se necesita un buffers para albergar los mensajes salientes. Se podría pensar que el buffers empleado para guardar los mensajes a enviar es del proceso X al proceso Y sea un canal de comunicaciones entre X e Y. Si este canal tiene una capacidad limitada (tamaño limitado del buffers), es posible que la operación enviar motive la suspensión del proceso. Es decir si el buffers es de tamaño n y actualmente hay n mensajes en camino (no recibidos aún por el proceso de destino), la ejecución de un send adicional bloqueará al proceso emisor hasta que un recibir (receive) haya hecho espacio en el buffers.

FALSO INTERBLOQUEO


Es un interbloqueo que no existe en el momento en que es detectado

Corolario: Algoritmo detección interbloqueo debe evitar detectar falsos Interbloqueos.

¿Como evitarlo?

1) hipótesis sobre el comportamiento de las vías de comunicación
2) diseño adecuado de algoritmos

En los sistemas actuales, el interbloqueo se ha considerado generalmente como una molestia limitada. La mayor parte de los sistemas siguen los métodos básicos de prevención sugeridos por Havender, y tales métodos parecen ser satisfactorios.
Sin embargo, en los sistemas futuros el bloqueo mutuo será una consideración mucho más importante por varias razones:
Los sistemas futuros estarán más orientados hacia operaciones asíncronas en paralelo que hacia las operaciones en serie. El multiprocesamiento es ya muy común y la computación paralela será dominante así como la proliferación de redes y sistema distribuidos. En pocas palabras, se realizarán más operaciones en paralelo, habrá más conflictos por los recursos y, por tanto, más oportunidad de que aparezca un interbloqueo.
En los sistemas futuros, la asignación tenderá a ser dinámica. Los procesos podrán adquirir y liberar recursos según sus necesidades. Los usuarios no necesitarán saber mucho acerca de sus requisitos de recursos antes de la ejecución de un programa. De hecho, con las interfaces cada vez más amables, la mayoría de los usuarios no se preocupan demasiado por el consumo de los recursos de sus procesos.
Con la creciente tendencia de los diseñadores de sistemas operativos a contemplar los datos como un recurso más, aumentará notablemente el número de recursos que debe administrar un sistema operativo.
Por lo tanto, la tarea de asignar recursos sin la posibilidad de interbloqueos en los sistemas de cómputo recaerá sobre el sistema operativo. Con el abaratamiento y la creciente potencia de los recursos, es razonable que se amplíen las funciones de la computadora y del sistema operativo.

No hay comentarios:

Publicar un comentario