Sistemas Operativos | Gestión de Procesos | Pregunta 6 – Part 4

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

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *