INE5645
Laboratório 2 - Locks

Prof. Lau Cheuk Lung - Turma A
Prof João Bosco M. Sobral- 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: E:\My Documents\aaUFSC\Ensino\INE5645 - PPD\Web\Trabalhos\2011-2\Lab2\livros.gif

Descrição

Uma estante possui 8 livros distintos sobre a obra literária de um autor. Um professor pede para cada equipe de 4 alunos, de uma turma de 60 alunos, fazer uma monografia usando exatamente 5 desses livros. Todos os alunos de uma equipe devem ler os 5 livros obtidos. O prazo de entrega é 200 unidades de tempo (por exemplo, 200 x 100ms = 20s). Cada equipe tem um líder o qual é responsável por ir a estante e tentar pegar um livro. Cada líder pode pegar um livro por vez.

De início, os alunos da equipe devem estar em estado de espera (await) aguardando o líder obter um livro. Se o líder conseguir pegar um livro, ele lê esse livro e, em seguida, disponibiliza-o para os outros alunos da equipe invocando signallAll. Os outros alunos da equipe, ao perceberem que o líder terminou de ler livro, devem concorrer para obtê-lo. Como apenas um vai conseguir, os outros devem chamar await. O aluno que conseguiu ler devolve o livro (unlock) e sinaliza os que não leram ainda para que concorram pelo livro. Quando os 4 alunos tiverem terminado de ler esse livro, o líder deve devolvê-lo e tenta obter os outros, até atingir os cincos necessários para escrever a monografia.

Cada um dos livros de 1 a 4 leva 4 unidades de tempo para ser lido, enquanto que a leitura dos livros de 5 a 8 leva 7 unidades de tempo.

A sequência de acesso aos livros deve ser aleatória em cada tentativa do líder, sem repetição de um mesmo livro. Os alunos líderes que não conseguiram pegar nenhum livro na primeira tentativa devem fazer novas tentativas em uma nova sequê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 200 unidades de tempo, quantas equipes conseguiram entregar o trabalho ao professor no prazo?

· Quais foram os livros mais lidos?

· Quantas unidades de tempo são necessárias para que todas as equipes consigam concluir o trabalho?

· Com o prazo de 200 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 individualmente ou em duplas. O programa deve ser apresentado ao professor no laboratório até o dia 25/09. 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 monitores no programa.

Trabalhos entregues com atraso terão desconto automático de 2 pontos por semana de atraso. Após a segunda semana (14 dias após o fim do prazo original), o trabalho não mais será aceito, ou seja, terá nota zero.

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

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


Mantida por Lau Cheuk Lung. Atualizada em 03/09/2013.