Un interbloqueo ocurre cuando dos o más procesos compiten por recursos mutuamente excluyentes y cada proceso espera al otro para liberar un recurso. Se pueden prevenir los interbloqueos evitando que se cumplan las cuatro condiciones necesarias: exclusión mutua, retener y esperar, no expropiación y espera circular. Algunas estrategias incluyen forzar a los procesos a liberar recursos, permitir la expropiación de recursos o requerir que los procesos soliciten recursos en un orden específico.
Cómo prevenir interbloqueos en sistemas concurrentes
1.
2. 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.
3. Los procesos compiten por dos recursos que
necesitan para funcionar, que sólo pueden ser
utilizados por un proceso a la vez. El primer
proceso obtiene el permiso de utilizar uno de los
recursos (adquiere el lock sobre ese recurso). El
segundo proceso toma el lock del otro recurso, y
luego intenta utilizar el recurso ya utilizado por el
primer proceso, por lo tanto queda en espera.
Cuando el primer proceso a su vez intenta utilizar
el
otro
recurso,
se
produce
un
interbloqueo, donde los dos procesos esperan la
liberación del recurso que utiliza el otro proceso.
4. En una carretera de dos direcciones, en donde se ha construido un puente
que por problemas urbanísticos o de presupuesto solo deja pasar
vehículos en un sentido. Dado este punto crítico en la mencionada
carretera, se presentan las siguientes situaciones:
• Un vehículo llega al puente y no se encuentra ningún otro en sentido
contrario. En este caso, cruza haciendo uso del puente y no ocurre
nada anormal.
• Si el paso por el puente es controlado por un semáforo en cada lado de
manera que 100 metros antes de cada semáforo se sitúen detectores
de presencia de vehículos cuya finalidad sea poner en rojo el semáforo
del sentido contrario ante la presencia de un vehículo, podría suceder
que si llegan al mismo tiempo vehículos
en los dos sentidos se pongan los dos
semáforos en rojo impidiendo el paso
de vehículos en ambos sentidos.
En este caso el camino queda
bloqueado, ocurriendo algo similar al
interbloqueo de procesos.
5. Un conjunto de procesos llega al interbloqueo
si se cumplen las siguientes condiciones:
• 1. Exclusión mutua. Los recursos
compartidos son adquiridos y utilizados de
modo mutuamente exclusivo, es decir, por
un proceso como máximo en cada
momento.
• 2. Retener y esperar. Cada proceso retiene
los recursos que ya le han sido asignados
mientras espera a adquirir el resto de
recursos.
6. • 3. No expropiación. Los recursos
concedidos a un proceso sólo pueden ser
liberados y devueltos al sistema como
resultado de la acción voluntaria de ese
proceso: el sistema no puede obligarle a
entregarlos.
• 4. Espera circular. Los procesos
interbloqueados forman una cadena
circular de modo que cada proceso retiene
uno o más de los recursos que son
solicitados por el siguiente proceso de la
cadena.
7. Se refiere a prevenir que surja el
interbloqueo en el mismo. De tal manera
que nunca se lleguen a cumplir ninguna
de las cuatro condiciones necesarias para
que se produzcan los interbloqueos.
La exclusión mutua: es generalmente
difícil de evitar, por lo que es costumbre
prevenir una o más de las tres
condiciones restantes.
8. La condición retener-y-esperar :puede ser
eliminada exigiendo o forzando a un proceso a
liberar todos los recursos .En otras palabras, los
interbloqueos se previenen debido a que los
procesos en espera no retienen recursos. Hay
básicamente dos implementaciones posibles de
esta estrategia:
1) el proceso solicita todos los recursos necesarios
antes de comenzar a ejecutarse
2) el proceso solicita los recursos de forma
incremental en el curso de la ejecución pero
libera todos los recursos retenidos si se
encuentra con una negativa.
9. No expropiación: puede ser negada
obviamente permitiendo expropiación, es
decir, autorizando al sistema a revocar la
propiedad de ciertos recursos a los
procesos bloqueados. Puesto que la
expropiación es involuntaria desde el punto
de vista del proceso afectado, el sistema
operativo debe encargarse de salvar el
estado y restaurarlo cuando el proceso sea
posteriormente reanudado.
10. Espera circular: es mediante la ordenación lineal
de los diferentes tipos de recursos del
sistema.
Los interbloqueos se previenen
exigiendo que todos los procesos soliciten y
adquieran sus recursos en orden estrictamente
creciente de las clases de recursos de sistema
especificadas. Además. la adquisición de todos
los recursos pertenecientes a una clase debe
efectuarse con una sola petición, y no
incrementalmente.
Una desventaja de este método es que los
recursos deben ser adquiridos en el orden
prescrito, en vez de ser solicitados cuando
realmente se necesitan.