Mudanças entre as edições de "Atividade de Comunicação entre Processos"

De Aulas
 
(2 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
 
Afluentes: [[Sistemas Distribuídos e Mobile]], [[Sistemas Operacionais]]
 
Afluentes: [[Sistemas Distribuídos e Mobile]], [[Sistemas Operacionais]]
  
 +
<!--
 
{{tip|;TRABALHO DE COMUNICAÇÃO ENTRE PROCESSOS 2020-2
 
{{tip|;TRABALHO DE COMUNICAÇÃO ENTRE PROCESSOS 2020-2
  
Linha 18: Linha 19:
 
* Mostarar como foi feita a operação e estrutura das mensagens de requisição e resposta
 
* Mostarar como foi feita a operação e estrutura das mensagens de requisição e resposta
 
* Explicar individualmente dificuldades encontradas, o conhecimento adquirido, etc.}}
 
* Explicar individualmente dificuldades encontradas, o conhecimento adquirido, etc.}}
 +
-->
  
= Observações =
+
 
 +
= Orientações =
  
 
* Grupos de até 4 componentes
 
* Grupos de até 4 componentes
* Apresentação: Conforme descrito no cronograma do Plano de Ensino da disciplina.
 
 
* O trabalho já deve estar pronto no dia da apresentação. Se o grupo for chamado e estiver ainda "terminando", perde dois pontos.
 
* O trabalho já deve estar pronto no dia da apresentação. Se o grupo for chamado e estiver ainda "terminando", perde dois pontos.
<!-- * Opcionalmente pode-se implementar a segunda parte do trabalho, tanto o servidor quanto o cliente, em linguagem de programação Java. Baixe os exemplo de sockets em Java:
 
** [https://{{SERVERNAME}}/aulas/ppd/ClientServer.zip Exemplo Cliente-Servidor]
 
** [https://{{SERVERNAME}}/aulas/ppd/borg.zip Um exemplo mais complexo] de múltiplas conexões. -->
 
  
 
= Apresentação =
 
= Apresentação =
Linha 47: Linha 46:
 
* '''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.
 
* '''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.
 
<!-- * '''Processo Executor:''' localizado no mesmo computador que o Processo Servidor. Recebe uma mensagem via pipes da operação, executa o processamento e retorna o resultado também via pipe. -->
 
<!-- * '''Processo Executor:''' localizado no mesmo computador que o Processo Servidor. Recebe uma mensagem via pipes da operação, executa o processamento e retorna o resultado também via pipe. -->
 +
 +
{{tip|Opcionalmente, o grupo pode usar uma estrutura para troca de mensagens padronizada, tipo JSON, XML, etc..}}
  
 
=== Observações ===
 
=== Observações ===

Edição atual tal como às 17h25min de 27 de setembro de 2022

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