Trabalho 2012.1: Problema da Lata de Biscoito

Lata de biscoito
O problema da Lata de Biscoito é um problema clássico de programação concorrente que demonstra o uso de recurso complartilhado com exclusão mútua e implementação de política de acesso a esse recurso. Na literatura esse problema é conhecido como "Cookie Jar Problem".
 
Parte 1: Lata infinita

Seja uma lata de biscoito que nunca fica vazia  (o melhor tipo!) compartilhada por duas irmãs, Judy e Tina, usando a seguinte regra (não tão justa): Judy (irmã mais nova) somente pode pegar um biscoito da lata após Tina (a irmã mais velha) ter pego biscoito em 2 (duas) ocasiões diferentes, enquanto Tina pode pegar biscoitos na lata quando quiser. Desenvolva um algoritmo que modele Judy e Tina como dois processos independentes e a Lata de Biscoito como um recurso compartilhado. Cada uma das irmãs devem tentar pegar o biscoito em um intervalo de tempo aleatório entre 2 e 5 segundos. 

Parte 2: Lata finita

Seja uma lata de biscoito compartilhada por duas irmãs, Judy e Tina, usando a seguinte regra (não tão justa): Judy (irmã mais nova) somente pode pegar um biscoito da lata após Tina (a irmã mais velha) ter pego biscoito em 2 (duas) ocasiões diferentes, enquanto Tina pode pegar biscoitos na lata quando quiser. Quando a lata ficar vazia, Judy ou Tina alerta a mãe que enche novamante a lata com biscoitos e as crianças podemo continuar comendo. Desenvolva um algoritmo que modele Judy, Tina e Mãe como três processos independentes e a Lata de Biscoito como um recurso compartilhado com capacidade para 15 (quinze) biscoitos. Cada uma das irmãs devem tentar pegar o biscoito em um intervalo de tempo aleatório entre 2 e 5 segundos. 

O trabalho prático consiste em escrever um programa em CC++Java ou Python para simular a lata de biscoitos. Deve ser construída uma interface gráfica mostrando o acesso à lata de biscoito. Ao final da execução  deve ser calculado: quantidade de biscoitos comidos por cada irmã, tempo médio de espera da Judy. Considere que o programa deve funcionar durante 2 min.

Comments