Produtor/Consumidor POSIX
Problema
Este projeto consiste em usar semáforos POSIX para construir um sistema produtor/consumidor com buffer limitado. O código básico de um sistema produtor/consumidor é o seguinte:
produtor ()
{
while (true)
{
pause = random (0..3)
sleep (pause)
down (s_vaga)
down (s_buffer)
item = random (0..999)
insere item no buffer
up (s_buffer)
up (s_item)
print item
}
}
consumidor ()
{
while (true)
{
down (s_item)
down (s_buffer)
retira item do buffer
up (s_buffer)
up (s_vaga)
print item
pause = random (0..3)
sleep (pause)
}
}
Observações
As principais variáveis necessárias para implementar o projeto são:
item: valor inteiro entre 0 e 999buffer: fila de inteiros, inicialmente vazia, acessada com política FIFO. Deve ser usada a implementação de fila circular construída anteriormente. A fila pode conter até 5 elementos.s_buffer,s_item,s_vaga: semáforos, devidamente inicializados
O sistema implementado deve ter 3 produtores e 2 consumidores. Ele deve produzir na tela uma saída com formato similar a este:
p1 produziu 337
p2 produziu 441
c1 consumiu 337
p3 produziu 649
p1 produziu 21
c2 consumiu 441
p2 produziu 178
c1 consumiu 649
... ...
A entregar
Entregar o código implementado, sem esquecer de identificar o(s) autor(es).