Uso de semáforos

Este projeto faz parte do PPOS v2.

Este projeto consiste em usar seu sistema, com as funções de semáforos implementadas no projeto anterior, para construir um sistema produtor/consumidor com buffer limitado.

Sistema produtor/consumidor

O código básico de um sistema produtor/consumidor é o seguinte:

Produtor

produtor
{
   while (true)
   {
      task_sleep (1000)
      item = random (0..99)

      down (s_vaga)

      down (s_buffer)
      insere item no buffer
      up (s_buffer)

      up (s_item)
   }
}

Consumidor

consumidor
{
   while (true)
   {
      down (s_item)

      down (s_buffer)
      retira item do buffer
      up (s_buffer)

      up (s_vaga)

      print item
      task_sleep (1000)
   }
}

Observações

p1 produziu 37
p2 produziu 11
                             c1 consumiu 37
p3 produziu 64
p1 produziu 21
                             c2 consumiu 11
p2 produziu 4
                             c1 consumiu 64
...                          ...

Observe que os números são consumidos na sequência em que foram produzidos, o que caracteriza o comportamento FIFO do buffer.

Arquivos

Os seguintes arquivos são relevantes para este projeto:

Outras informações