simple protocol io
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
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
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
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
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
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