Atividade de Comunicação entre Processos

De Aulas

Afluentes: Sistemas Distribuídos e Mobile, Sistemas Operacionais


Orientações

  • Grupos de até 4 componentes
  • O trabalho já deve estar pronto no dia da apresentação. Se o grupo for chamado e estiver ainda "terminando", perde dois pontos.

Apresentação

A apresentação deve feita por todos os elementos do grupo em datashow. O professor pode fazer perguntas a qualquer elemento do grupo, sendo que questões mal respondidas implicam a perda de pontos na nota final do grupo.

Tpl warning.png

O não comparecimento no dia da apresentação, sem justificativa, implicará em nota zero.

Relatório

Elaborar um relatório relativo ao trabalho implementado conforme especificação descrita em Estrutura Básica para Relatórios. O relatório deve ser enviado em formato PDF para o e-mail saulopz@gmail.com até um dia antes da apresentação.

Descrição do Trabalho

No trabalho, há três tipos de processos envolvidos:

  • Processo Cliente: localizado em um computador cliente. O usuário desse processo deve chamá-lo para efetuar alguma operação. O processo cliente envia uma mensagem para o servidor (via socket) que envia de volta o resultado. O processo cliente imprime o resultado na tela.
  • Processo Servidor: localizado em um computador servidor. Esse processo recebe uma requisição (via socket) de um cliente e inicia um processo filho para gerenciar a conexão. Depois de tratar a requisição, retorna o resultado ao cliente.


Tplnote Bulbgraph.png

Opcionalmente, o grupo pode usar uma estrutura para troca de mensagens padronizada, tipo JSON, XML, etc..

Observações

  • É importante a criação de um protocolo, ou estrutura, da mensagem para troca entre cliente, servidor, e executor.
  • Quantidade mínima de informações para serem tratadas no servidor a cada requisição: 10 informações.

Exemplos de aplicações

Esses são dois exemplos, mas vocês devem fazer outras aplicações. Os grupos não devem implementar os mesmos problemas ou ideias. Ao decidirem, conversem com o professor para ver se a ideia é válida ou não conflita com ideias dos outros grupos.

Cálculo de Notas

Um processo cliente pede para o usuário entrar com a nota de vários alunos. Essas notas são enviadas ao servidor. O servidor cria um processo cliente para calcular a nota normalizada de cada aluno e retorna o resultado para o cliente, que mostra na tela os alunos e sua nota normalizada. A fórmula da nota normalizada é:

Nota_Normalizadai = Notai x 10 / Maior_Nota

Cálculo de matrizes

Envia para o servidor uma ou mais matrizes para algum cálculo específico. Nesse caso, é importante que o cliente saiba que operação efetuar, e o tamanho de Linhas e Colunas da matriz. Essas informações podem estar na requisição na forma de um cabeçalho. Por exemplo:

+ 2 2 65 3 22 6 33 21 45 89
| |   |    |    |     |
| |   |    |    |     +---> 2a linha da 2a matriz
| |   |    |    +---------> 1a linha da 2a matriz
| |   |    +--------------> 2a linha da 1a matriz
| |   +-------------------> 1a linha da 1a matriz
| +-----------------------> Informando o tipo das matrizes: 2 x 2
+-------------------------> Operação de soma de matrizes


Ordenação de Palavras

Ordenar uma lista de palavras.


Critérios de avaliação

Critérios de Avaliação
Item Descrição Valor
1 Sistema montado e funcionando 2.0
2 Relatório escrito do projeto 2.0
3 Uso de estruturas de controle e repetição 0.5
4 Uso de variáveis, vetores e/ou matrizes 0.5
5 Uso de strings e operações com strings 0.5
6 Uso de ponteiros e alocação dinâmica de memória 0.5
7 Funções com passagem de parâmetro por valor e por referência 0.5
8 Utilização de struct 0.5
9 Utilização de subprocessos (fork) e comunicação via pipes 0.5
10 Comunicação via sockets e definição da estrutura das mensagens 0.5
11 Utilização de threads 0.5
12 Processo servidor preparado para receber múltiplas conexões e funcionando 0.5
13 Processo cliente funcionando 0.5
14 Código organizado, indentado e documentado 0.5