====== 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 999 * ''buffer'' : 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).