lunes, 29 de noviembre de 2010

Concepto de bloqueo mutuo:

Bloqueo mutuo se refiere al bloqueo entre dos o mas procesos que estan compitiendo por recursos en un sistema concurrente que a diferencia de otros problemas, el bloqueo mutuo no posee una solucion general.
 Los bloqueos mutuos aparecen cuando dos o mas procesos no pueden acceder a los recursos, un ejemplo facil de entender seria:

- El proceso 1, necesita 5 espacios en memoria, de los cuales tiene asignados solo 3, y el proceso 2 necesita tambien 5 espacios en memoria de los cuales tiene asignados solo 2, lo que ocurre es que ninguno de los dos procesos se podra ejecutar hasta que uno de ellos no libere los recursos que tiene.

Condiciones necesarias para que existan bloqueos mutuos:

Para que ocurran Bloqueos Mutuos deben cumplirse ciertas condiciones para ello, estan condiciones son llamadas tambien condiciones de coffman, las cuales no son totalmente independientes entre ellas, las condiciones para bloqueos mutuos son :

- Condición de exclusión mutua: Existencia al menos de un recurso compartido por los procesos, al cual sólo puede acceder uno simultáneamente.

- Condición de posesión y espera: Al menos un proceso "x" ha adquirido un recurso "y", y lo mantiene mientras espera al menos un recurso "y" que ya ha sido asignado a otro proceso.

- Condición de no expropiación: Los recursos no pueden ser apropiados por los procesos, es decir, los recursos sólo podrán ser liberados voluntariamente por sus propietarios.

- Condición de espera circular: Dado el conjunto de procesos P1, p2, p3....el p1 está esperando un recurso adquirido por P2, que está esperando un recurso adquirido por P3,... ,que está esperando un recurso adquirido por P...., que está esperando un recurso adquirido por P1. Esta condición implica la condición de retención y espera.

Grafo de asignacion de recursos:

El Bloqueo mutuo también puede ser representado usando grafos dirigidos, donde el proceso es representado por un círculo y el recurso, por un cuadrado. Cuando un proceso solicita un recurso, una flecha es dirigida del círculo al cuadrado. Cuando un recurso es asignado a un proceso, una flecha es dirigida del cuadrado al círculo.



Mecanismos para prevenir bloqueos mutuos:

Para prevenir bloqueos mutuos existen distintos mecanismos que basicamente consiste en eliminar alguna de las condiciones necesarias apra que un bloqueo mutuo se lleve a cabo:

-Eliminando la exclusión mutua: ningún proceso puede tener acceso exclusivo a un recurso.

- La condición de posesión y espera puede ser eliminada haciendo que los procesos pidan todos los recursos que van a necesitar antes de empezar. Este conocimiento por adelantado muchas veces es imposible. Otra forma es requerir a los procesos liberar todos sus recursos antes de pedir todos los recursos que necesitan. Esto también es poco práctico en general.

- La condición de no expropiación puede ser imposible de eliminar dado que un proceso debe poder tener un recurso por un cierto tiempo o el procesamiento puede quedar inconsistente.

- La condición de espera circular es la más fácil de atacar. Se le permite a un proceso poseer sólo un recurso en un determinado momento, o una jerarquía puede ser impuesta de modo tal que los ciclos de espera no sean posibles.

 Deteccion de bloqueos mutuos:


Si un sistema no emplea un algoritmo de prevención o de evitación del bloqueo, entonces puede ocurrir una situación de bloqueo. Por ello, estos sistemas deben proveer:

- Un algoritmo que examine el estado del sistema para determinar si ha ocurrido un bloqueo.

- Un algoritmo para recuperarse del bloqueo.

Algoritmo del banquero:

El algoritmo del banquero es un algoritmo que se usa para evitar el bloqueo mutuo y funciona de la siguiente manera:
- Los clientes del banco representan a los procesos, que tienen un crédito límite, y el dinero representa a los recursos. El banquero es el sistema operativo.

El banco confía en que no tendrá que permitir a todos sus clientes la utilización de todo su crédito a la vez. El banco también asume que si un cliente maximiza su crédito será capaz de terminar sus negocios y devolver el dinero a la entidad, permitiendo servir a otros clientes.

El algoritmo mantiene al sistema en un estado seguro. Un sistema se encuentra en un estado seguro si existe un orden en que pueden concederse las peticiones de recursos a todos los procesos, previniendo el interbloqueo. El algoritmo del banquero funciona encontrando estados de este tipo.

Los procesos piden recursos, y son complacidos siempre y cuando el sistema se mantenga en un estado seguro después de la concesión. De lo contrario, el proceso es suspendido hasta que otro proceso libere recursos suficientes.

Recuperacion tras ocurrir un bloqueo mutuo

Cuando un algoritmo de detección determina que existe un bloqueo, el paso siguiente puede ser:

- Informar al operador del bloqueo para que lo trate manualmente.

- Dejar que el sistema se recupere del bloqueo automáticamente.

Hay dos opciones para romper un bloqueo:

- Abortar uno o más procesos para romper la espera circular

 - Apropiar algunos recursos de uno o más procesos bloqueados