INE5645
Laboratório 4 - Semáforos

Prof. Frank Siqueira - Turma A

Prof Lau Cheuk Lung - Turma B

Departamento de Informática e Estatística
Universidade Federal de Santa Catarina
 

INE5645 | Descrição | Implementação | Apresentação | Dúvidas


Descrição

Neste exercício você deve implementar em Java um problema de controle de acesso a um restaurante utilizando semáforos.

Em um pequeno restaurante existem 12 mesas, cada uma podendo comportar até 4 pessoas. O restaurante funciona com sistema de buffet livre. As pessoas entram no restaurante e vão direto para a fila do buffet, que possui saladas, prato principal e sobremesa. O buffet comporta até 10 pessoas ao mesmo tempo se servindo.

As pessoas vão ao buffet se servir de saladas e do prato principal e, em seguida, procuram uma mesa para comer. Ao terminar de comer, a pessoa volta ao buffet para pegar a sobremesa, volta à mesa (que está reservada pra ele ainda) pra comer a sobremesa e pagar a conta para sair do restaurante.

O restaurante comporta até 70 clientes simultaneamente (48 nas mesas, 10 no buffet e 12 em uma fila de espera interna ao restaurante). Os demais clientes devem esperar em uma fila, fora do restaurante.

Cerca de 500 clientes almoçam por dia nesse restaurante.


Implementação

Implemente um programa que simule o funcionamento do restaurante usando semáforos, controlando a movimentação dos clientes: até 10 pessoas no buffet; até 4 pessoas comendo em cada uma das 12 mesas; e até 12 pessoas na fila de espera. O acesso ao restaurante também é um semáforo que comporta no máximo 70 clientes (threads).

Uma pessoa leva de 25 a 30 unidades de tempo para comer a salada e o prato principal e 5 a 6 unidades de tempo para comer a sobremesa. O tempo que uma pessoa gasta para se servir é de 4 a 6 unidades de tempo.

Crie 500 threads que representem os clientes. A cada movimentação de um cliente, imprima uma mensagem na tela.

Após implementar o programa, responda as seguintes perguntas:

  • Em quantas unidades de tempo todos os 500 clientes conseguem almoçar?
  • Se cada cliente esperar no máximo 40 unidades de tempo para entrar no restaurante, quantos desistirão depois de 3000 unidades de tempo de simulação ?
     


Apresentação

A atividade deve ser desenvolvida em duplas. O programa deve ser apresentado ao professor no laboratório até o dia 18/10. Os dois componentes do grupo devem estar presentes. Será verificado o funcionamento do programa e em seguida os alunos devem responder a questões sobre a forma como foram utilizados threads e semáforos no programa.

Podem ser atribuídas notas diferentes aos alunos de um grupo, dependendo das respostas às perguntas sobre o código do programa efetuadas pelo professor. Caso um dos alunos não esteja presente ou demonstre não conhecer o código do programa, será atribuída nota zero à atividade. Em caso de cópia do código de outro grupo, ambos terão nota igual a zero.


Dúvidas

f r a n k @ i n f . u f s c . b r

l a u . l u n g @ i n f . u f s c . b r


Mantida por Frank Siqueira. Atualizada em 16/10/2007.