Considere la siguiente solución de sincronización de dos procesos.
Process 0 Process 1 Entry: loop while (turn == 1); Entry: loop while (turn == 0); (critical section) (critical section) Exit: turn = 1; Exit turn = 0;
La variable compartida turno se inicializa a cero. ¿Cuál de las siguientes es VERDADERA?
(A) Esta es una solución correcta de sincronización de dos procesos.
(B) Esta solución viola el requisito de exclusión mutua.
(C) Esta solución viola el requisito de progreso.
(D) Esta solución viola el requisito de espera limitada.
Respuesta: (C)
Explicación: Un requisito de exclusión mutua impide el acceso simultáneo a un recurso compartido. Dado que, el giro del semáforo se inicializa a cero y este valor del semáforo cambia solo después de la sección crítica para procesos determinados. Por lo tanto, esto garantiza como máximo un proceso en la sección crítica a la vez, es decir, se cumple el requisito de exclusión mutua.
Progreso significa que el proceso eventualmente debería poder completarse. Pero directamente, el Proceso 1 no puede ir a la sección crítica ya que el valor del semáforo es 0 inicialmente y este proceso 1 puede pasar a CS solo después del proceso 0. Por lo tanto, el requisito de progreso no se cumple.
La espera limitada significa que ningún proceso debe esperar un recurso durante una cantidad infinita de tiempo. El proceso 1 puede ir directamente y el proceso 1 puede ir después del proceso 0 a la sección crítica. Entonces, la espera limitada está satisfecha.
La opción (C) es correcta.
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