Programación Concurrente – 2007 Práctica Nº4 – Plan 2003 Pasaje de Mensajes Sincrónico - Asincrónico Nota: En todos los ejercicios el tiempo debe representarse con la función delay 1. Supongamos que tenemos una abuela que tiene dos tipos de lápices para dibujar, de colores y lápices negros. Además tenemos tres clases de niños que quieren dibujar con los lápices: los que quieren usar sólo los lápices de colores, los que usan sólo los lápices negros, y los niños que usan cualquier tipo de lápiz. Implemente un código para cada clase de niño de manera que ejecute pedido de lápiz, lo use por 10 minutos y luego lo devuelva y además el proceso abuela encargada de asignar los lápices. Implementar utilizando pasaje de mensajes asincrónico. Se deben modelar los procesos niño, el proceso abuela y los procesos lápices. 2. Supongamos que existen N niños que corren una carrera, para esto todos los niños deben ubicarse en el punto de partida antes de comenzar la carrera. Modele el problema de dos formas: a. utilizando pasaje de mensaje asincrónico y procesos que representan a los niños y un proceso coordinador el cual es el encargado de largar la carrera cuando los N niños están ubicados en la largada. b. utilizando pasaje de mensaje asincrónico y procesos que representan a los niños, es decir, sin utilizar ningún otro proceso auxiliar. No se puede suponer ningún orden en la llegada de los niños al punto de partida de los niños. 3. En una sala de baile deben entrar como mínimo dos bailarines. Existen cuatro tipos de bailarines los de danza (A), los de tango (B), los de salsa (C) y los de rock (D). En la sala siempre debe haber un bailarín A y uno D. Además la cantidad de bailarines A debe ser mayor que la cantidad de bailarines B y que la cantidad de bailarines C. Dentro de la sala los bailarines bailan 5 minutos y luego deben intentan retirarse de la sala. Modelice el problema utilizando pasaje de mensajes asincrónico. 4. Suponga que se quiere modelizar el siguiente problema: existen N permisos que son utilizados cada vez que una persona entra a un area restringida de una empresa. La persona llega a la empresa y solicita un permiso para entrar al área restringida, si el mismo no le es otorgado en 10 minutos la persona se retira de la empresa. En caso de que es permiso le sea otorgado antes de los 10 minutos la persona entra al área restringida durante 5 minutos y luego se retira. Modele el problema utilizando pasaje de mensajes asincrónico. Analice las siguientes preguntas: a) De acuerdo a su implementación si una persona se retira de la sala de espera para entrar al área restringida porque no puede esperar más, nunca se le será asignada una silla? b) Si cada persona entrara más de una vez a la sala su implementación sigue funcionando? 5. Suponga que tiene que controlar una planta envasadora de pastas, para ello existen 4 máquinas dispuestas secuencialmente que trabajan de la siguiente manera: la primera deposita las pastas dentro de una caja, la segunda toma la caja y la deposita sobre una cinta cada 3 segundos, la tercera cuando detecta la caja le tira harina para que no se peguen; por último la cuarta máquina, cuando detecta la caja la tapa. Además, existe una quinta máquina que cuenta la cantidad de cajas de pastas realizadas. Implementar utilizando pasaje de mensajes sincrónico. 6. Un server tiene dos impresoras, A y B, que son similares pero no idénticas. Además existen tres clases de clientes que utilizan las impresoras: los que usan sólo la A (1), los que usan sólo la B (2) y los que pueden usar cualquiera de las dos (3). El server debe trabajar de la siguiente manera: a. Si la impresora A está libre y un proceso tipo (1) la requiere se la otorga. b. Si la impresora B está libre y un proceso tipo (2) la requiere se la otorga. c. Los procesos (3) solo van a poder acceder a la impresora si no hay pedidos de los procesos (1) y (2).
Desarrolle una implementación con pasaje de mensaje sincrónico. 6. Se desea modelar el funcionamiento de un banco el cual se encarga de cobrar únicamente el servicio de seguro de sus clientes, en el cual existen 5 cajas donde se cobra. Existen P personas que desean pagar su seguro en el banco. Para esto cada una selecciona la caja donde hay menos personas esperando, una vez seleccionada espera a ser atendido según el orden de llegada. Cuando lo atienden, si esperó más de 15 minutos entonces el banco le regala el cobro del servicio, en caso contrario, debe abonar una cierta cantidad dependiendo de la categoría de cliente (en caso de no pagar justo el empleado debe darle el vuelto). Si la persona esperó más de 15 minutos, puede optar por levantar una queja. En ese caso, una vez que se retiro de la caja (sin pagar), se dirige al departamento de quejas donde un supervisor toma los datos de la persona (DNI de la persona, monto) y el número de caja que lo atendió. Cuando se han levantado más de 20 quejas para una misma caja el supervisor cierra la caja, dejando pasar gratis a todas las personas que estaban esperando en ella. Implemente utilizando pasaje de mensajes sincrónico o asincrónico según crea conveniente. Aclaraciones: ¾ Existe una función Costo que retorna la cantidad que debe pagar quien la invoca. ¾ Suponer que nunca se necesitará cerrar todas las cajas. ¾ Existe una función que dado el dni de la persona devuelve si la misma quiere o no realizar una queja. ¾ MAXIMICE LA CONCURRENCIA.