• Nenhum resultado encontrado

Segundo Trabalho de Programação em Ambientes Limitados

N/A
N/A
Protected

Academic year: 2021

Share "Segundo Trabalho de Programação em Ambientes Limitados"

Copied!
5
0
0

Texto

(1)

Segundo Trabalho de Programação em Ambientes Limitados

(Programação para Macho / Chuck Norris Programming)

CI097 - Prof. André Guedes Versão 0.3

Parte 1: Implementação de transferência de dados em taxa fixa e constante.

Conteúdo:

Objetivo: ... 1

Especificações: ... 1

Futuro ... 3

Dicas: ... 3

FAQ – Perguntas Frequentes: NOVO ... 3

Critérios para nota: ... 4

Prazo de Entrega e Outros: ... 4

Dúvidas: ... 5

Revisões a este Documento: ... 5

Objetivo:

Devem ser criados dois programas, um cliente e um servidor, que devem conectar-se por um socket UDP. O objetivo primário é conseguir uma taxa de transferência de dados constante (não superior, não inferior) e fixa, determinada pela parametrização do programa.

Transferências em taxa fixa e constante tem diversas aplicações como QOS em redes, Clusters de computadores e comunicação de aplicativos em tempo real ou próximo de real.

O trabalho será dividido em duas partes, e a segunda será uma modificação no que for feito na primeira parte, portanto não deixe de fazer a primeira, ou terá problemas para fazer a segunda.

Leia a especificação até o final antes de sair programando!

Especificações:

O programa deve utilizar sockets no protocolo UDP para a comunicação entre o cliente e o servidor. Códigos de referência desses programas podem ser encontrados em:

http://www.inf.ufpr.br/elias/redes/servudp.c http://www.inf.ufpr.br/elias/redes/cliudp.c

(2)

Servidor

O software “servidor” deve gerar bytes numéricos aleatórios e enviar via UDP ao cliente (byte a byte, diretamente no socket), que pode estar na máquina local ou em uma máquina remota em rede local. O servidor envia este stream de bytes aleatórios pelo socket para o cliente a uma taxa de transferência especificada. Para fins de correção do trabalho será utilizada a taxa de 5 MB/s, ou seja, seu programa deve conseguir trabalhar com esta taxa ou inferior. Se conseguir que o programa trabalhe em taxas superiores, melhor.

O programa servidor deve aceitar como parâmetros: Porta em que vai servir o stream de bytes. Velocidade de transmissão em kb/s. Outros parâmetros que possam surgir... Exemplo de linha de comando:

./servidor –porta 12345 –taxa 5242 ...

Cliente

O “cliente” por sua vez deve receber estes dados pelo socket e mostrar na tela uma vez a cada segundo a taxa de bytes recebidos em kb/s, e a variação em relação ao parâmetro de taxa desejada. A saida do programa cliente deve ser semelhante a seguinte:

Recebido a: 5242 kb/s, variação de 0% sobre 5242 kb/s Recebido a: 4980 kb/s, variação de 5% sobre 5242 kb/s Recebido a: 5085 kb/s, variação de 3% sobre 5242 kb/s

Para fins de correção do trabalho, será admitida uma taxa de variação de envio de no máximo 5%. Lembrando que a variação pode ser superior ou inferior.

O programa cliente deve aceitar como parâmetros:

Endereço da localização do servidor que servirá o stream de bytes. Porta, que deve ser a mesma especificada no momento da execução do servidor.

Taxa desejada de recebimento (usada apenas para fins do cálculo de variação em relação ao que foi enviado) em kb/s

Outros parâmetros que possam surgir... Exemplo de linha de comando:

./cliente –end 192.168.0.1 –porta 12345 – taxa 5242 ...

Transferência de Dados entre Servidor e Cliente

A Transferência de dados não pode depender da velocidade do processador da máquina, ou seja, os programas cliente e servidor devem funcionar na mesma taxa

independentemente da velocidade do processador, apenas com recálculo de timing entre os bytes enviados. Como o programa foi especificado para funcionar apenas na mesma máquina ou em rede local, a velocidade da rede não deve ser um empecilho (supondo rede de 100 mbit ou superior).

(3)

É permitido no início da transferência que os programas efetuem algum tipo de handshake, de forma a sincronizar a transferência. O programa deve estar também preparado para lidar com concorrência na rede ao máximo ponto em que consiga manter a taxa, ou seja, o programa deve monitorar o uso dos recursos de rede e adaptar-se a maior ou menor concorrência.

Futuro

Este trabalho é dividido em duas partes. A parte 2 será uma modificação em cima da parte 1. Esta seção dá guias para facilitar a programação do que está por vir. Você não é obrigado a implementar o que está descrito nessa seção, mas se o fizer, será mais fácil fazer a segunda parte do trabalho.

O programa deve ser projetado para que o stream de bytes enviado possa ser substituído no futuro por outro tipo de gerador (ex: montagem de pacotes/checksum). Da mesma forma o código de recebimento dos dados deve ser projetado para no futuro incluir checagens (ex: checksum e/ou desmontagem de pacotes) ou operações com os dados recebidos. A segunda parte do trabalho envolverá adaptações nessas duas áreas, que podem exigir também mudança no recálculo do timing entre o envio dos bytes.

Dicas:

Manter taxas altas pode não ser tarefa simples, Uma resposta do cliente indicando para o servidor mandar mais rápido ou mais devagar pode ajudar a fazer correções de estabilização na taxa de envio em tempo real.

Envio da máquina para ela mesma não passa fisicamente pela placa de rede, apesar de utilizar endereços e ter portas. Uma vez a aplicação estando “estável” faça testes de máquina para máquina no laboratório. Você pode não conseguir taxas de 5 MB/s no laboratório, mas ao menos vai ter idéia da confiabilidade e estabilidade dos seus métodos de estabilização da taxa de transferência.

Streams de bytes são mais fáceis de tratar do que pacotes. Lembre-se que no futuro sua aplicação pode vir a utilizar pacotes...

Teste inicialmente com taxas mais baixas, e vá aumentando a medida que seu algoritmo for ficando mais estável. Uma placa de rede de 100 mbits suporta no máximo uma transferência de 12,5 MB/s, então 5 MB/s não usa nem metade desta capacidade.

FAQ – Perguntas Frequentes:

P: Mando byte a byte ou faço em pacotes ?

R: Fica a seu critério. Experimente com uma coisa ou outra e veja o que é melhor. Lembre-se que se usar pacotes, o payload do pacote (informação extra como cabeçalho do pacote, etc) também são dados, mas devem ser desconsiderados na contagem.

P: Você quis dizer 5 Megabytes ou 5 megabits ?

R: 5 Megabytes. “MB” usualmente significa megabyte e “mb” ou “mbit” usualmente significa megabit. Digite no google: “100 megabits in megabytes” para ver a conversão.

(4)

P: Tem umas taxas erradas lá em cima, nos exemplos de linha de comando e saída do

programa.

R: Não estão mais erradas. Estavam em Bytes, quando deviam estar em Kbytes. Já foi corrigido nesta versão.

P:Qual a velocidade média de voo de uma andorinha ? R: Africana ou Européia ?

Critérios para nota:

Obrigatórios:

Entrega dentro do prazo estabelecido;

Transferência de dados com sucesso na taxa de 5 MB/s com variação de no máximo 5% para cima ou para baixo.

Aditivos (melhoram ou pioram sua nota):

Menor variação das taxas de recebimento;

Transferências em taxas maiores que 5 MB/s. Se conseguir tranferir em taxas maiores, coloque isso no seu explicativo do trabalho;

Menor memória e menos recursos utilizados pelos dois programas; Soluções mais criativas para manutenção da taxa de transferência;

Caminho mais curto para tirar zero:

Falsificar as medidas de transferência ou recebimento; Copiar partes do trabalho de outros grupos;

Utilizar técnicas POG (http://desciclo.pedia.ws/wiki/POG )

Prazo de Entrega e Outros:

O trabalho deve ser feito em grupos de até três pessoas. Recomenda-se fortemente que ao menos uma pessoa de cada grupo tenha feito as disciplinas de Redes 1 e 2, para que o trabalho com sockets não seja uma dificuldade extra.

O prazo de entrega deste trabalho é o dia

23

de Abril de 2007, e neste dia será disponibilizada a especificação e prazo da parte 2 do trabalho. Cada dia de atraso

subsequente incorrerá em diminuição da nota na razão de 15% ao dia.

Deve ser entregue:

Códigos fonte dos programas cliente e servidor, em arquivos ou pastas separadas, com makefiles para facilitar a compilação para correção. É desnecessário dizer que os fontes devem conter comentários que facilitem o entendimento do que foi feito. Explicativo do que foi feito nos programas, especialmente as técnicas usadas para manter e recalcular a taxa de transferência e demais artifícios (não-POG) utilizados e explicações sobre linhas de comando e como por o software para rodar. É desejável que se o trabalho não for desenvolvido nos sistemas da universidade, coloque sistema operacional e versão usada durante o desenvolvimento (é para o seu bem, e com a finalidade de evitar “no meu Linux XYZ funcionava”). Este explicativo deve estar em

(5)

TXT, DOC (word) ou ODF (OpenOffice). Não esqueça de colocar neste explicativo o nome dos integrantes do grupo.

Considerações sobre a entrega:

Todos os arquivos especificados acima devem ser compactados em um arquivo zip chamado ci097-trab2.zip e enviados pela página

http://www.geoffmartin.com/trabalho/ . É considerada apenas a última versão entregue, então se entregar antes do prazo e quiser fazer modificações, sinta-se livre para enviar novamente, contanto que não ultrapasse o prazo. O tamanho máximo do arquivo a ser enviado é de 1mb. O sistema bloqueará arquivos maiores. Não envie binários no arquivo, apenas fontes e o arquivo explicativo. Atenção: não envie o trabalho por e-mail.

O trabalho pode ser feito em C ou outra linguagem. No caso de que seja feito em outra linguagem, ainda assim o makefile deve ser criado. No caso de não poder criar o makefile, deve ser provido outro arquivo semelhante (por exemplo: arquivo csproj para projetos em C#) e o nome desse arquivo e instruções de compilação devem constar no arquivo explicativo. No caso do arquivo ser feito em outra linguagem, os sockets UDP não podem ser radicalmente diferentes dos exemplos em C fornecidos.

Dúvidas:

Dúvidas sobre este trabalho ou qualquer esclarecimento deve ser enviado por e-mail para:

Geoffrey Martin, Aluno de Mestrado (geoff arromba ufpr ponto br) Prof. André Guedes (andre arromba inf ponto ufpr ponto br) E se necessário, pode ser marcado um dia para esclarecimento de dúvidas.

Revisões a este Documento:

Versão 0.3 – 12/04/2007 – Geoffrey Martin

- Alteração da data de entrega, inclusão da área FAQ, e pequenos ajustes no

documento.

Versão 0.2 – 04/04/2007 – Geoffrey Martin - Pequenos Ajustes.

Versão 0.1 – 02/04/2007 – Geoffrey Martin - Especificação inicial.

Atenção: Mudanças a esta especificação podem ser feitas a qualquer momento. Confira a página da disciplina com frequência para não ter surpresas no último dia de entrega!

Referências

Documentos relacionados

Os resultados deste trabalho mostram que o tempo médio de jejum realizado é superior ao prescrito, sendo aqueles que realizam a operação no período da tarde foram submetidos a

Crisóstomo (2001) apresenta elementos que devem ser considerados em relação a esta decisão. Ao adquirir soluções externas, usualmente, a equipe da empresa ainda tem um árduo

No entanto, esta hipótese logo é abandonada em favor de uma nostalgia reflexiva, visto que “ao invés de tentar restaurar as cópias de nitrato de algum estado

Realizar esse trabalho possibilita desencadear um processo de reflexão na ação (formação continuada), durante a qual o professor vivencia um novo jeito de

Declaro que fiz a correção linguística de Português da dissertação de Romualdo Portella Neto, intitulada A Percepção dos Gestores sobre a Gestão de Resíduos da Suinocultura:

Realizar a manipulação, o armazenamento e o processamento dessa massa enorme de dados utilizando os bancos de dados relacionais se mostrou ineficiente, pois o

patula inibe a multiplicação do DENV-3 nas células, (Figura 4), além disso, nas análises microscópicas não foi observado efeito citotóxico do extrato sobre as

Acrescenta que “a ‘fonte do direito’ é o próprio direito em sua passagem de um estado de fluidez e invisibilidade subterrânea ao estado de segurança e clareza” (Montoro, 2016,