Las operaciones de espera y señal de un monitor se implementan utilizando semáforos de la siguiente manera. En el siguiente,
- x es una variable de condición,
- mutex es un semáforo inicializado a 1,
- x_sem es un semáforo inicializado a 0,
- x_count es el número de procesos que esperan en el semáforo x_sem, inicialmente 0, el siguiente es un semáforo inicializado en 0,
- next_count es el número de procesos que esperan en el semáforo next, inicialmente 0.
El cuerpo de cada procedimiento que es visible fuera del monitor se reemplaza con lo siguiente:
P(mutex); body of procedure if (next_count > 0) V(next); else V(mutex); |
Cada ocurrencia de x.wait se reemplaza con lo siguiente:
x_count = x_count + 1; if (next_count > 0) V(next) else V(mutex); ------------------------------------------------------------ E1; x_count = x_count - 1; |
Cada ocurrencia de x.signal se reemplaza con lo siguiente:
if (x_count > 0) { next_count = next_count + 1; ------------------- E2; P(next), next_count = next_count - 1; } |
Para la implementación correcta del monitor, las sentencias E1 y E2 son, respectivamente,
(A) P(x_sem), V(siguiente)
(B) V(siguiente), P(x_sem)
(C) P(siguiente), V(x_sem) )
(D) P(x_sem), V(x_sem)
Respuesta: (B)
Explicación:
Cuestionario de esta pregunta
Comente a continuación si encuentra algo incorrecto en la publicación anterior
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