Considere el siguiente procedimiento para el problema productor-consumidor que utiliza semáforos:
¿Cuál de las siguientes es VERDADERA?
(A) El productor podrá agregar un artículo al búfer, pero el consumidor nunca podrá consumirlo.
(B) El consumidor no retirará más de un artículo de la reserva.
(C) Se produce interbloqueo si el consumidor logra adquirir semáforos cuando el búfer está vacío.
(D) El valor inicial para el semáforo n debe ser 1 y no 0 para una operación sin interbloqueo.
Respuesta: (C)
Explicación: Inicialmente, no hay ningún elemento en el búfer.
Semáforo s=1 y semáforo n=0 .
Suponemos que inicialmente el control va al consumidor cuando el búfer está vacío.
semWait(s) disminuye el valor del semáforo ‘s’. Ahora, s = 0 y semWait(n) decrementa el valor del semáforo ‘n’.
Dado que el valor del semáforo ‘n’ se vuelve menor que 0, el control se atasca en el ciclo while de la función semWait() y surge un interbloqueo.
Por lo tanto, se produce un interbloqueo si el consumidor logra adquirir semáforos cuando el búfer está vacío.
Vea la explicación del video de GeeksforGeeks:
Comente a continuación si encuentra algo incorrecto en la publicación anterior.
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