Sistemas Operativos | Sincronización de Procesos | Pregunta 5

La instrucción atomic-fetch-and-set x, y establece incondicionalmente la ubicación de memoria x en 1 y obtiene el valor anterior de x en y sin permitir ningún acceso intermedio a la ubicación de memoria x. Considere la siguiente implementación de las funciones P y V en un semáforo binario.

void P (binary_semaphore *s) {
  unsigned y;
  unsigned *x = &(s->value);
  do {
     fetch-and-set x, y;
  } while (y);
}

void V (binary_semaphore *s) {
  S->value = 0;
}

¿Cuál de las siguientes es verdadera?
(A) Es posible que la implementación no funcione si el cambio de contexto está deshabilitado en P.
(B) En lugar de usar buscar y configurar, se puede usar un par de carga/almacenamiento normales
(C) La implementación de V es incorrecta
(D) El código no implementa un semáforo binario

Respuesta: (A)
Explicación: Hablemos de la operación P(). Almacena el valor de s en x, luego obtiene el valor anterior de x, lo almacena en y y establece x como 1. El ciclo while de un proceso continuará para siempre si algún otro proceso no ejecuta V() y establece el valor de s como 0. Si el cambio de contexto está deshabilitado en P, el ciclo while se ejecutará para siempre ya que ningún otro proceso podrá ejecutar V().

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 *