El barbero durmiente

2
 El barbero durmiente Una barbería consiste de una sala de espera con s asientos y un salón con una silla de barbería. Hay c clientes y un barbero. Los Cli entes se alternan entre crecimiento del cabello y obtener un corte de cabello. El barbero duerme y se corta el cabello. Si no hay clientes para ser atendidos, el barbero duerme. Si un cliente quiere un corte de cabello y todas la sillas están ocupadas, entonces el cliente deja la barbería y se pierde el corte. Si hay sillas disponibles pero el barbero está ocupado, entonces el cliente espera en una de las sill as disponibles hasta que el barbero este libre. Si el barbero está dormido el cliente lo despierta. Tareas de programación Escribir un programa en java que resuelva el problema usando semáforos, sincronizando el barbero y l os cliente de acuerdo a las reglas dadas. El barbero y cada uno de los clientes deberán correr como hilos concurrentes y asíncronos que se ciclan por siempre. La longitud del tiempo que un cliente toma en que le crezca el cabello y el tiempo de un corte de cabello debe ser números aleatorios en milisegundos. El programa principal que inicia el barbero y los hilos cliente debe de correr con los siguiente parámetros que pueden ser configurables: - # de asientos : 4 por default - # de clientes : 9 por default - tiempo crecimiento del cabello : milisegundos - aleatorio multipl icado por 3000 ms por default - tiempo corte de cabello milisegundos - aleatorio multiplicado por 1000 ms por default Requerimientos funcionales La salida del programa debe contener los siguientes detalles. Para el cliente, cada cliente debe de: - indicar que numero de cliente es y cuando le crece el cabello - indicar que numero de cliente es y cuando necesita corte de cabello - indicar que numero de cliente es y cuando está esperando en la sala o cu ando se retira porque los asientos están llenos - indicar que numero de cliente es y cuando está recibiendo su corte de cabello Para el barbero, debe de: - indicar cuando esta libre y esperando por cliente (durmiendo) - cuando sienta a un cliente en su silla - cuando está cortando el cabello - termino el corte del cliente Entregables: - El proyecto se entregara el jueves 9 de Diciembre a las 11:59am a mas tardar - Se deben de mandar los siguientes archivos : 1. Código fuente : *.java 2.Archivos clase : *.class 3. Un archivo makefile con l as intrucciones de compilación 4. Un archivo readme que debe contener la siguiente informacion - Nombres y matricula del equipo -Sistema operativo

Transcript of El barbero durmiente

Page 1: El barbero durmiente

5/9/2018 El barbero durmiente - slidepdf.com

http://slidepdf.com/reader/full/el-barbero-durmiente 1/3

 

El barbero durmiente

Una barbería consiste de una sala de espera con s asientos y un salón con una silla de barbería. Hay c

clientes y un barbero. Los Clientes se alternan entre crecimiento del cabello y obtener un corte de

cabello. El barbero duerme y se corta el cabello. Si no hay clientes para ser atendidos, el barbero

duerme. Si un cliente quiere un corte de cabello y todas la sillas están ocupadas, entonces el cliente deja

la barbería y se pierde el corte. Si hay sillas disponibles pero el barbero está ocupado, entonces el cliente

espera en una de las sillas disponibles hasta que el barbero este libre. Si el barbero está dormido el

cliente lo despierta.

Tareas de programación

Escribir un programa en java que resuelva el problema usando semáforos, sincronizando el barbero y los

cliente de acuerdo a las reglas dadas. El barbero y cada uno de los clientes deberán correr como hilos

concurrentes y asíncronos que se ciclan por siempre. La longitud del tiempo que un cliente toma en que

le crezca el cabello y el tiempo de un corte de cabello debe ser números aleatorios en milisegundos.

El programa principal que inicia el barbero y los hilos cliente debe de correr con los siguiente

parámetros que pueden ser configurables:

- # de asientos : 4 por default

- # de clientes : 9 por default

- tiempo crecimiento del cabello : milisegundos - aleatorio multiplicado por 3000 ms por default

- tiempo corte de cabello milisegundos - aleatorio multiplicado por 1000 ms por default

Requerimientos funcionales

La salida del programa debe contener los siguientes detalles.

Para el cliente, cada cliente debe de:

- indicar que numero de cliente es y cuando le crece el cabello

- indicar que numero de cliente es y cuando necesita corte de cabello- indicar que numero de cliente es y cuando está esperando en la sala o cuando se retira porque los

asientos están llenos

- indicar que numero de cliente es y cuando está recibiendo su corte de cabello

Para el barbero, debe de:

- indicar cuando esta libre y esperando por cliente (durmiendo)

- cuando sienta a un cliente en su silla

- cuando está cortando el cabello

- termino el corte del cliente

Entregables:

- El proyecto se entregara el jueves 9 de Diciembre a las 11:59am a mas tardar

- Se deben de mandar los siguientes archivos :

1. Código fuente : *.java

2.Archivos clase : *.class

3. Un archivo makefile con las intrucciones de compilación

4. Un archivo readme que debe contener la siguiente informacion

- Nombres y matricula del equipo

-Sistema operativo

Page 2: El barbero durmiente

5/9/2018 El barbero durmiente - slidepdf.com

http://slidepdf.com/reader/full/el-barbero-durmiente 2/3

 

- Versión Compilador de Java

- Instrucciones de compilación

- Instrucciones de ejecución

- Problemas o errores conocidos

Page 3: El barbero durmiente

5/9/2018 El barbero durmiente - slidepdf.com

http://slidepdf.com/reader/full/el-barbero-durmiente 3/3