Una variable compartida x, inicializada a cero, es operada por cuatro procesos concurrentes W, X, Y, Z de la siguiente manera. Cada uno de los procesos W y X lee x de la memoria, lo incrementa en uno, lo almacena en la memoria y luego termina. Cada uno de los procesos Y y Z lee x de la memoria, lo reduce en dos, lo almacena en la memoria y luego termina. Cada proceso antes de leer x invoca la operación P (es decir, esperar) en un semáforo de conteo S e invoca la operación V (es decir, señal) en el semáforo S después de almacenar x en la memoria. El semáforo S se inicializa a dos. ¿Cuál es el valor máximo posible de x después de que todos los procesos completan su ejecución? (GATE CS 2013)
(A) -2
(B) -1
(C) 1
(D) 2
Respuesta: (D)
Explicación: los procesos pueden ejecutarse de muchas maneras, a continuación se muestra uno de los casos en los que x alcanza el valor máximo
Semaphore S is initialized to 2 Process W executes S=1, x=1 but it doesn't update the x variable. Then process Y executes S=0, it decrements x, now x= -2 and signal semaphore S=1 Now process Z executes s=0, x=-4, signal semaphore S=1 Now process W updates x=1, S=2 Then process X executes X=2
Así que la opción correcta es (D).
Vea la explicación del video de GeeksforGeeks:
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