Q. 39 A certain computation generates two arrays a and b such that a[i]=f(i)
for 0 < i < n and b6i @ = g^a6i @h for 0 # i 1 n. Suppose this computation
is decomposed into two concurrent processes X and Y such that X computes
the array a and Y computes the array b. The processes employ two binary
semaphores R and S , both initialized to zero. The array a is shared by the two
processes. The structures of the processes are shown below.
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]);
}
Which one of the following represents the CORRECT implementations of ExitX
and 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);
}
Answer: (c)
Explanation:












