PUERTA | PUERTA-CS-2003 | Pregunta 80

Supongamos que queremos sincronizar dos procesos simultáneos P y Q usando semáforos binarios S y T. El código para los procesos P y Q se muestra a continuación.

Process P:
while (1) {
W:
   print '0';
   print '0';
X:
}
	
Process Q:
while (1) {
Y:
   print '1';
   print '1';
Z:
}

Las instrucciones de sincronización solo se pueden insertar en los puntos W, X, Y y Z.

¿Cuál de las siguientes siempre conducirá a una salida que comience con ‘001100110011’?

(A) P(S) en W, V(S) en X, P(T) en Y, V(T) en Z, S y T inicialmente 1
(B) P(S) en W, V(T) en X, P(T) en Y, V(S) en Z, S inicialmente 1 y T inicialmente 0
(C) P(S) en W, V(T) en X, P(T) en Y, V (S) en Z, S y T inicialmente 1
(D) P(S) en W, V(S) en X, P(T) en Y, V(T) en Z, S inicialmente 1 y T inicialmente 0

Respuesta: (B)
Explicación: P(S) significa espera en el semáforo ‘S’ y V(S) significa señal en el semáforo ‘S’.

Wait(S)
{
    while (i <= 0) 
    --S;
}
  
  
Signal(S)
{
    S++;
}

Inicialmente, asumimos S = 1 y T = 0 para admitir la exclusión mutua en el proceso P y Q.
Dado que S = 1, solo se ejecutará el proceso P y esperar (S) disminuirá el valor de S. Por lo tanto, S = 0.
En el mismo instante, en el proceso Q, el valor de T = 0. Por lo tanto, en el proceso Q, el control permanecerá en el ciclo while hasta que el proceso P imprima 00 e incremente el valor de T llamando a la función V(T).
Mientras el control está en el proceso Q, el semáforo S = 0 y el proceso P estarían atascados en el ciclo while y no se ejecutarían hasta que el proceso Q imprima 11 y haga el valor de S = 1 llamando a la función V(S).
Todo este proceso se repetirá para dar como resultado 00 11 00 11 … .

 
Por lo tanto, B es la opción correcta.

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

Deja una respuesta

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