lunes, 15 de noviembre de 2010

UNIDAD 2 Gestión del procesador, comunicación y sincronización de datos. (PARTE III)

Bloqueo mutuo

El bloqueo mutuo (también conocido como interbloqueo, traba mortal, deadlock, abrazo mortal) es el bloqueo permanente de un conjunto de procesos o hilos de ejecución en un sistema concurrente que compiten por recursos del sistema o bien se comunican entre ellos. A diferencia de otros problemas de concurrencia de procesos, no existe una solución general para los interbloqueos.

Todos los interbloqueos surgen de necesidades que no pueden ser satisfechas, por parte de dos o más procesos. En la vida real, un ejemplo puede ser el de dos niños que intentan jugar al arco y flecha, uno toma el arco, el otro la flecha. Ninguno puede jugar hasta que alguno libere lo que tomó.



Metodos para el manejo del Bloqueo mutuo



Hay 3 métodos para tratar el problema del bloqueo mutuo:

1) Usar un protocolo para asegurar que el sistema nunca entrará en un estado de bloqueo.
   – Prevenir del bloqueo
        • asegura que al menos una de las condiciones para el bloqueo no se cumplirá.
        • establece restricciones sobre como pueden solicitarse los recursos.
  
Evitar el bloqueo
        • el S.O. necesita conocer con anticipación que recursos requerirá un proceso durante su tiempo de vida.
        • con esa información, el S.O. puede decidir para cada requerimiento si el proceso debe esperar o no.
        • la decisión se realiza en función de los recursos actualmente disponibles, los actualmente asignados a cada proceso, y los requerimientos y liberaciones futuras de cada proceso.
 

2)Permitir entrar a un estado de bloqueo y luego recuperarse.
   – Un algoritmo examina el estado del sistema para determinar si ha ocurrido un bloqueo.
   – Otro algoritmo maneja la recuperación desde el bloqueo.
 

3)Ignorar el problema.
   – Ante un bloqueo el sistema sufrirá un deterioro en su perfomance
   – Eventualmente el sistema se detendrá y necesitará reinicio
manual.
   – Es usado en algunos sistemas operativos.



Prevención del bloqueo

Asegurando que al menos una de las condiciones para bloqueo no se cumpla, podemos prevenir su ocurrencia.

1) Exclusión mutua
   – Los recursos compartibles no estarán involucrados en un bloqueo dado que no requieren acceso exclusivo.
   – En general no es posible prevenir los bloqueos relegando la condición de exclusión mutua, dado que hay recursos que son intrínsecamente no compartibles.

2) Retención y espera
   – Garantizar que, siempre que un proceso requiere un recurso, no tiene otro retenido.
   – Pueden usarse dos protocolos:
         • cada proceso debe requerir y recibir todos sus recursos antes de comenzar su ejecución.
         • cada proceso puede requerir algunos recursos y usarlos, pero cuando requiere otro recurso adicional, antes debe liberar los recursos que tiene asignados.
   – Estos protocolos producen baja utilización de los recursos.
   – Puede ocasionar inanición de algunos procesos.
 
3) No apropiación
   – Alternativa 1:
         • Si un proceso que está reteniendo algunos recursos, requiere otro recurso que no se le puede asignar inmediatamente, entonces todos los recursos que tiene retenidos le son apropiados.
         • Los recursos apropiados son agregados a la lista de recursos que el proceso está esperando.
         • El proceso se reinicia solo cuando recupera sus viejos recursos junto con los nuevos que esta requiriendo.
   – Alternativa 2:
         • Si un proceso requiere recursos, primero chequear si están disponibles.
         • Si están, entonces asignarlos.
         • Si no están, chequear si están asignados a algún otro proceso que esté esperando recursos adicionales.
         • Si es así, apropiar los recursos deseados al proceso que está esperando y asignárselos al proceso que los requiere.
         • Si los recursos requeridos no esta disponibles ni retenidos por otro proceso en espera, entonces el proceso que requiere debe esperar
.