Filas de mensagens POSIX

O objetivo deste projeto é usar o mecanismo de filas de mensagens POSIX para construir aplicações comunicantes.

Problema

Construir um sistema com dois processos independentes A e B, onde A sorteia pares de números inteiros aleatórios n1 e n2 e os envia a B; o processo B recebe os números aleatórios e devolve sua soma s ao processo A.

Comportamento do processo A:

estabelece o canal de comunicação
while (true)
{
   n1 = random() % 100
   n2 = random() % 100
   envia n1 e n2 a B
   recebe soma de B
   escreve n1, " + ", n2, " = ", soma
}

Comportamento do processo B:

estabelece o canal de comunicação
while (true)
{
   recebe n1 e n2 de A
   soma = n1 + n2
   aguarda 1 segundo
   envia soma a A
}

Observações

Roteiro

  1. Defina quantas filas serão necessárias para resolver o problema
  2. Implemente sua solução
  3. Avalie o comportamento da solução com um processo A e um processo B
  4. Idem, com dois processos A e um processo B
  5. Idem, com um processo A e dois processos B
  6. Idem, com dois processos A e dois processos B
  7. Se observou problemas nas situações com mais de um processo de cada tipo, qual seria a forma mais adequada de resolvê-los?

A entregar

  1. Os arquivos a.c e b.c, dos processos A e B (não esqueça de identificar os autores).
  2. Um relatório sucinto (e no formato correto) descrevendo os resultados observados nas experiências.