Un proceso en el sistema operativo usa recursos de la siguiente manera.
1) Solicita un recurso
2) Usa el recurso
3) Libera el recurso
Interbloqueo es una situación en la que un conjunto de procesos están bloqueados porque cada proceso tiene un recurso y espera otro recurso adquirido por algún otro proceso.
Considere un ejemplo cuando dos trenes vienen uno hacia el otro en la misma vía y solo hay una vía, ninguno de los trenes puede moverse una vez que están uno frente al otro. Una situación similar ocurre en los sistemas operativos cuando hay dos o más procesos que tienen algunos recursos y esperan los recursos que tienen otros. Por ejemplo, en el siguiente diagrama, el Proceso 1 está reteniendo el Recurso 1 y esperando el recurso 2 que es adquirido por el proceso 2, y el proceso 2 está esperando el recurso 1.
Puede surgir un interbloqueo si las siguientes cuatro condiciones se cumplen simultáneamente (condiciones necesarias)
Exclusión mutua: dos o más recursos no se pueden compartir (solo se puede usar un proceso a la vez)
Retener y esperar: un proceso está reteniendo al menos un recurso y esperando recursos.
Sin preferencia: un recurso no se puede tomar de un proceso a menos que el proceso libere el recurso.
Espera circular: un conjunto de procesos están esperando el uno al otro en forma circular.
Métodos para manejar interbloqueos
Hay tres formas de manejar interbloqueos
1) Prevención o evitación de interbloqueos: la idea es no permitir que el sistema entre en un estado de interbloqueo.
Uno puede hacer zoom en cada categoría individualmente. La prevención se realiza negando una de las condiciones necesarias mencionadas anteriormente para el punto muerto.
La evasión es una especie de naturaleza futurista. Al usar la estrategia de «Evitación», tenemos que hacer una suposición. Necesitamos asegurarnos de que conocemos toda la información sobre los recursos que necesitará el proceso antes de la ejecución del proceso. Usamos el algoritmo de Banker (que a su vez es un regalo de Dijkstra) para evitar un punto muerto.
2) Detección y recuperación de interbloqueos: Deje que ocurra un interbloqueo, luego haga una preferencia para manejarlo una vez que ocurra.
3) Ignore el problema por completo: si el interbloqueo es muy raro, deje que suceda y reinicie el sistema. Este es el enfoque que adoptan tanto Windows como UNIX.
Ejercicio:
1) Supongamos n procesos, P1, …. Pn comparte m unidades de recursos idénticas, que se pueden reservar y liberar de una en una. El requerimiento máximo de recursos del proceso Pi es Si, donde Si > 0. ¿Cuál de las siguientes es una condición suficiente para asegurar que no ocurra un interbloqueo? (PUERTA CS 2005)
(A) A
(B) B
(C) C
(D) D
Para obtener una solución, consulte la Pregunta 4 de https://www.geeksforgeeks.org/operating-systems-set-16/
Vea QUIZ ON DEADLOCK para más preguntas.
Referencias:
http://www2.latech.edu/~box/os/ch07.pdf
http://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/7_Deadlocks.html
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA