PUERTA | PUERTA CS 2013 | Pregunta 65 – Part 6

Una variable compartida x, inicializada a cero, es operada por cuatro procesos concurrentes W, X, Y, Z de la siguiente manera. Cada uno de los procesos W y X lee x de la memoria, lo incrementa en uno, lo almacena en la memoria y luego termina. Cada uno de los procesos Y y Z lee x de la memoria, lo reduce en dos, lo almacena en la memoria y luego termina. Cada proceso antes de leer x invoca la operación P (es decir, esperar) en un semáforo de conteo S e invoca la operación V (es decir, señal) en el semáforo S después de almacenar x en la memoria. El semáforo S se inicializa a dos. ¿Cuál es el valor máximo posible de x después de que todos los procesos completan su ejecución?

(A) -2
(B) -1
(C) 1
(D) 2

Respuesta: (D)
Explicación:
Antecedentes Explicación:

Una sección crítica en la que el proceso puede ser cambiar variables comunes, actualizar tablas, escribir un archivo y realizar otra función. El problema importante es que si un proceso se está ejecutando en su sección crítica, no se permitirá que ningún otro proceso se ejecute en su sección crítica. Cada proceso debe solicitar permiso para ingresar a su sección crítica. Un semáforo es una herramienta para la sincronización y se usa para eliminar el problema de la sección crítica, que es que dos procesos no pueden ejecutarse simultáneamente, por lo que para eliminar estas dos operaciones de señal se usan las llamadas espera y señal, que se usa para eliminar la exclusión mutua de la sección crítica. como una de las primitivas de sincronización más importantes sin signo, porque puede construir muchas otras. Decrementar el semáforo se llama adquirirlo o bloquearlo,

Solución :

Dado que el valor inicial del semáforo es 2, dos procesos pueden ingresar a la sección crítica a la vez; esto es malo y podemos ver por qué.
Digamos que X e Y son los procesos. X incrementa x en 1 y Z disminuye x en 2. Ahora, Z almacena de nuevo y después de esto X almacena de nuevo. Entonces, el valor final de x es 1 y no -1 y dos operaciones de señal hacen que el valor del semáforo sea 2 nuevamente. Entonces, ahora W y Z también pueden ejecutarse así y el valor de x puede ser 2, que es el máximo posible en cualquier orden de ejecución de los procesos. (Si el semáforo se inicializa en 1, procesado se ejecutará correctamente y obtenemos el
valor final de x como -2).

La opción (D) es la respuesta correcta.

Otra solución:

los procesos pueden ejecutarse de muchas maneras, a continuación se muestra uno de los casos en los que x alcanza el valor máximo. El semáforo S se inicializa en 2.
El proceso W ejecuta S=1, x=1 pero no actualiza la variable x.
Luego el proceso Y ejecuta S=0, decrementa x, ahora x= -2 y señala el semáforo S=1
Ahora el proceso Z ejecuta s=0, x=-4, señala el semáforo S=1
Ahora el proceso W actualiza x=1, S =2 Entonces el proceso X ejecuta X=2
Así que la opción correcta es D

Otra solución:

S es un semáforo de conteo inicializado en 2, es decir, dos procesos pueden entrar en una sección crítica protegida por S. W, X lee la variable, la incrementa en 1 y la vuelve a escribir. Y, Z puede leer la variable, decrementarla en 2 y volver a escribirla.
Cada vez que se ejecuta Y o Z, el conteo se reduce en 2. Entonces, para tener la suma máxima, debemos copiar la variable en uno de los procesos que aumenta el conteo, y al mismo tiempo el proceso decreciente debe ejecutarse en paralelo, de modo que lo que sea que escriben de nuevo en la memoria se pueden anular incrementando el proceso. Entonces, en efecto, el decremento nunca sucedería.

Enlaces relacionados:
https://www.geeksforgeeks.org/introduction-of-process-synchronization/
http://geeksquiz.com/operating-systems-process-management-question-11/ para obtener una explicación

Esta solución es aportada por Nitika Bansal

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 *