2do Parcial Junio 2018, Problema 3 a)

2do Parcial Junio 2018, Problema 3 a)

de Nicolas Grosso San Roman -
Número de respuestas: 1

Hola!

  1. Refiriéndome a los procedimientos "endDescargar" y "endLlenar", veo que la prioridad para despertar al inspector se da porque se considera la condición de if prioridadInspector antes que considerar despertar a las máquinas, esto es así?
  2. Y respecto a esto, la semántica debería ser de Hansen? ya que si fuera de Mesa, si despierto al inspector, tal vez no ejecuta él y no logra activar la flag de prioridadInspector. Si fuera de Hansen, enseguida despierto al inspector ya ejecuta él y activa la flag. Es correcto?
  3. Volviendo a la sección de las condiciones para despertar en "endDescargar" y "endLlenar". Si la prioridad la define el orden en que despertamos a los procedimientos, cuando se considera primero un else if antes que el otro, no hay una prioridad entre despertar a las diferentes máquinas? Es decir, "endLlenar" chequea: else if (cantEsperaProd > 0), lo cual si se cumple la condición va a despertar a una máquina generadora, pero por qué no se considera antes el else if de cantEsperaEmb>0 en vez del otro? Supuse que iban a ser como prioridades cruzadas pero en ambos procedimientos se considera a los productores antes que los consumidores.

En respuesta a Nicolas Grosso San Roman

Re: 2do Parcial Junio 2018, Problema 3 a)

de Jorge Merlino -
  1. Si, es correcto
  2. ¿En que caso te parece que afecta la semántica del monitor? Los procedimientos endDescargar y endLlenar hacen el signal al final por lo que no puede ejecutar otro que el inspector si es despertado ahí.
  3. La letra no dice nada sobre las prioridades de las otras dos máquinas así que cualquier solución está bien.