simple protocol io

25
Protocolo Simples com Entrada e Saída Protocolo Simples com Entrada e Saída Simple Protocol with In and Out Simple Protocol with In and Out João Caria de França - [email protected] Jorge H. Danilo Leite Soares – [email protected] Universidade do Estado do Rio Grande do Norte– UERN Faculdade de Ciências Exatas e Naturais – FANAT Departamento de Informática – DI Curso: Ciência da Computação Disciplina: Métodos Formais Docente: Dr. Pedro Fernandes Ribeiro Neto 1

Upload: sagan0666

Post on 29-Jan-2018

498 views

Category:

Design


1 download

TRANSCRIPT

Protocolo Simples com Entrada e SaídaProtocolo Simples com Entrada e SaídaSimple Protocol with In and OutSimple Protocol with In and Out

João Caria de França - [email protected] H. Danilo Leite Soares – [email protected]

Universidade do Estado do Rio Grande do Norte– UERNFaculdade de Ciências Exatas e Naturais – FANATDepartamento de Informática – DICurso: Ciência da ComputaçãoDisciplina: Métodos FormaisDocente: Dr. Pedro Fernandes Ribeiro Neto

1

O que o Simple_protocol_IO O que o Simple_protocol_IO Modela?Modela? Modela um protocolo simples, onde uma

seqüência de pacotes é enviada de um local para outro através de uma rede onde os pacotes podem ser atrasados ou perdidos.

2

Simple ProtocolSimple Protocol

Figura 1: Simple Procotol3

Simple ProtocolSimple Protocol

4

Send PacketSend Packet Apenas a ligação <n=1,

p="Modellin"> está habilitada.

Quando a ligação ocorre ela adiciona uma ficha para o lugar A.

O símbolo que representa o pacote (1, "modellin") é enviado para a rede.

O pacote não é removido do local Envie e o contador NextSend não é alterado.

Figura 2: Send Packet

5

Transmit PacketTransmit Packet

Existem atualmente 10 ligações habilitadas.

Elas são todas dessa forma, <n=1, p= “Modellin” s=8, r=...>

Figura 3: Transmit Packert

6

Transmit PacketTransmit Packet

A variável r pode assumir 10 valores diferentes, porque o tipo de r é definido para contos inteiros de 1 a 10.

A função Ok(s,r) verifica se r<s.

Figura 4: Transmit Packet

7

Transmit PacketTransmit Packet Para r 1. .8, Ok (s, r) = true. ∈

Isto significa que a ficha é movida de A para B, ou seja, que o pacote é transmitido com sucesso através da rede.

Para r 9. .10, Ok (s, r) = falso. ∈Isto significa que nenhum símbolo é adicionado ao B, ou seja, que o pacote foi perdido.

Assim o simulador CPN faz escolhas aleatórias entre ligações habilitadas e tem-se 80% de chance de transferência bem sucedida.

Figura 5: Transmit Packet

8

Receive PacketReceive Packet Aqui é verificado se o

número do pacote de entrada n corresponde ao número de pacotes esperado k.

Figura 6: Receive Packet9

Correct Packet NumberCorrect Packet Number

Os dados do pacote são concatenados com os dados já recebidos.

O contador NextRec é aumentado em um.

Uma mensagem de aviso é enviada.

Ela contém o número do próximo pacote que o receptor quer chegar.

Figura 7 – Receive Packet

10

Wrong Packet NumberWrong Packet Number

Os dados no pacote é ignorado.

O contador NextRec permanece inalterado.

Uma mensagem de aviso é enviada.

Ela contém o número do próximo pacote que o receptor quer receber.

Figura 8 – Receive Packet

11

Transmit AcknowledgementTransmit Acknowledgement Esta transição funciona de forma

similar ao pacote de transmissão. A ficha no lugar RA determina a

taxa de sucesso para a transmissão dos reconhecimentos.

Quando RA contém uma ficha t com o valor de 8, a taxa de sucesso é de 80%.

Quando RA contém uma ficha com o valor 10, não houve perdas.

Quando RA contém uma ficha com o valor 0, todos as informações são perdidas.

Figura 8 – Transmit Acknowledgement

12

Receive AcknowledgementReceive Acknowledgement

Quando chega um aviso para o remetente, atualiza-se o contador NextSend.

Neste caso, o valor do contador torna-se 2 e, portanto, o remetente vai começar a enviar pacote número 2.

Figura 9 – Receive Acknowledgement

13

Figura 10 – Intermediate state

14

Intermediate State Intermediate State O receptor está esperando o pacote número

6. Isto significa que, com sucesso, recebeu os

primeiros 5 pacotes. O remetente é ainda o envio de pacote

número 5. Em um momento ele receberá um aviso com

um pedido de pacote número 6.

Quando a confirmação for recebida, o NextSend é atualizado e o willstart enviará pacote número 6.

15

Figura 11 – Final state

16

Final StateFinal State Quando o último pacote, ou seja, quando o

pacote numero 8 chega ao receptor, um aviso com o valor 9 é enviado.

Quando esse reconhecimento atinge o remetente o contador NextSend é atualizado com 9.

Isto significa que a transição Send Packet já não pode ocorrer e, portanto, as transmissões param.

17

Simple Protocolo IOSimple Protocolo IOProtocolo Simples com Estrada & Saída de Arquivos

ObjetivosObjetivos

Simular envio de um conjunto de pacotes quaisquer;

Registrar os resultados de uma simulação a partir de escrita em um arquivo.◦ Poderá ser lido futuramente por um ser

humano ou qualquer outro programa.

19

Simple Protocol IOSimple Protocol IO

20

Figura 12 – Simples Protocolo IO

Inserir o código seguinte:Inserir o código seguinte:

21

Figura 13 – Código para leitura de arquivo

No código:No código: Usado um nome de arquivo fixo

(SimpleProtocol_IO.TXT); O textIO.openln abre o arquivo; INTxDATA.input_ms(infile) lê o conteúdo do

arquivo;◦ INTxDATA.input_m(infile): lê apenas um único valor

INTxDATA A transição Initialise Packets lê um multi-

conjunto do arquivo e adiciona as fichas pelo multi-local definido como Send (inicialmente esta vazia).

getPackects: retorna o multi-conjunto que foi lido.

22

SaídaSaída

input(n,p,k);actionif n=k then (if n=1 then

outfile:=textIO.openOut("SimpleProtocol.SimRes")

else(); INTxDATA.output(!outfile,(n,p)); if p=stop then TextIO.closeOut(!outfile)

else())else();

23

CódigoCódigo Input(n,p,k) especifica que parte da ação de segmento

de código refere-se aos valores das variáveis n, p e k. If (n=k) testa se o pacote foi recebido com sucesso;◦ Se n=1, o arquivo é aberto;◦ A variável outfile é usada para fornecer um identificador

para o arquivo de saída; A função predefinida INTxDATA.output escreve o

valor de uma especificação em um arquivo definido; TextIO.stdOut é quem inicia a variável de referêcia◦ Se p = stop, o arquivo de saída é fechado;

24

BibliografiaBibliografia

Simple Protocol. Disponível em: http://wiki.daimi.au.dk/cpntools-help/simpleprotocol.pdf.wiki?cmd=get&anchor=SimpleProtocol.pdf&type=file Acesso em: Fevereiro de 2010.

25