INE5645
Laboratório 3 - Locks

Prof. Frank Siqueira - Turma A
Prof Lau Lung - Turma B


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

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


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.