You are on page 1of 2

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.

You might also like