Un programa multiproceso P se ejecuta con una cantidad x de subprocesos y utiliza una cantidad y de bloqueos para garantizar la exclusión mutua mientras opera en ubicaciones de memoria compartida. Todos los bloqueos en el programa son no reentrantes , es decir, si un subproceso tiene un bloqueo l, entonces no puede volver a adquirir el bloqueo l sin liberarlo. Si un subproceso no puede adquirir un bloqueo, se bloquea hasta que el bloqueo esté disponible. El
valor mínimo de x y el valor mínimo de y juntos para los cuales la ejecución de P puede resultar en un interbloqueo son:
(A) x = 1, y = 2
(B) x = 2, y = 1
(C) x = 2 , y = 2
(D) x = 1, y = 1
Respuesta: (D)
Explicación:Los bloqueos reentrantes (recursivos) permiten que un subproceso vuelva a adquirir el bloqueo. Eso significa que el mismo proceso puede reclamar el bloqueo varias veces sin bloquearse a sí mismo. Esto evita que el subproceso se interbloquee. Esta es la principal ventaja de las cerraduras reentrantes sobre las cerraduras no reentrantes.
Los bloqueos no reentrantes (no recursivos) no permiten que un subproceso vuelva a adquirir el bloqueo. Eso significa que el mismo proceso no puede reclamar el bloqueo varias veces sin liberarlo. Entonces, si un subproceso/proceso no puede adquirir un bloqueo, se bloquea hasta que el bloqueo esté disponible. Esta situación está estancada.
Por lo tanto, solo un subproceso y un solo bloqueo pueden causar interbloqueo, si el subproceso intenta volver a adquirir el bloqueo.
Cuando tenemos más de un proceso o un bloqueo, el proceso/subproceso puede adquirir otro bloqueo para continuar, u otro proceso/subproceso puede adquirir un bloqueo para continuar.
Esta explicación es aportada por Mithlesh Upadhyay.
Cuestionario de esta pregunta
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