Septiembre 2006

Anuncio
Examen de programación concurrente, Septiembre 2006. ETSI Informática, UNED 1
PARTE TEÓRICA
Regiones crı́ticas condicionales. Explicar su sintaxis, semántica, circuito de colas e
ilustrar con un ejemplo. (2pt)
Usando únicamente semáforos binarios, construir dos procedimientos genwait y gensignal para simular semáforos generales. Indicación: Puedes usar una variable para llevar
un contador, un semáforo que controle la exclusión mutua en los accesos/modificaciones
del contador y otro semáforo binario para bloquear/desbloquear los procesos.(2pt)
EJERCICIO
Una universidad tiene unos kioskos en los que hacer la matricula de forma electrónica. Cada kiosko tiene un proceso controlador que lee de un dispositivo de entrada los
datos de matrı́cula, entre ellos el dni y el código de carrera, y los introduce en un
buffer (común a todos los kioskos) de tamaño limitado. En otro lugar, unos procesos
matriculadores leen los datos de matricula del buffer, uno de los cuales es el código de
carrera elegido y comprueban si hay plazas libres en dicha carrera. Si hay plazas en la
carrera se disminuye en uno el número de plazas libres en esa carrera y se guarda el
dni de la persona matriculada en la lista de matriculados de esa carrera.
Escribir un programa en pseudocódigo que simule el comportamiento de los controladores y los matriculadores, usando monitores. El código de lectura de los dispositivos
de entrada que realizan los controladores no nos interesa, y debe indicarse mediante un
comentario y unos puntos suspensivos, tras los cuales otro comentario nos informa de
que tenemos los datos en una variable, por ejemplo:
// Leemos los datos de matrı́cula del dispositivo de entrada
...
// El DNI del estudiante está en la variable datos.dni y el código de carrera en datos.carrera
Elegir adecuadamente las estructuras de datos necesarias. Como es habitual, debe
conseguirse el mayor grado de concurrencia posible, manteniendo la coherencia de los
datos. Para que el desarrollo y la corrección de la simulación puedan seguirse desde
fuera, los procesos deben emitir por pantalla mensajes explicativos de lo que hacen,
en especial en relación con la concurrencia y la sincronización de procesos. Entre otros
mensajes, un proceso controlador debe indicar el dni y la carrera elegida por la persona
que quiere matricularse. Cuando se intenta la operación de matriculación, el matriculador debe indicar si la matriculación ha tenido éxito o no. Deben evitarse a toda costa
los interbloqueos y la inanición. (6pt)
Descargar