Cierto cálculo genera dos arrays a y b tales que a[i]=f(i) para 0 ≤ i < n y b[i]=g(a[i]) para 0 ≤ i < n. Supongamos que este cálculo se descompone en dos procesos concurrentes X e Y, de modo que X calcula el arreglo a e Y calcula el arreglo b. Los procesos emplean dos semáforos binarios R y S, ambos inicializados a cero. La array a es compartida por los dos procesos. Las estructuras de los procesos se muestran a continuación.
Process X: Process Y: private i; private i; for (i=0; i < n; i++) { for (i=0; i < n; i++) { a[i] = f(i); EntryY(R, S); ExitX(R, S); b[i]=g(a[i]); } }
¿Cuál de las siguientes representa las implementaciones CORRECTAS de ExitX y EntryY?
(A)
ExitX(R, S) { P(R); V(S); } EntryY (R, S) { P(S); V(R); }
(B)
ExitX(R, S) { V(R); V(S); } EntryY(R, S) { P(R); P(S); }
(C)
ExitX(R, S) { P(S); V(R); } EntryY(R, S) { V(S); P(R); }
(D)
ExitX(R, S) { V(R); P(S); } EntryY(R, S) { V(S); P(R); }
(A) A
(B) B
(C) C
(D) D
Respuesta: (C)
Explicación:
The purpose here is neither the deadlock should occur nor the binary semaphores be assigned value greater than one. A leads to deadlock B can increase value of semaphores b/w 1 to n D may increase the value of semaphore R and S to 2 in some cases
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