Up: Examen de Programación Concurrente Previous: El almacén de las

Subsecciones

- Cuestión 1
- Cuestión 2
- Cuestión 3

# Preguntas cortas

Las respuestas a esta pregunta deben entregarse en esta misma hoja del enunciado.

Nombre:
Número de matrícula: Grupo:

## Cuestión 1

Tras un análisis de una aplicación concurrente se diseña un sistema con dos procesos y y un recurso compartido . Cuando se traduce a paso de mensajes se añade un proceso Gestor_C para controlar el recurso . Este proceso incluye una sentencia `SELECT` Qué procesos pueden enviar mensajes a un canal c que aparece en la recepción de una rama de dicha `SELECT`?

  , y
  O bien o bien , según se haga el `GetChannel (c)`.
  y indistintamente.

## Cuestión 2

Complétese la siguiente tabla que equipara los diferentes elementos de la implementación de un recurso mediante monitores y paso de mensajes:

Monitores | Paso de mensajes
Nombre de operaciones del monitor
Canal para petición de ejecución de operaciones
Entrada a monitor en exclusión mutua
Verificación de la guarda booleana tras un `WHEN` y recepción del mensaje correspondiente a la operación
Llamada a una operacion del monitor para la que se usa `canal_op` suministrando `datos_entrada` y recibiendo `datos_salida`
`Send (canal_op, datos_entrada); Receive (canal_retorno, resultados)`
Variables del monitor accesibles en exclusión mutua por todos los procesos
Variables locales del proceso que implementa el recurso activo
Precondición de una operación que no se cumple y que provoca un `Delay`
Condición de rama `WHEN` que no se cumple
`Continue (variable_condition)`
Actualización de variables de manera que en la siguiente ejecución de la `SELECT` se verifica la condición de una de sus ramas
Cuerpo dentro de una operación entre la comprobación de precondiciones y el código que realiza los `Continue` necesarios
Cuerpo dentro de una rama de la `SELECT` `WHEN cond, Receive (canal, d) DO` cuerpo

## Cuestión 3

Estúdiese el siguiente programa concurrente con paso de mensajes, y descríbase en el recuadro inferior vacío las situaciones (esto es, los valores admisibles para ) en las que no se producirán errores, ni interbloqueos, ni inanición en el programa, y el programa terminará correctamente. Nota: la rama ELSE de la SELECT se ejecuta cuando todas las expresiones booleanas de las guardas son falsas, independientemente de que haya o no mensajes encolados en los canales por los que reciben los Receive.

Up: Examen de Programación Concurrente Previous: El almacén de las