next up previous
Next: Sobre a entrega Up: ep1 Previous: O problema

Seu arsenal

Você deve fazer este EP em C.

A sua implementação deve envolver dois processos, sem relação parent/child entre eles. A comunicação entre processos para indicar mudanças (de fila cheio para não-cheio, de vazio para não vazio) deve ser feita através de sinais Unix. O material sobre sinais está disponível na pasta 48 do xerox do CAMAT. A área de memória compartilhada deve ser implementada através das primitivas de shared memory disponíveis no Unix. O material sobre shared memory também está no xerox do CAMAT, e na página da disciplina há um exemplo de uso (dois processos que compartilham um buffer -- um escreve e outro lê).

Certos trechos do programa que acessarem dados compartilhados são regiões críticas, que precisam ser executadas com garantia de exclusão mútua. Identifique esses trechos (atenção para os acessos ao contador do número de elementos no buffer circular) e proteja-os usando um dos protocolos de entrada e saída de região crítica estudados em aula. Documente sua escolha.

Além de entregar os seus programas muito bem comentados, você deve entregar algumas estimativas sobre a disputa pela região crítica (por exemplo, os tempos médio, máximo e mínimo que o processo leva para obter o acesso).

Entregue também uma pequena explicação sobre que complicações apareceriam se tentássemos modificar sua implementação para resolver o problema mais geral, com $M$ produtores e $N$ consumidores concorrentes.


next up previous
Next: Sobre a entrega Up: ep1 Previous: O problema
Francisco Reverbel
2001-03-26