• Nenhum resultado encontrado

Aplicac~oes

5.1 Traduc~ao OCCAM Redes de Petr

5.1.2 Modelagem dos Combinadores

As aplicac~oes desenvolvidas em OCCAM s~ao construdas atraves da com- binac~ao de processos primitivos. Nesta sec~ao apresentaremos as redes que representam estes combinadores de processos, bem como alguns pequenos exemplos que demostram a sua aplicac~ao.

5.1.2.1 Sequ^encia

O primeiro combinador e o seq. Este construtor combina processos onde um so sera executado apos a execuc~ao do outro, como pode ser visto na gura 5.6.a. O programa apresentado e elaborado com a utilizac~ao de dois processos primitivos. O combinador seq determina que a execuc~ao desses processos ocorrera de forma sequencial, ou seja, a escrita sobre o canal s so sera executada apos a leitura sobre o canal k. A gura 5.6.b apresenta uma rede de Petri hierarquica, onde os blocos k e s s~ao redes que modelam a comunicac~ao atraves dos canais entrada (k) e sada (s) (ver sec~ao 5.1.1.2). E natural que os elementos de conex~ao da rede k e da rede s sejam lugares. Nesta rede ( gura 5.6.b) observamos que o disparo de seq desencadeara o processo s.

s ! e

SEQ

k ? x

k ? x s ! e

Figura 5.6: Sequence

OCCAMpossibilita a replicac~ao possibilitando que um numero de proces- sos similares sejam executados em sequ^encia. A modelagem desta contruc~ao pode ser realizada de forma semelhante a apresentada na gura anterior.

5.1.2.2

Conditional

O combinador condicional if combina um conjunto de processos guardados por express~oes booleanas. Estas express~oes s~ao avaliadas em sequ^encia; quan- do uma das express~oes e avaliada como verdadeira, o processo associado a esta condic~ao e executado. No entanto, se nenhuma express~ao e avaliada como verdadeira, o processo comporta-se como o processo primitivo stop. Podemos usar, contudo, a express~ao constante

TRUE

. Esta constante deve ser colocada como ultima opc~ao, pois e sempre verdade, ou seja, se nenhuma outra express~ao for avaliada como verdadeira, nesta a avaliac~ao sera. Neste contexto

TRUE

deve ser como caso contrario.

Como veri camos na sec~ao 2.1.4, as redes de Petri possibilitam a mo- delagem da escolha n~ao-determinstica. No entanto observamos tambem na sec~ao 1.10 que podemos associar, as transic~oes da rede, condic~oes externas (express~oes booleanas, informac~oes provenientes de sensores etc). Assim sen- do utilizaremos estas caractersticas para a modelagem deste combinador.

A gura 5.7.a apresenta um programa que usa o combinador condicional. Neste exemplo, cada express~ao booleana guarda os processo de comunicac~ao, onde, sex < y e verdadeira, e executada uma leitura atraves do canal k; se

x = y e verdadeira, uma escrita e executada atraves do canal s e, caso contrario (

TRUE

), efetua-se uma atribuic~ao a variavel x.

Programa If X < Y k ? c X = Y s ! c TRUE x:= y+2 (X<Y) (X=Y) TRUE k ? c s ! c x:=y+2 (a) (b) p p p p t t t 0 1 2 3 0 1 2 Figura 5.7: Conditional

como verdade, e possvel disparar-se a transic~aot0. O disparo desta transic~ao

retira a marca do lugarp0e deposita uma marca no lugarp1, impossibilitando

o disparo de t1 e t2. A marca no lugar p1 possibilita a execuc~ao da rede k

? c. Caso a avaliac~ao da express~aox < y n~ao seja verdadeira e a express~ao

x = y seja, a transic~ao t1 podera ser disparada, o que impossibilitara o

disparo de t0 e t2. O disparo de t1 permitira a execuc~ao da rede s ! c. E

caso as duas express~oes anteriores n~ao sejam avaliadas como verdadeira a terceira transic~ao (t2) podera ser disparada, dado que a condic~ao associada

a esta transic~ao e avaliada sempre como verdade, portanto, possibilitando a execuc~ao da rede x:=y+ 2.

5.1.2.3

Loop

Nesta sec~ao apresentaremos a modelagem da repetic~ao de processos, en- quanto express~oes booleanas s~ao avaliadas como verdadeiras. Apresentamos, como exemplo, dois processos p e r que s~ao repetitivamente executados, en- quanto uma express~ao booleana for vedadeira. Na gura 5.8 apresentamos esse exemplo e a rede de Petri que o representa.

A modelagem desse combinador e baseada na rede basica que descreve o con ito, sendo as transic~oes rotuladas por express~oes booleanas que ser~ao

Programa while seq p r p r b<>c c c Figura 5.8: Loop

avaliadas, o que possibilitara ou n~ao o disparo dessas transic~oes. Observe-se no exemplo da gura 5.8 que o corpo da express~ao de repetic~ao e construdo atraves de dois processos que s~ao executados de forma sequuencial, ou seja, o processo p e executado antes do processo r. Enquanto a express~ao b for falsa, esses processos ser~ao executados repetitivamente.

5.1.2.4 Paralelismo

O combinador (combinador) Parallel e um dos mais poderosos da linguagem OCCAM, pois possibilita a combinac~ao de processos que s~ao executados concorrentemente. Os processos combinados atraves deste combinador co- mecam a ser executados simultaneamente e este combinador so terminara quando todos os processo terminarem.

Baseamos a modelagem deste combinador nas redes basicas apresentadas nas sec~oes 2.1.2, 2.1.3 (distribuic~ao e junc~ao, respectivamente). No exemplo da gura 5.9.a observamos um programa que tem como componentes tr^es processos E, K e S, onde o processo K comunica-se com o processo E atraves do canal t.in e o processo S comunica-se com o processo E atraves do canal t.out. Na gura 5.9.b, uma marca no lugarp0 habilita o disparo det0 o que

possibilita a execuc~ao das sub-redes (paginas) que modelam os processos E, Ke S, ou seja, o disparo da transic~aot0 retira uma marca do lugar p0 e

estabelecidas permitem a execuc~ao de outras tarefas paralelamente, ou seja,

p1e pre-condic~ao para a execuc~ao da rede K,p2pre-condic~ao para a execuc~ao

da rede E ep3 pre-condic~ao para a execuc~ao de S.

E S K p p p p t 0 0 1 2 3 Programa par E(t.in, t.out) K(t.in) S(t.out) Distribuicao Juncao (a) (b) P p p 4 5 6 1 t Figura 5.9: Parallel

Quando todas as redes forem executadas (K, E e S), ser~ao colocadas marcas nos lugares p4, p5 e p6 (port-places). Esta marcac~ao possibilita o

disparo da transic~aot1, que representa o termino da execuc~ao dos processos

combinados (sincronizac~ao).

5.1.2.5

Alternation

Este combinador possibilita-nos agregar processos guardados por entradas e/ou express~oes booleanas. Suponhamos que dois processos s~ao combinados atraves do Alternation. A execuc~ao desses processos esta diretamente as- sociada a avaliac~ao da express~ao ou do canal que guarda estes processos, ou seja, o processo so sera executado se a express~ao booleana for avaliada como verdadeira ou se o canal que guarda esses processos tiverem algu- ma informac~ao. No entanto, se os dois processo estiverem em condic~oes de serem executados (canal pronto e/ou express~ao booleana avaliada como verdadeira), apenas um destes sera executado. Esta escolha e feita n~ao- determinsticamente. Caso os canais ou express~oes booleanas n~ao habilitem

a execuc~ao destes processos, o combinador aguarda ate que algum desses processos torne-se habilitado. A gura 5.10.a exempli ca a utilizac~ao deste combinador. Neste exemplo, temos um processo primitivo de escrita atraves de um canal denominado trans.

ALT

Documentos relacionados