Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
so:filas_de_mensagens_posix [2010/05/21 21:12] mazieroso:filas_de_mensagens_posix [2011/09/26 22:31] (atual) – [A entregar] maziero
Linha 1: Linha 1:
 +====== 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:
 +
 +<code>
 +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
 +}
 +</code>
 +
 +Comportamento do processo B:
 +
 +<code>
 +estabelece o canal de comunicação
 +while (true)
 +{
 +   recebe n1 e n2 de A
 +   soma = n1 + n2
 +   aguarda 1 segundo
 +   envia soma a A
 +}
 +</code>
 +
 +===== Observações =====
 +
 +  * Este problema deve ser resolvido usando filas de mensagens POSIX ([[http://www.linuxhowtos.org/manpages/7/mq_overview.htm|POSIX message queues]]). Consulte o livro-texto e a documentação online para encontrar exemplos de funcionamento (os exemplos {{:so:mqueue-send.c}} e {{:so:mqueue-recv.c}} do livro-texto podem ser usados como ponto de partida).
 +  * O primeiro parâmetro da chamada ''mq_open'' é um identificador de fila. Ambos os processos devem usar as mesma filas para poder comunicar entre si.
 +  * Escolha identificadores de fila personalizados (por exemplo: ''fila-joao-e-maria''), para evitar conflitos de nomes de filas com outros alunos. Para ver os nomes das filas já criadas por outros alunos, digite "''ll /dev/mqueue''".
 +
 +===== Roteiro =====
 +
 +  - Defina quantas filas serão necessárias para resolver o problema
 +  - Implemente sua solução
 +  - Avalie o comportamento da solução com um processo A e um processo B
 +  - Idem, com dois processos A e um processo B
 +  - Idem, com um processo A e dois processos B
 +  - Idem, com dois processos A e dois processos B
 +  - 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 =====
 +
 +  - Os arquivos ''a.c'' e ''b.c'', dos processos A e B  (não esqueça de identificar os autores).
 +  - Um relatório sucinto (e no [[teaching:regras das atividades de laboratorio#relatórios|formato correto]]) descrevendo os resultados observados nas experiências.