Escolar Documentos
Profissional Documentos
Cultura Documentos
1. Introdução
Em 1962, o então aluno de doutorado Carl Adam Petri defendeu sua tese intitulada
Kommunikation mit Automaten (Communication with Automata) [Petri 1962]. Seu
objetivo era desenvolver um modelo em que as máquinas de estado fossem capazes de
se comunicar. A característica principal alcançada por este modelo foi a possibilidade
de representar a concorrência. Este modelo recebeu o nome de Redes de Petri em
homenagem ao próprio autor e hoje podemos encontrar variações do modelo original
sendo usados em diversas áreas da ciência para ajudar no estudo do comportamento e
desempenho de diferentes sistemas. Podemos encontrar as Redes de Petri (RdP) [Girault
2002] [Desel 2000] [Maciel 1996] [Murata 1989] [Peterson 1981] [Peterson 1977]
sendo utilizadas em áreas como economia, biologia, engenharia, computação, entre
outras.
As variações de RdP tais como Redes de Petri Coloridas, Temporizadas ou
Estocásticas são modelos importantes e que não fazem parte da teoria original. No
entanto, são representações que ganharam relevância por serem capazes de modelar
sistemas de forma mais simplificada ou intuitiva ou simplesmente porque ainda não
havia um modelo capaz de representar sistemas que envolviam temporizações ou
comportamentos probabilísticos (estocásticos).
Antes de apresentar os conceitos e elementos que compõem a Rede de Petri é
importante responder uma pergunta: Por que precisamos modelar um sistema
computacional [Jain 1991]?
• Torna-se mais fácil o entendimento do funcionamento ou comportamento
de um sistema computacional existente?
• O projeto do sistema computacional pode ser verificado e validado
através de um modelo antes da construção de um protótipo?
• A avaliação do funcionamento, comportamento e por conseqüência do seu
desempenho em relação a um histórico de projeto ou em relação a outros
modelos de sistema existentes, também em fase de projeto é facilitada?
• É possível definir métricas de desempenho através do modelo?
São várias as respostas para justificar a modelagem de um sistema
computacional. Podemos afirmar que o uso de um modelo facilita e justifica o
prosseguimento de novas etapas de projeto e análise antes da etapa final de avaliação.
Entre estas etapas podemos citar uma diretamente dependente da existência física do
sistema e que muitas vezes só deve ser realizada após uma fase anterior de validação,
antes do protótipo ser construído:
• Medição: A medição depende da existência física do sistema ou protótipo
do sistema. Você implementaria seu sistema antes de verificá-lo através de
um modelo? É como programar sem projetar o algoritmo!
Imagine que o sistema a ser medido (uma coleta de dados para avaliação de
resultados) é um aglomerado (cluster) de computadores [Buyya 1999] [Almasi 1994].
Qual o custo financeiro para montar este cluster? Este cluster foi modelado
anteriormente? Existe uma verificação/validação anterior à montagem do protótipo
(cluster de servidores)?
Existem alguns modelos analíticos e de simulação [Bressan 2002] [Jain 19991]
para validação de um projeto. As Redes de Petri fazem parte destes dois modelos.
Podemos representar uma Rede de Petri através de descrições matemáticas e gráficas.
Podemos também simular uma Rede de Petri através de ferramentas específicas de
simulação [Drath 2004]. Existe um repositório de informações e simuladores de Redes
de Petri que pode ser encontrado através da seguinte referência: [Petri Nets 2004].
O principal objetivo deste minicurso é apresentar conceitos, difundir
conhecimentos e apresentar métodos e ferramentas para verificação/validação relativos
a aplicação e modelagem de Redes de Petri em sistemas computacionais de forma
simples e direta. Alguns modelos do nosso dia-a-dia são utilizados para facilitar o
estudo do processo de modelagem em suas etapas principais. Pretendemos difundir as
RdP como uma alternativa e um forte modelo de ajuda no processo de avaliação do
comportamento e do desempenho de um sistema computacional.2. Redes de Petri
Portanto, ainda sem considerarmos a existência dos tokens, podemos definir uma
Rede de Petri como R = (P, T, AE, AS) onde:
• P = {P1, P2, ..., Pm} é um conjunto de places.
• T = {T1, T2, …, Tn} é um conjunto de transições.
• P ∩ T = ∅ os conjuntos P e T são disjuntos.
• AE: P x T é o conjunto de arcos de entrada nas transições.
• AS: T x P é o conjunto de arcos de saída das transições.
Para a figura 1 temos:
• P = {Place 1, Place 2}
• T = {Transição}
• AE = {Place 1, Transição}
• AS = {Transição, Place 2}
Qual a influência dos tokens em uma Rede de Petri?
Quando modelamos um sistema através de Redes de Petri procuramos
representar os estados antes e depois de cada evento neste sistema. O elemento
responsável por indicar qual o estado de uma Rede de Petri é um token (marca).
Portanto, é de se esperar que uma Rede de Petri possua uma marcação inicial [Girault
2002] [Bressan 2002] [Murata 1989], que pode ser descrita através da seguinte notação,
tomando como exemplo a figura 1:
• M = (1, 0) Sendo que o primeiro campo representa a quantidade de
tokens no Place 1 e o segundo campo a quantidade de tokens no Place 2.
A marcação inicial faz parte do projeto do modelo, uma falha na definição da
marcação inicial pode resultar em um modelo inconsistente ou com falhas de execução.
Além da marca (token) presente dentro de um place, possuímos um peso
associado a cada arco. Este peso é muito importante e muitas vezes é necessário durante
o projeto do modelo. A figura 2 ilustra uma outra Rede de Petri com pesos associados
aos arcos.
Por que a transição T1 não pode ser disparada? Para o disparo de uma transição
deve haver tokens em todos os places de entrada. Na figura 3 o place P2 não possui
tokens e por este motivo a transição T1 não pode ser disparada.
Para a Rede de Petri da figura 4 o problema está associado aos pesos dos arcos
de entrada da transição T1. Os pesos dos arcos de entrada da transição indicam quantos
tokens são necessários para o disparo da transição. No caso da figura 4 são necessários 3
tokens em dois places. Como podemos ver, nesta figura os places possuem apenas 1
token cada um, seria necessário que o place P2 tivesse dois tokens, porque é exatamente
este place que possui um arco com peso 2 até a transição T1. Portanto, permanecendo
desta forma, esta rede nunca mudará seu estado ou marcação inicial. Se esta Rede de
Petri fosse o modelo que representasse um determinado sistema, haveria um erro de
modelagem. Conforme já descrevemos a marcação inicial é muito importante e pode
influenciar na execução do modelo.
Uma vez que já abordamos os conceitos relativos à marcação e ao peso de um
arco, podemos apresentar uma definição mais completa das Redes de Petri:
• R = {P, T, A, PA, M0) onde:
P = {P1, P2, ..., Pm} é o conjunto de places.
T = {T1, T2, …, Tn} é o conjunto de transições.
P ∩ T = ∅ ∧ P ∪ T ≠ ∅ os conjuntos P e T são disjuntos e não
vazios.
A: (P x T) ∪ (T x P) é o conjunto dos arcos.
PA: A N são os pesos dos arcos.
M0 : P N0 é a marcação inicial.
Em uma RdP existe uma situação chamada de conflito [Girault 2002] [Maciel
1996] [Murata 1989], encontrada quando modelamos atividades concorrentes. Para esta
situação damos o nome de Confusion. Muitas vezes, para representar a concorrência ou
atividades conflitantes, conforme será visto no tópico 5, é necessário modelar situações
chamadas de Confusion. Um exemplo de conflito está ilustrado na figura 5.
A situação apresentada na figura 5 é muito simples. Existem duas transições que
para estarem habilitadas precisam de 1 token em cada uma de suas entradas. O problema
é que o place de entrada é único, P1 está compartilhado entre as duas transições e
possui apenas um token e não dois como seria necessário. Nos resta fazer a seguinte
pergunta: Qual transição será disparada, T1 ou T2? Esta escolha será aleatória já que
não existe nenhuma prioridade de uma transição em relação à outra.No entanto, se
atribuíssemos funções a cada uma das transições, poderíamos ter uma situação típica de
if e else.
A notação matricial pode ser feita usando três tipos de matrizes, sendo elas as
seguintes:
• Matriz de entrada (E): ETxP representa a quantidade de arcos de entrada em
cada transição.
• Matriz de saída (S): STxP representa a quantidade de arcos de saída em
cada transição.
• Matriz de Incidência (I): ITxP = STxP – ETxP
As matrizes referentes à figura 6 estão ilustradas através da figura 7.
Ou seja, para a figura 8b os pesos são sempre 1 em cada arco, para a figura 8a o
peso é representado com se fossem dois arcos de saída da transição T1.
P1 P2 P1 P2
T1 1 0 T1 0 1
T2 0 1 T2 1 0
Antes de finalizar este exemplo, vamos fazer duas perguntas: Este modelo está
completo? Ele reflete a realidade?
Este modelo não está considerando o tempo de vida da lâmpada após os
sucessivos ligar e desligar. Como podemos modelar, considerando mais este elemento
do sistema? Vamos supor que em média as lâmpadas possam ser ligadas 4 vezes
(apenas um exemplo) e depois elas queimam. Sendo assim, o novo place P3
representaria Tempo de vida (não estamos falando de transições temporizadas).
O modelo ficaria da seguinte forma (figura 16):
Figura 21. Rede de Petri Colorida para o sistema de manufatura [Maciel 1996]
Outro modelo muito importante durante o uso das Redes de Petri é a simulação.
Entre as vantagens da simulação podemos citar as seguintes:
• Efeitos das animações e gráficos ajudam no aprendizado e entendimento
do sistema simulado.
• Permite manter um maior controle sobre o experimento, o que muitas
vezes não é possível no sistema real.
• Permite estudar o sistema durante o longo período de tempo simulado.
Na URL http://www.daimi.au.dk/PetriNets/tools/complete_db.html [Petri Nets
2004] podemos encontrar uma lista completa de vários simuladores de Redes de Petri
disponíveis comercialmente e gratuitamente. No tópico 4.1 descrevemos o simulador
Visual Object Net ++, desenvolvido por um grupo de pesquisadores alemães.
5.1. Semáforo
Um típico problema computacional é o caso de comunicação entre processos
concorrentes [Tanenbaum 2003b], que compartilham um recurso do sistema. O
compartilhamento pode gerar situações indesejáveis. Uma das soluções para problemas
de compartilhamento é o uso de semáforo. Um semáforo é uma variável inteira não
negativa que é manipulada por instruções de down e up. O semáforo indica quando o
recurso associado a ele está sendo utilizado por um dos processos concorrentes:
• S > 0: nenhum processo está utilizando o recurso
• S = 0: processo impedido de utilizar o recurso
A Região crítica é uma área do processo onde é realizado o acesso ao recurso
compartilhado.
Neste exemplo apresentamos a rede que modela dois processos concorrendo por
um recurso e usando um semáforo para resolver os problemas de compartilhamento
[Bressan 2002]. Os processos são p e q. Cada um possui 3 estados (p1, p2, p3, q1, q2, q3).
O terceiro estado de cada processo (p3, q3) é referente a região crítica (recurso
compartilhado). O semáforo é representado pelo estado R (Recurso). A figura 28
apresenta a Rede de Petri Ordinária que modela um semáforo.
5.2. Produtor/Consumidor
A relação Produtor/Consumidor [Tanenbaum 2003b] é uma situação bastante comum
em sistemas computacionais. Nesta situação dois processos compartilham um buffer de
tamanho fixo. O produtor insere informação no buffer e o consumidor retira informação
do buffer. Existem dois problemas em questão: primeiro se o produtor quer inserir, mas
o buffer está cheio, e segundo se o consumidor quer retirar, mas o buffer está vazio.
Os estados do sistema são: esperando para produzir, esperando para consumir,
produzindo item, colocando item no buffer, retirando item do buffer, consumindo item,
tamanho do buffer, buffer. As ações são: produzir item, preparar para colocar item no
buffer, colocar item no buffer e produzir novo item, retirar do buffer, consumir item,
consumir novo item [Bressan 2002] [Desel 2000] [Silva 2000].
A marcação inicial da rede possui um token no place do início do processo
produtor (esperando para produzir) e um token no place do início do processo
consumidor (esperando para consumir). Além disso, possui m tokens no place tamanho
do buffer, onde m é igual ao tamanho do buffer. A figura 29 apresenta a rede que
modela um sistema Produtor/Consumidor usando Redes de Petri Ordinárias.
Figura 30. Rede de Petri temporizada para o sistema PRAM [Penha 2004]
Figura 32. Rede de Petri Ordinária de um protocolo simplex para canal com ruído
Neste protocolo o que diferencia um quadro recebido do próximo quadro é o
número de seqüência de tamanho igual a um bit, portanto, seq. 0 ou seq. 1 conforme
descrito na figura 32. Já que estamos considerando as possíveis perdas de quadros, são
utilizadas as transições Perder seq. 0, Perder seq. 1 e Perder Ack, que poderão de forma
aleatória perder os quadros de seqüência 0 ou 1 ou um quadro de confirmação (Ack). É
importante ressaltar que, os places Seq. 0 na linha, Seq. 1 na linha e Ack na linha estão
em uma situação de conflito, já que existem saídas para mais de uma transição,
confirmando portanto, as condições aleatórias das transições descritas acima.
5.5. Pipeline
O paralelismo pipelined [Hennessy 2003] explora os aspectos temporais das aplicações
paralelas. Um sistema pipeline é composto por um determinado número de estágios que
podem ser executados simultaneamente. Quando um estágio i encerra sua atividade, este
transfere o resultado obtido para o próximo estágio i+1 e aguarda novos dados do
estágio anterior i-1. Os dados a serem processados são passados de estágio a estágio
seqüencialmente. Deste modo, a comunicação entre os estágios é restrita aos estágios
vizinhos.
Neste exemplo, modelamos um sistema pipeline simples [Maciel 1996] , com
duas unidades funcionais. Para que um dado seja processado, a unidade deve estar
ociosa. Ao receber dado na entrada, a unidade funcional A processa o dado e envia para
a entrada da unidade funcional B. A unidade funcional A pode então receber novos
dados. A unidade funcional B, ao receber o dado processado por A, termina o
processamento e envia o resultado para a saída do sistema.
Portanto, os estados do sistema são: Entrada do sistema (p0), entrada da unidade
funcional A vazia (p3), entrada da unidade A bloqueada (p1), saída da unidade A vazia
(p4), saída da unidade A bloqueada (p5), unidade A processando (p2), entrada da
unidade B vazia (p8), entrada da unidade A bloqueada (p7), transferência de dado entre
a unidade A e a unidade B (p6), entrada da unidade B (p10), unidade B processando
(p9), saída da unidade B (p11), saída do sistema (p12).
As ações do sistema são: ler entrada da unidade A (t0), unidade A processa dado
(t1), escrever resultado na saída da unidade A (t2), iniciar transferência de dado da
unidade A para a unidade B (t4), finalizar processo de transferência de dado entre A e B
(t3), unidade B processa dado (t5), escrever resultado na saída da unidade B (t6),
escrever dado na saída do sistema (t7).
Um token no place p0 indica que existe dado a ser processado pelo sistema. A
transição t0 só está habilitada quando houver informação disponível e a unidade A
estiver habilitada para efetuar a leitura do dado. A transição t1 só pode ser disparada se
houver dado na entrada da unidade A (place p1) e se a saída desta unidade estiver
habilitada (p4). A figura 33 apresenta a rede que modela este sistema pipeline.
Figura 33. Rede de Petri Ordinária de sistema pipeline de duas unidades funcionais
Figura 34. Rede de Petri de alto nível para o sistema FIFO [Barros 1996]
A Rede de Petri de alto nível não tem necessariamente tokens coloridos, mas
tokens como tipos de dados. No entanto, a rede possui inscrições. Os estados da rede
são: elemento a ser adicionado na fila (A1), elemento adicionado na fila (A2), elemento
a ser removido da fila (R1), elemento removido da fila (R2) e a fila propriamente dita.
As ações da rede são: adicionar elemento na lista e remover elemento da lista.
Figura 35. Rede de Petri Ordinária para o problema do jantar dos filósofos
Figura 36. Rede de Petri Colorida para o problema do jantar dos filósofos
6. Conclusões
Considerando os resultados apresentados no minicurso podemos concluir que as Redes
de Petri são um importante recurso para a modelagem de sistemas, particularmente de
sistemas computacionais. Esta importância é fundamentada nas propriedades inerentes
às Redes de Petri que facilitam a modelagem de características típicas dos sistemas
computacionais, entre as quais podemos destacar: compartilhamento, concorrência,
conflito, controle e sincronização.
Entretanto, a modelagem de sistemas computacionais que possuem algumas
características probabilísticas, como a máquina PRAM, utilizando Redes de Petri
Ordinárias e Temporizadas não é o ideal. Neste caso, o ideal seria utilizar uma Rede de
Petri Estocástica.
A modelagem usando Redes de Petri Coloridas, normalmente permite uma
redução no tamanho do modelo devido à unificação de places, transições e arcos. O
grau de redução da Rede de Petri é dependente dos modelos originais e principalmente
da quantidade de repetições (places, transações e arcos) existentes.
Esperamos ter alcançado nossos principais objetivos com a preparação e
apresentação deste minicurso, apresentando os principais conceitos das Redes de Petri
Ordinárias e de algumas extensões como as Redes de Petri Coloridas e as Redes de Petri
Estocásticas. Além disso, apresentamos exemplos de modelagem de problemas triviais
com Redes de Petri e exemplos de utilização de Redes de Petri na modelagem de
sistemas computacionais e na solução de problemas relacionados com os mesmos.
Entre as diversas possíveis sugestões de estudos mais avançados e trabalhos
futuros podemos destacar: aprofundamento do estudo das Redes de Petri Coloridas e
das Redes de Petri Estocásticas, estudo de outras variações de Redes de Petri, utilização
dos diversos tipos de Redes de Petri na modelagem e solução de problemas relacionados
com sistemas computacionais, estudo e utilização de outras ferramentas de
validação/verificação de Redes de Petri e finalmente o projeto e desenvolvimento de
ferramentas de validação e verificação de Redes de Petri, como analisadores e
simuladores de Redes de Petri.
7. Referências
Almasi, G. S., Gottlieb, A.A. (1994), “Highly Parallel Computing”, 2nd. Edition,
Benjamim/Cummings.
Barros, J. P. M. P. R. (1996), “CpPNeTS: uma Classe de Redes de Petri de Alto-nível.
Implementação de um sistema de suporte à sua aplicação e análise”, Dissertação de
mestrado, Faculdade de Ciências e Tecnologia, Departamento de Informática,
Universidade Nova de Lisboa, Lisboa. URL:
http://www.estig.ipbeja.pt/~jpb/BarrosTeseDeMestrado.pdf (último acesso em
outubro de 2004)
Bolch, G., et al (1998), “Queueing Networks and Markov Chains: Modeling and
Performance Evaluation With Computer Science Applications”, Editora Wiley-
Interscience
Bressan, G. (2002), “Modelagem e Simulação de Sistemas Computacionais” Capítulo
sobre Redes de Petri, LARC-PCS/EPUSP,
www.larc.usp.br/conteudo/universo/pcs012/modsim05.pdf (último acesso em
outubro de 2004)
Buyya, R. (1999), “High Performance Cluster Computing”, Volume 1, Prentice Hall
Desel, J. (2000), “Place/Transitions Nets I”, Introductory Tutorial Petri Nets, Petri Nets
2000, 21st International Conference on Application And Theory of Petri Nets,
Denmark, pp 111-160.
Drath, R., Visual Object Net ++ (2004). URL: http://www.systemtechnik.tu-
ilmenau.de/~drath/visual_E.htm, Technical University of Ilmenau, Alemanha (último
acesso em outubro de 2004).
Girault, C., Valk, R. (2002), “Petri Nets for Systems Engineering: A Guide for
Modeling, Verification and Application”, Springer Verlag.
Haas, P. J. (2002) “Stochastic Petri Nets: Modeling, Stability, Simulation”, Springer-
Verlag 1st edition
Hennessy, J. L., Patterson, D. A. (2003) “Computer Architecture: A Quantitative
Approach” 3rd Edition, Morgan Kaufmann Publishers.
Jain, R. (1991), “The Art of Computer Systems Performance Analyses”, John Wiley.
Maciel, P. R., et al. (1996), “Introdução às Redes de Petri e Aplicações”, X Escola de
Computação, Campinas SP.
Murata, T. (1989) "Petri Nets: Properties, Analysis and Applications", Proceedings of
the IEEE, Vol. 77, pp. 541-580.
Norris, J. R. (1998), “Markov Chains”, Cambridge University Press
Penha, D. O., Freitas, H. C., Martins, C. A. P. S. (2004) “Modelo de Memória
Reconfigurável para Sistemas Paralelos”, V Workshop em Sistemas Computacionais
de Alto Desempenho, Sociedade Brasileira de Computação, Foz do Iguaçu.
Peterson, J. L. (1977), “Petri Nets”, ACM Computing Surveys, vol. 9, No. 3, pp. 223-
252
Peterson, J. L. (1981), “Petri Net Theory and the Modeling of Systems”, Englewood
Cliffs, Prentice Hall
Petri Nets World (2004). URL: http://www.daimi.au.dk/PetriNets/ (último acesso em
outubro de 2004)
Petri, C. A., (1962), “Kommunikation mit Automaten”, Bonn: Institut für Instrumentelle
Mathematik, Schriften des IIM Nr. 3, 1962. Também em inglês, “Communication
with Automata”, New York: Griffiss Air Force Base, Tech. Rep.RADC-TR-65-377,
vol. 1, Suppl. 1, 1966
Silva, M. (2000), “Place/Transitions Nets II”, Introductory Tutorial Petri Nets, Petri
Nets 2000, 21st International Conference on Application And Theory of Petri Nets,
Denmark, pp 199-216.
Tanenbaum, A. S. (2003a), “Redes de Computadores”, Campus, Tradução da 4a edição.
Tanenbaum, A. S. (2003b), “Sistemas Operacionais Modernos”, Prentice-Hall,
Tradução da 2a edição.