Un interbloqueo es una situación en la que un conjunto de procesos está bloqueado porque cada proceso está reteniendo un recurso y esperando un recurso retenido por algún otro proceso.
Hay cuatro condiciones necesarias para que ocurra un Interbloqueo que son:
- Exclusión mutua: hay al menos un recurso que no se puede compartir y solo puede ser utilizado por un proceso a la vez.
- Retener y esperar: un proceso está reteniendo al menos un recurso y esperando otro.
- Sin preferencia: un recurso no se puede tomar de un proceso hasta que lo libere.
- Espera circular: al menos dos procesos deben formar una string circular reteniendo un recurso y esperando un recurso retenido por el siguiente proceso de la string.
Por lo tanto, las cuatro condiciones anteriores son necesarias para que se produzca un interbloqueo . Si se evita cualquiera de las cuatro condiciones anteriores, podemos evitar que se produzca un interbloqueo. Hay 2 formas de evitar interbloqueos en un sistema distribuido.
- Solicitud ordenada
- Solicitud colectiva
Solicitud ordenada
Como sugiere el nombre, en este método de prevención de interbloqueos, a cada tipo de recurso se le asigna un cierto nivel para mantener una política de solicitud de recursos para un proceso. Esto se conoce como la política de asignación de recursos. Para cada Recurso, se asigna un número de nivel global para imponer el orden de todos los tipos de recursos. Al solicitar un recurso, un proceso debe asegurarse de no solicitar un recurso cuyo nivel de orden sea inferior al recurso de orden de nivel más alto que tiene actualmente. Solo puede solicitar recursos superiores a los recursos de más alto nivel que posee el proceso. Consulte el siguiente ejemplo para una mejor comprensión. Suponga que hay 10 recursos del nivel 1 al 10, y 10 es el recurso de orden de nivel más alto. Si un Proceso tiene actualmente los recursos 5 y 8, no puede solicitar un recurso por debajo de 8, solo puede solicitar los recursos 9 y 10. Por ejemplo, el proceso no puede realizar una solicitud para el Recurso 7, mientras mantiene el recurso 8. Este método no significa que las requests deban realizarse en orden creciente de secuencia. Antes de enviar una solicitud para el recurso 7, tiene que liberar el recurso retenido 8. Después de liberar 8, puede adquirir 7. Está permitido porque actualmente no tiene un recurso superior a 7.
El método se asegura de que no se alcance la condición de espera circular y si se deniega una de las condiciones de interbloqueo, se evitará el interbloqueo.
Desventajas:
- Un Proceso que tiene órdenes de solicitud de recursos en niveles de orden crecientes con respecto a la Política de Asignación de Recursos, utilizará todos los recursos y los desperdiciará.
- Por ejemplo: tome la referencia del ejemplo anterior, si un proceso tiene un orden de solicitud de recursos del 1 al 10. Adquirirá todos los recursos y esto degrada la utilización de los recursos.
Solicitud colectiva
Este método evita la condición Retener y esperar mediante el uso de cualquiera de las siguientes políticas de asignación de recursos:
- Esta Política de Asignación de Recursos asegura que un Proceso solicite todos los recursos requeridos antes de la ejecución del proceso. Si alguno de los recursos requeridos no está disponible, la solicitud no se concede. Ejemplo: un proceso requiere 3 recursos para su ejecución, si los 3 recursos están disponibles, se concede la solicitud y se asignan los 3 recursos. Pero si alguno de los 3 recursos no está disponible, ninguno de los 3 recursos se asignará y la solicitud se rechazará.
- En esta Política de Asignación de Recursos, los Procesos deben asegurarse de que antes de solicitar cualquier recurso, no debe retener ningún recurso. Es decir, debe liberar todos sus recursos actuales antes de realizar cualquier solicitud de nuevos recursos. Al solicitar cualquier recurso, el proceso no debe contener ningún recurso.
- En las dos políticas de asignación de recursos anteriores, no se puede alcanzar la condición de retención y espera de interbloqueo y, por lo tanto, se evita el interbloqueo.
Desventajas:
- Conduce a una baja utilización de los recursos.
- Process Starvation también es posible porque, si hay un proceso con altas necesidades de recursos, la aceptación de su solicitud se retrasará.
Publicación traducida automáticamente
Artículo escrito por vaibhavpatel1904 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA