PUERTA | PUERTA CS 2018 | Pregunta 41

Considere la siguiente solución al problema de sincronización productor-consumidor. El tamaño del búfer compartido es N. Se definen tres semáforos vacío, lleno y mutex con valores iniciales respectivos de 0, N y 1. El semáforo vacío indica el número de ranuras disponibles en el búfer, para que el consumidor pueda leer. El semáforo completo indica el número de ranuras disponibles en el búfer, para que el productor escriba. Las variables de marcador de posición, indicadas por P, Q, R y S, en el siguiente código se pueden asignar vacías o llenas . Las operaciones de semáforo válidas son: wait() y sigmal() .

8

¿Cuál de las siguientes asignaciones a P, Q, R y S producirá la solución correcta?

(A) P: lleno , Q: lleno , R: vacío , S: vacío
(B) P: vacío , Q: vacío , R: lleno , S: lleno
(C) P: lleno , Q: vacío , R: vacío , S: lleno
(D) P: vacío , Q: lleno , R: lleno , S: vacío

Respuesta: (C)
Explicación: Dado,
Vacío = 0
Completo = N
Mutex = 1

Dado que el valor del semáforo vacío es 0, no puede esperar el semáforo vacío en el primer intento.

Nota: el semáforo vacío indica el número de ranuras llenas, por lo que el proceso del productor debe tratar con semáforos vacíos y mutex. el semáforo completo indica el número de ranuras vacías, por lo que el proceso del consumidor debe tratar con semáforos completos y mutex.

La opción (A) provoca inanición.
La OPción (B) provoca inanición.
Opción (D) dado que el número de ranuras llenas es 0 inicialmente indicado por un semáforo vacío , por lo que el proceso del consumidor no puede consumir. Entonces, esta implementación es incorrecta.

Solo P: vacío , Q: lleno , R: lleno , S: vacío es el orden correcto para garantizar una implementación sin puntos muertos y sin hambre.

La opción (C) es correcta.

Vea la explicación del video de GeeksforGeeks:

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 *