Nesta atividade você deve
controlar o acesso concorrente de alunos a livros em uma estante.
Descrição
Uma estante possui 10 livros distintos sobre programação
paralela e distribuída. Um professor pede para cada aluno de uma turma de 60
alunos fazer uma monografia usando exatamente 5 desses livros. O prazo de
entrega é 800 unidades de tempo. Ao final da aula os alunos correm para esta
estante.
Cada um dos livros de 1 a 5 leva de 3 a 5 unidades
de tempo para ser lido, enquanto a leitura dos livros de 6 a 10 leva de 7 a 9
unidades de tempo. Um aluno, ao chegar à estante, tenta pegar até 5 livros
para levar à mesa de leitura, onde ele consegue ler um livro por vez. Assim
que termina de ler um livro, o aluno o devolve pra estante, tenta pegar mais
livros caso ainda não tenha atingido o limite de 5 livros, e então volta para
a mesa de leitura para completar o trabalho.
Por exemplo, um aluno que consegue pegar 5 livros
na primeira tentativa deve ler os livros e devolver cada um à medida que
terminar de ler. Um outro aluno que pegou apenas 3 livros deve ler o
primeiro, devolvê-lo, tentar pegar mais livros em apenas uma tentativa (pode
voltar de mãos vazias), voltar à mesa para ler outro livro, ir à estante para
devolver, e assim por diante, até ter lido os 5 livros necessários para fazer
a monografia.
A seqüência de acesso aos livros deve ser
aleatória em cada tentativa, sem repetição de um mesmo livro. Os alunos que
não conseguiram pegar nenhum livro na primeira tentativa devem fazer novas
tentativas em uma nova seqüência aleatória.
Implementação
Você deve implementar o problema descrito acima em
Java usando Threads para representar os alunos e Locks para controlar o
acesso aos livros da estante.
A saída do programa deve mostrar a dinâmica do
acesso aos livros. Ao final da execução, devem ser fornecidas respostas para
as seguintes perguntas:
· Após 800 unidades de tempo, quantos alunos conseguiram entregar o
trabalho ao professor no prazo?
· Quais foram os livros mais lidos?
· Quantas unidades de tempo são necessárias para que todos os alunos
consigam concluir o trabalho?
· Com o prazo de 800 unidades de tempo, quantos livros a mais são
necessários para que todos os alunos possam concluir o trabalho? Considere o
tempo médio de 6 unidades de tempo para leitura dos novos livros.
Observação: A estante não é região critica, apenas
os livros.
Apresentação
A atividade deve ser
desenvolvida em duplas. O programa deve ser apresentado ao professor no
laboratório no dia 04/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 o código
do programa referentes ao uso de mecanismos de comunicação entre processos.
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 ao aluno. 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
25/09/2007.
|