Está en la página 1de 1

Punto 5

viernes, 8 de septiembre de 2023 16:48

OPCION 2

semaforoS2 = 0 # Inicialmente no disponible hasta que se ejecute R1

proceso R:
Ejecutar R1
Ejecutar R2
Signal(semaforoS2)
OPCION 1
Proceso S:
Ejecutar S1
semaforoR1 = 1 # Inicialmente disponible Wait(semaforoS2)
semaforoR2 = 1 # Inicialmente disponible EjecutarS2
semaforoS1 = 1 # Inicialmente disponible
semaforoS2 = 0 # Inicialmente no disponible hasta que se ejecute R1

proceso R: Sí, el código que proporcionaste parece estar bien diseñado para asegurarte de que S2
Wait(semaforoR1) no se ejecute hasta que R1 haya ejecutado R1. Aquí está el análisis del código:
Ejecutar R1 1. semaforoS2 se inicializa en 0, lo que significa que al comienzo no está disponible.
Signal(semaforoS2) 2. En el proceso R, primero se ejecuta R1 y luego R2. Luego, se llama a
Wait(semaforoR2) Signal(semaforoS2), lo que libera el semáforo semaforoS2, permitiendo que el proceso
S continúe su ejecución.
Ejecutar R2
3. En el proceso S, primero se ejecuta S1. Luego, se encuentra con Wait(semaforoS2),
que espera a que semaforoS2 se libere antes de continuar ejecutando S2.
Proceso S: Con esta estructura, S2 no se ejecutará hasta que R1 haya ejecutado R1 y haya
Wait(semaforoS1) liberado semaforoS2. Por lo tanto, el código parece cumplir con el requisito de
Ejecutar S1 sincronización que mencionaste en tu pregunta original.
Wait(semaforoS2)
EjecutarS2

TP3 página 1

También podría gustarte