BÖLÜM II MATERYAL VE METOT
Fotoğraf 3.23. Platyhypnidium lusitanicum (Schimp.) Ochyra & Bednarek-Ochyra
Se a transi¸c˜ao que est´a sendo implementada em um BCERP possuir um conflito estru- tural, ou seja, a transi¸c˜ao possuir um ou mais lugares de entrada em comum com outras
Tabela 8.6: An´alise de Disparo: tabela de transi¸c˜ao de estados para a comunica¸c˜ao com os componentes de resolu¸c˜ao de conflito e de processo de disparo
Estado Terminou Terminou Permiss˜ao A¸c˜ao Pr´oximo Atual Resol. Conf. Iter. Disp. Disparo Estado
T1 – N˜ao – – T1
T1 – Sim – – T13
T2 N˜ao – – – T2
T2 Sim – – – T3
T3 – – N˜ao Enviar sincronismo
de tempo T7 T3 – – Sim Ativar/Liberar
processo de disparo T6
T4 N˜ao – – – T4
T4 Sim – – Liberar itera¸c˜ao
de disparo T5 T5 – N˜ao – – T5 T5 – Sim – – T0 T6 – N˜ao – – T6 T6 – Sim – – T11 T15 N˜ao – – – T15
T15 Sim – – Enviar sincronismo
de tempo T16
transi¸c˜oes, ent˜ao o componente de an´alise de disparo ativa o componente de resolu¸c˜ao de conflito para a defini¸c˜ao das transi¸c˜oes que poder˜ao disparar. Na ativa¸c˜ao do componente de resolu¸c˜ao de conflito, o registrador de permiss˜ao de disparo ´e zerado e o estado atual
de processamento deixa de ser T0 e passa a ser T1. Neste instante, este componente ir´a
executar o algoritmo distribu´ıdo comentado na se¸c˜ao 8.2 e apresentado na tabela 8.7. Inicialmente, verifica-se a possibilidade interna de disparo da transi¸c˜ao (Pos. Disp.), que ocorre quando as marcas armazenadas s˜ao maiores ou iguais `as quantidades ne-
cess´arias para o disparo e quando o n´umero pseudo-aleat´orio armazenado ´e menor ou igual
ao conte´udo do registrador de probabilidade, caso tenha sido definida uma transi¸c˜ao com
probabilidade de disparo. Se, internamente, a transi¸c˜ao puder disparar, ent˜ao o compo- nente de resolu¸c˜ao de conflito ir´a enviar pacotes que informam aos outros blocos BCERPs
em conflito a possibilidade de disparo. A carga ´util dos pacotes enviados deve conter o
n´umero pseudo-aleat´orio armazenado. Se, internamente, n˜ao existir a possibilidade de
disparo, o componente de resolu¸c˜ao de conflito enviar´a pacotes indicando a impossibi- lidade de disparo. Ap´os o envio desses pacotes, o componente de resolu¸c˜ao de conflito espera o recebimento dos pacotes de dados provenientes dos outros blocos BCERPs que tamb´em est˜ao em conflito. A quantidade de blocos BCERPs em conflito ´e definida no processo de configura¸c˜ao e armazenada nos registradores Comun e Sincro. Desta forma, a resolu¸c˜ao de conflito s´o ir´a para a pr´oxima etapa ap´os o recebimento de todos os pa- cotes, ou seja, quando o registrador Comun for zerado pelo componente de decodifica¸c˜ao
Tabela 8.7: Resolu¸c˜ao de Conflito: tabela de transi¸c˜ao de estados
Estado Pos. Comun Sincro Num comp Pac. A¸c˜ao Pr´ox. Atual Disp. = 0 = 0 = Num arm Env. Estado
T1 – – – – – Verificar Pos. Disp. T15
T15 Sim – – – – – T12
T15 N˜ao – – – – Enviar pacote com
n´umero (pos. disp.) T6
T2 – – – – N˜ao – T2
T2 – – – – Sim – T3
T3 – N˜ao – – – – T3
T3 – Sim – – – Atualizar Comun Comparar Num comp e
Num arm T13 T13 – – – N˜ao – Num com <= Num arm
Enviar pacote de
sincronismo de conflito T4 T13 – – – Sim – Desativar resol. conf. T0
T4 – – – – N˜ao – T4
T4 – – – – Sim – T5
T5 – – N˜ao – – – T5
T5 – – Sim – – Atualizar Sincro T12
T6 – – – – N˜ao – T6
T6 – – – – Sim – T7
T7 – N˜ao – – – – T7
T7 – Sim – – – Atualizar Comun Comparar Num comp e
Num arm T14 T14 – – – N˜ao – Num com <= Num arm
Enviar pacote de
sincronismo de conflito T8 T14 – – – Sim – Num com <= Num arm
Enviar subtra¸c˜oes
Permiss˜ao Disp. <= 1 T10
T8 – – – – N˜ao – T8
T8 – – – – Sim – T9
T9 – – N˜ao – – – T9
T9 – – Sim – – Atualizar Sincro T1
T10 – – – – N˜ao – T10
T10 – – – – Sim – T11
T11 – – N˜ao – – – T11
T11 – – Sim – – Atualizar Sincro T12 T12 – – – – – Enviar pacote de
imposs. disparo T2
de pacotes. Nesta pr´oxima etapa, o registrador Comun ´e novamente carregado com o
valor inicialmente configurado e o n´umero pseudo-aleat´orio armazenado (Numero arm) ´e
comparado com o n´umero dispon´ıvel no registrador Numero comp. Vale ressaltar, que o
decodificador de pacotes ao receber pacotes com n´umeros pseudo-aleat´orios de outros blo-
cos BCERPs compara o n´umero enviado com o armazenado no registrador Numero comp
e o armazena se for menor do que o atualmente dispon´ıvel. Se, internamente, a transi¸c˜ao puder disparar e se Numero arm for igual a Numero comp, ent˜ao o bloco BCERP ganhou
a disputa e a transi¸c˜ao poder´a ser disparada, para tanto, no registrador de permiss˜ao de disparo ser´a armazenado o n´ıvel l´ogico alto. No t´ermino da execu¸c˜ao do componente de resolu¸c˜ao de conflito, a an´alise de disparo ir´a verificar o valor armazenado neste registra- dor e definir se a transi¸c˜ao ir´a disparar. Se, internamente, a transi¸c˜ao n˜ao puder disparar e se Numero arm for igual a Numero comp, ent˜ao n˜ao h´a mais transi¸c˜oes entre os blocos BCERPs que possam disparar, e assim encerra-se o processo de resolu¸c˜ao de disparo e o
estado atual passa a ser T0.
No entanto, se o Numero arm for diferente de Numero comp, outro bloco BCERP ganhou a disputa no disparo da transi¸c˜ao e ent˜ao envia-se pacotes de dados de sincronismo
de conflito e armazena-se novamente o conte´udo de Numero arm em Numero comp. Ap´os
est´a etapa, o componente de resolu¸c˜ao de conflito espera o recebimento de pacotes de todos os outros blocos BCERPs em conflito (Sincro igual a zero). O bloco BCERP que venceu a disputa para o disparo da transi¸c˜ao, ao inv´es de enviar pacotes de sincronismo de conflito, enviar´a pacotes de dados para a subtra¸c˜ao das marcas em todos os outros blocos BCERPs em conflito. Quando Sincro for igual a zero, ent˜ao o estado do componente de
resolu¸c˜ao de conflito ir´a novamente para T1 e o processo recome¸ca.