Introdução aos Formalismos
para Modelagem de Sistemas
Concorrentes
Por
Paulo Maciel
Centro de Informática
Universidade Federal de Pernambuco
Objetivo
Apresentar alguns formalismos para a
modelagem de sistemas concorrentes.
Descrever as principais características
destes modelos.
Modelagem de Problemas.
Ressaltar as pontencialidades destes
modelos.
Metodologia
Aulas expositivas
Seminários onde serão discutidos em sala os assuntos sugeridos.
Para cada um dos temas será fornecido material de estudo.
Aulas práticas.
Desenvolvimento de estudo de casos.
Bibliografia Básica
Intoduction to Discrete Event Systems, Cassandras
and Lafortune,
Lafortune, Kluwer,
Kluwer, 2008.
Concurrency: State Models & Java Programs, 2nd
Edition byJeff MageeandJeff Kramer John Wiley &
Sons 2006
Uma Introdução às Redes de Petri. Paulo Maciel,
Maciel,
Rafael Lins,
Lins, Paulo Cunha, Escola de Computação,
Computação,
1996.
Lectures Notes on Petri Nets I, Basic Models.
Springer Verlag,
Verlag, 1998.
Lectures Notes on Petri Nets II, Applications.
Springer Verlag,
Verlag, 1998.
Avaliação
Listas
Seminários
Trabalho Final (draft de artigo)
artigo)
Classificação dos Modelos
O que é um sistema?
O que é um modelo?
1
Classificação dos Sistemas
Estáticos
Dinâmicos Variantes no Tempo
Invariantes Estado Contínuo
Estado Discreto
Tempo Discreto
Tempo Contínuo
Classificação dos Sistemas
Estáticos
Dinâmicos
Não--Temporais Invariantes no Tempo Variantes no Tempo
Não
Determinísticos
Probabilístico
Eventos Discretos
Estado Contínuo
Contínuos
Estado Discreto
Tempo Discreto
Tempo Contínuo
Determinísticos
Classificação dos Modelos
Modelos Baseados em Estado
– Consideram apenas os estados para modelar e se referir as
propriedades do sistema.
– Maioria das lógicas temporais, autômatos
Modelos Baseados em Ações
– Consideram apenas as ações para modelar e se referir as
propriedades dos sistemas.
– As álgebras de processos: CCS, CSP, COSY, FSP
Motivação
Considere uma situação onde se deseja representar de forma
precisa o comportamento de um sistema de manufatura,
manufatura,
responsável pela fabricação de três tipos de produtos
diferentes.
A realização das atividades de manufatura de cada produto é
denominada um processo. Estes processos podem ser
executado paralelamente.
paralelamente.
O ambiente de manufatura disponibiliza três máquinas
(recursos) para realização das atividades dos processos.
Cada par de processos compartilha entre si uma máquina.
máquina.
E cada processo precisa simultaneamente de duas máquinas
para realização de uma determinada atividade.
Modelos Heterogêneos
– Consideram ações e estados.
– Redes de Petri
Motivação
Motivação
Estrutura do Problema
Processo
3
M3
M2
Processo
1
Probabilístico
Processo
2
M1
O Problema Jantar dos Filósofos
G2
P3
Filósofos
• Pensam
•Tem fome
•Comem
G3
P1
P2
G1
Como especificar
adequadamente
este problema de
forma que o
modelo obtido não
trave (deadlock) e
que todos os
filósofos tenham
oportunidade de
comer ?
2
Apresentacão
LTS – Sistema de Transição Rotulado,
Máquinas ou Autômatos (Labeled Transitions
Systems)
FSP – Finite Sequential Process
Redes de Petri
Apresentacão
Máquinas de Estados Finitos
LTS – Sistema de Transição Rotulado
CSP – Communicating Sequential Process
Estruturas Traces
Redes de Petri
(Finite State Machines)
(Labeled Transitions Systems)
Máquinas de Estados
Máquinas de Estados,
Autômatos ou
Sistemas de Transição
Rotulados
Máquina de Estados Determinística
Máquina de Estados NãoNão-Determinística
Máquina de Estados Finitos NãoNãoDeterminísitca
Máquinas de Estados Finitos Determinística
– Máquina de Estados Finitos Determinística
com Entradas e Saídas
Máquina de Estados
Determinística
SM= (S,E,f,Γ
(S,E,f,Γ, s0,Sm)
– S – Conjunto de estados
– s0 ∈ S– Estado inicial
– E – Alfabeto (conjunto de eventos)
– f : S × E → S – Função de próximo estado
– Γ : S → 2E – Função dos eventos factíveis
– Sm ⊆ S - Conjunto de estados marcados
Máquina de Estados
Determinística
S={s0,s1}, E={a,b}, f(s0,a) = s1,
f(s0,b) = s0, f(s1,a)=s1, f(s1,b)=s0,
Γ(s0) = {a,b}, Γ(s1) = {a,b}, Sm={s1}
b
s0
a
b
s1
a
3
Máquina de Estados
Determinística
Máquina de Estados
Determinística
Linguagem Gerada
L(SM) = {st ∈ E* | f(s0, st) é definida}
se f for uma função total então L(SM) = E*
Linguagem Marcada
Lm(SM) = {st ∈ L(SM) | f(s0, st) ∈ Sm}
b
L(SM1) = L(SM2)
Lm(SM1) = Lm(SM2)
a
s0
a
s1
b
Duas Máquinas de Estados SM1 e SM2
são ditas equivalentes se
Lm(SM) = {a, aa, ba, aaa, aba, ....}
L(SM)= E*
Máquina de Estados
Determinística
SM1
a
s0
Máquina de Estados
Determinística
a
s1
b
s0
s1
b
s2
b
a
L(SM1) = L(SM2)
Lm(SM1)=Lm(SM2)
Máquina de Estados
Determinística
1
s0
1
s1
3
1
2
1
2
E = {1,2,3}
2,3
s2
3
b
a
s4
g
•Alcançabilidade - Um
estado sn é alcançável de
s0 se existe um
conjunto de eventos
que realizados a partir de
s0 levam a sn.
s4 ∈R(s0)
s0 ∉ R(s4)
Máquina de Estados
Determinística
Detector de Seqüência 123
2,3
•Livelock - Estados s3, s4
s3
s2
a
s5
a
s0
a
•Deadlock - Estado s5
g
s1
a
g
SM2
SM
s3
Podemos modelar este problema
com um automata (máquina)
Sistema de Fila
de estados infinitos.
Neste ambiente, os usuários Os eventos que dirigem o sistema
chegam e solicitam acesso a são:
um servidor. Caso o servidor
esteja ocupado, os usuários a : chegada de um usuário
d: saída de um usuário
devem aguardar na
Portanto,
fila.Quando o usuário
completa a operação
E={a,d}
solicitada, ele sai do sistema S={0,1,2,...}
e o próximo usuário da fila é
f(s,a) = s+1, ∀ s≥0
servido imediatamente.
f(s,d) = ss-1, se s>0
Γ(s) = {a,d}, ∀ s>0
Γ(0) = {a}
4
Máquina de Estados
Determinística
Máquina de Estados
Determinística
Sistema de Fila
Sistema de Fila
E={a,d}
S={0,1,2,...}
f(s,a) = s+1, ∀ s≥0
f(s,d) = ss-1, se s>0
Γ(s) = {a,d}, ∀ s>0
Γ(0) = {a}
d
a
a
s0
a
a
s1
a
s2
d
s3
d
d
...
d
Para este mesmo sistema, vamos
focar o estado do servidor.
Vamos assumir que o servidor
pode estar desocupado (I
(I),
ocupado (B
(B) ou quebrado (D
(D).
Assumi--se que quando o
Assumi
servidor está quebrado, o
usuário em serviço é perdido.
Portanto, após o reparo, o
servidor está desocupado. Os
eventos são: serviço começa
(a), serviço finaliza (b
(b),
servidor quebra (l
(l) e servidor é
reparado (n
(n).
.
Máquina de Estados
Determinística
Sistema de Fila
E={a,b,l,n}
S={I,B,D}
f(I,a) = B, f(B,b) = I,
f(D,n) = I, f(B,l) = D,
Γ(I) = {a}, Γ(B) = {b,l},
Γ(D) = {n}
B
b
Máquina de Estados NãoNãoDeterminística
SMnd= (S,E ∪ {ε},F,
,F,Γ
Γ, s0,Sm)
S={0,1}
E={a,b}
F(0,a) = {0,1}
F(1,b) = {0}
Γ(0) = {a}
Γ(1) = {b}
S – Conjunto de estados
s0 ∈ S– Estado inicial
E – Alfabeto (conjunto de eventos)
F : S × E × S – Relação de próximos estados
Γ : S → 2E - Função dos eventos factíveis
Sm ⊆ S - Conjunto de estados marcados
Por quê utilizar?
1. Desconhecimento sobre determinadas atividades ou necessidade de
abstração
2. É possível obter um automata de menor número de estados.
l
D
E={a,b,l,n}
S={I,B,D}
f(I,a) = B, f(B,b) = I,
f(D,n) = I, f(B,l) = D,
Γ(I) = {a}, Γ(B) = {b,l},
Γ(D) = {n}
SMnd= (S,E∪
(S,E∪{ε},F,
,F,Γ
Γ, s0,Sm)
–
–
–
–
–
–
a
I
n
d
Máquina de Estados NãoNãoDeterminística
.
a
Máquina de Estados NãoNãoDeterminística
Máquina determinísitca equivalente
SMnd= (S,E,f,Γ
(S,E,f,Γ, s0,Sm)
a
S={A,B}
a
AI
1
B
E={a,b}
b
f(A,a) = B
f(B,a) = A, f(B,b) = A
Γ(A) = {a}
Máquinas não-determinísticas podem ser
convertidas em máquinas deteminísticas.
Γ(B) = {a,b}
a
a
0I
1
b
5
Máquina de Estados
-Algumas OperaçõesOperaçõesPartes Acessíveis (Reachable)
SM= (S,E,f,
(S,E,f, s0,Sm)
Rc(SM)=(Src,E,frc, s0, Smrc)
f(s0,st) esteja
Src={s ∈ S | ∃ st ∈ E* que f(s
definida}
Smrc= Sm∩ Src
frc=f| Src × E → Src é a função f com o domínio
restrito a (Src,E)
Máquina de Estados
-Algumas OperaçõesOperações Composição Paralela
SM1= (S1,E1,f1,Γ1, s01,Sm1)
SM2= (S2,E2,f2,Γ2, s02,Sm2)
SM1|| SM2=Rc(S1× S2, E1 ∪ E2,f1||2, Γ1||2, (s01, s02), Sm1× Sm2)
(f1(s1,e), f2(s2,e)) se e ∈ Γ1(s1)∩Γ2(s2)
f1||2((s1, s2),e) = (f1(s1,e), s2))
se e ∈ Γ1(s1)\ E2
(s1,f2(s2,e))
se e ∈ Γ2(s2)\ E1
indefinido
caso contrário
Γ1||2(s1, s2)={
)={Γ
Γ1(s1) ∩ Γ2(s2)} ∪ {Γ1(s1)\ E2} ∪ {Γ2(s2)\ E1}
Nós vamos assumir que as máquinas tratadas aqui são acessíveis.
Máquina de Estados
-Algumas OperaçõesOperaçõesComposição Paralela
a
a
X
Y
a,g
g
b
Z
Máquina de Estados
-Algumas OperaçõesOperações Composição
S={X,Y,Z}, E={a,b,g},
f(X,a) = X, f(X,g) = Z,
f(Y,a)=X, f(Y,b)=Y,
f(Z,b)=Z,
b f(Z,a)=f(Z,g)=Y
Γ(X) = {a,g}, Γ(Y) = {a,b},
Γ(Z) = {a,b,g}
Sm={X,Z}
S={s0,s1}, E={a,b}, f(s0,a) = s1,
f(s0,b) = s0, f(s1,a)=s1, f(s1,b)=s0,
Γ(s0) = {a,b}, Γ(s1) = {a,b}, Sm={s1}
b
s0
Máquina de Estados
-Algumas OperaçõesOperações
Composição Paralela
b
b
X,0
g
Z,0
a
a
X,1
X
b
g
Z,1
X
a
a
g
Y,0
a
b
a,g
Y,1
S={(X,0),(X,1),(Y,0),(Y,1),(Z,0),(Z,1)},
E={a,b,g},
f((X,0),a) = (X,1), f((X,0),g) = (Z,0),
f((X,1),a) = (X,1), f((X,1),g) = (Z,1),
f((Y,0),a)=(X,1), f((Y,0),b)=(Y,0),
f((Y,1),a)=(X,1), f((Y,1),b)=(Y,0),
f((Z,0),b)=(Z,0),
f((Z,0),a)=f((Z,1),g)= f((Z,1),a)=
(Y,1)
f((Z,1),b)= (Z,0)
Γ(X,0) = Γ(X,1) = {a,g},
Γ(Y,0) = Γ(Y,1) = {a,b},
Γ(Z,0) = Γ(Z,1) = {a,b,g}
Sm={(X,1),(Z,1)}
Paralela
a
b
s1
a
Máquina de Estados
-Algumas OperaçõesOperações
Composição Paralela
Se E1 = E2, todos os eventos de SM1||SM2
serão sincronizados
Se E1 ∩ E2 = ∅, não se tem eventos
sincronizados. TemTem-se a concorrência, com
nenhum sincronismo (interleaving dos
eventos de SM1 e SM2)
6
Máquina de Estados
-Algumas OperaçõesOperações-
Máquina de Estados
- Problema dos Filósofos -
Produto
SM1= (S1,E1,f1,Γ1, s01,Sm1)
SM2= (S2,E2,f2,Γ2, s02,Sm2)
SM1× SM2=Rc(S1× S2, E1 ∩ E2,f1×2, Γ1×2, (s01, s02), Sm1× Sm2)
(f1(s1,e), f2(s2,e)) se e ∈ Γ1(s1)∩Γ2(s2)
f1×2((s1, s2),e) =
indefinido
caso contrário
Suponhamos dois Filósofos P1 e P2. Cada filósofo ou está
pensando ou comendo. Os eventos i fj significam o filósofo i
pega o garfo j e os evento j f significam o filósofo j libera os
garfos.
P2
P1
1f1 1I1 1f2
2f1 2I1 2f2
1T
2T
X
1E
X
2E
1f
2f
1f2 1I2 1f1
2f2 2I2 2f1
Γ1×2(s1, s2)=
)=Γ
Γ 1( s 1) ∩ Γ 2( s 2)
1A
X
Máquina de Estados
- Problema dos Filósofos 1f
1f2
(1T,2T,1A,2A)
1f1
X
1f2
2f1
2f2
2f
2f2
1f1
1f1
(1E,2T,1U,2U)
Exercício: construir um
Deadlock modelo que não tenha
deadlock
(1T,2E,1U,2U)
Finite State Machine
Modelo Mealy
1/F
s0
1/F
s1
3/F
2/F
I = {1,2,3}
O={F,T}
1/F
2/F
1/F
2,3/F
s2
3/T
2U
SM= (S,I,O,f,h)
Finite State Machine
Detector de Seqüência 123
2,3/F
1f,2f
– S – Conjunto de Estados
– s0 ∈ S– Estado inicial
– I – Alfabeto de entrada
– O – Alfabeto de saída
– f : S × I → S – Função de próximo estado
– h: S × I → O – Função de saída
(1I2,2I1,1U,2U)
(1I1,2I2,1U,2U)
2f1
1f,2f
1f2,2f2
2A
X
1U
Finite State Machine
Modelo Mealy
2f1
1f2
2f2
1f1,2f1
Linguagem Gerada
L(SM) = {ik ∈ I | f é definida}
b
s3
s0
a
b
s1
a
L(SM) = {a, aa, ba, aaa, aba, ....}
Duas Máquinas de Estados SM1 e SM2 são ditas equivalentes se
L(SM1) = L(SM2)
7
Máquinas de Estados Finitos
Modelo Mealy
Máquinas de Estados Finitos
Modelo Mealy
Edfícil
I={a1,a2,a3}
ANDAR DESEJADO
O={d2,d1,p,s1,s2}
a1/p
a3
DE ANDARES
a2
a2/s1
S1
DIREÇÃO E
NÚMERO
a2/p
S2
a1/d1
O={d2,d1,p,s1,s2}
I={a1,a2,a3}
DIREÇÃO E
NÚMERO
S3
ANDAR DESEJADO
a3/p
DE ANDARES
a1
E
Máquinas de Estados Finitos
Modelo Moore
Máquinas de Estados Finitos
Modelo Moore
a1
a1
FSM= (S,I,O,f,h)
– S – Conjunto de Estados
– s0 ∈ S– Estado inicial
– I – Alfabeto de entrada
– O – Alfabeto de saída
– f : S × I → S – Função de próximo estado
– h: S → O – Função de saída
S11 /d2
S21 /d1
a2
a1
a1
S12 /d1
a3
a1
a1
S13 /p
a3
a1
a2
a3
a3
a2
S22 /p
a2
a2
S31 /p
a2
a3
S32 /s1
a3
a3
S23 /s1
a2
S33 /s2
a1
a3
Máquinas de Estados Finitos
– Dificuldades na modelagem direta da concorrência.
Sistema de Transição Rotulado
(Labeled Transition System)
Criação de processos
sincronização
– Impossibilidade de representação de sistemas acom
número infinito de estados.
– A análise de propriedades interessantes são
decidíveis
8
Sistema de Transição Rotulado
TS = (S,s0,L,tran)
Finite State Process
(FSP)
– S – Conjunto de Estados
– s0 – Estado inicial
– L – Conjunto de rótulos
a
– tran ⊆ S × L × S, normalmente indicada por s →
s’
Modelando Processos
Modelos serão descritos por Labelled
Transition Systems LTS.
Serão descritos textualmente através finite
state processes (FSP)
Ferramenta LTSA .
♦ LTS - forma gráfica
modelando processos
Um processo é a execução de programa seqüencial.
Modelaremos utlizando LTS que muda de estado pela
execução de ações atômicas.
on
0
♦ FSP - forma algébrica
1
off
on
off
on
off
on
off
……….
FSP - Prefixação
Se x é uma ação e P um processo então (x-> P)
descreve um processo que inicialmente executa a
ação x e comporta-se exatamente como descrito
pelo processo P.
ONESHOT = (once -> STOP).
once
0
ONESHOT state
machine
1
Convenção: ações começam com letras minúsculas e
PROCESSOS com letras maiúsculas
a light
switch LTS
a seqüência de
ações ou trace
FSP - Prefixação & Recursão
Comportamento Repetitivo - Usas-se recursão:
SWITCH = OFF,
OFF
= (on -> ON),
ON
= (off-> OFF).
Forma mais sucinta:
on
0
SWITCH = OFF,
OFF
= (on ->(off->OFF)).
1
off
Outra vez:
SWITCH = (on->off->SWITCH).
9
animação usando LTSA
FSP - Prefixação
Modelo FSP de um semáforo :
O animador LTSA pode
ser usado para produzir
um trace.
TRAFFICLIGHT = (red->orange->green>orange
-> TRAFFICLIGHT).
LTS gerado utilizando LTSA:
Escolha das ações
elegíveis.
red
.
0
orange
1
green
2
3
on
0
1
Trace:
orange
red
orange
green
orange
red
orange
gree
n …
off
FSP - Escolha
FSP - choice
Modelo FSP of uma máquina de venda :
Se x e y são ações então (x-> P | y-> Q)
descreve um processo que inicialmente executa
x or y. Após a primeira ação ter ocorrido, o
comportamento subseqüente é descrito po P se ta
primeira ação foi x e Q se foi y.
DRINKS = (red->coffee->DRINKS
|blue->tea->DRINKS
).
blue
LTS gerado usando-se
LTSA:
red
0
1
2
Quem o que fez a escolha ?
Quais são os traces possíveis?
coffee
tea
FSP - Processos e Ações
Indexadas
Escolha NãoNão-Determinística
Processo (x-> P | x -> Q) descreve um processo
que executa x e então comporta-se como P ou Q.
COIN = (toss->HEADS|toss->TAILS),
toss
HEADS= (heads->COIN),
TAILS= (tails->COIN).
toss
0
Quais são os possíveis
1
2
buffer que recebe como entrada um valor entre 0 e
3 e então fornece como saída:
BUFF = (in[i:0..3]->out[i]-> BUFF).
Equivale a
BUFF = (in[0]->out[0]->BUFF
|in[1]->out[1]->BUFF
|in[2]->out[2]->BUFF
|in[3]->out[3]->BUFF
Ou através de).
parâmetros de processos com valor
default:
BUFF(N=3) = (in[i:0..N]->out[i]-> BUFF).
heads
traces ?
tails
10
FSP - Ações Guardadas
A escolha (when B x -> P | y -> Q) significa
que quando a guarda B é verdadeira então as
ações x e y são ambas elegíveis, caso contrário, se
B is falso, então a ação x não pode ser escolhida.
Sistema de Transição Rotulado
Sejam dois processos concorrentes A e B
Processo A{
Processo B {
Enquanto C=T {
e1
e2
}
e3
e5
COUNT (N=3)
= COUNT[0],
COUNT[i:0..N] = (when(i<N) inc->COUNT[i+1]
|when(i>0) dec->COUNT[i-1]
).
inc
0
inc
1
dec
inc
2
dec
3
}
}
dec
Sistema de Transição Rotulado
e4
e5
Sistema de Transição Rotulado
Se A e B são dois processos, então (A||B)
representa a execução concorrente de A e B.
e2
s0
e3
e1
Processo A =
(e1 -> e2 -> Process A)
Processo B =
(e4 -> e5 - Process B)
s1
e4 e2
s3
e4
e3
s4
Process C = ((Process A || Process B) -> Process C )
s5
e4
s6
e1
e5
s7
Composição Paralela
Interleaving de Ações
Se VERTV e CONVERSA são dois processos,
então (VERTV||CONVERSA) representa a
execução concorrente de VERTV e CONVERSA.
O operador || é o operador de composição
paralela.
VERTV = (ver->STOP).
CONVERSA = (pensa->conversa->STOP).
||CONVERSA_VERTV = (VERTV
pensa
conversa
ver
pensa
ver
conversa
ver
pensa
conversa
Composição Paralela
Interleaving de Ações
ver
pensa
VERTV
0
1
0
ver
1
2 estados
2
3 estados
ver
CONVERSA_VERTV
|| CONVERSA).
Os traces
possíveis são
resultados do
interleaving de
ações.
conversa
CONVERSA
VERTV
pensa
conversa
0
1
2
(0,0)
(0,1)
(0,2)
CONVERSA
ver
3
(1,2)
4
5
(1,1)
(1,0)
conversa
pensa
2 x 3 estados
11
Modelando Interações
Ações Compartilhadas
Modelando Interações
Ações Compartilhadas
Se processoes em uma composição têm ações em comum, estas
ações são ditas compartilhadas.
3 estados
MAKERv2 = (make->ready->used->MAKERv2).
3 estados
USERv2 = (ready->use->used ->USERv2).
Ações compartilhadas modelam as interações entre processos.
Enquanto ações não compartilhadas podem ser
arbitrariamente interleaved , ações compartilhadas devem ser
executadas ao mesmo tempo por todos os processos.
MAKER = (make->ready->MAKER).
USER = (ready->use->USER).
||MAKER_USER = (MAKER || USER).
MAKER
sincroniza-se
com USER
quando ready.
Modelando Interações
Múltiplos Processos
||MAKER_USERv2 = (MAKERv2 || USERv2).
make
ready
0
MAKE_A
= (makeA->ready->used->MAKE_A).
MAKE_B
= (makeB->ready->used->MAKE_B).
ASSEMBLE = (ready->assemble->used->ASSEMBLE).
1
2
makeA
a.on
b.on
b:SWITCH
0
0
1
2
1
4
0
1
a.off
assemble
3
Interação
restringe o
comportamento
global
a:P prefixa cada rótulo associado a uma ação do alfabeto P
com a.
SWITCH = (on->off->SWITCH).
Duas instâncias de switch ||TWO_SWITCH = (a:SWITCH ||
process:
b:SWITCH).
a:SWITCH
ready
4 estados
3
used
||FACTORY = (MAKE_A || MAKE_B || ASSEMBLE).
makeA
use
Nomeação de Processo
Sincronização Múltipla:
makeB
3 x 3
estados?
5
makeB
b.off
Um array de instâncias do processo switch:
||SWITCHES(N=3) = (forall[i:1..N]
s[i]:SWITCH).
||SWITCHES(N=3) = (s[i:1..N]:SWITCH).
used
Nomeação de processo por um
conjunto de rótulos prefixos
{a1,..,ax}::P substitui todo rótulo associado a uma
ação no alfabeto de P com os rótulos a1.n,…,ax.n.
Posteriormente, toda ação (n->X) na definição de
P será substituída pelas transições ({a1.n,…,ax.n} >X).
RESOURCE = (acquire->release->RESOURCE).
USER = (acquire->use->release->USER).
||RESOURCE_SHARE = (a:USER || b:USER
|| {a,b}::RESOURCE).
Rótulos Prefixados a
Processos
a.acquire
a.use
b.acquire
a:USER
0
1
b.use
b:USER
2
0
1
a.release
b.release
Como se garante que um
usuário solicita um
recurso é o mesmo que o
libera ?
b.acquire
a.acquire
{a,b}::RESOURCE
a.acquire
0
b.acquire
b.use
a.use
RESOURCE_SHARE
0
2
1
2
3
4
1
a.release
b.release
b.release
a.release
12
Renomeação de Ações
Funções de renomeação são usadas para mudar os
nomes das ações. A forma geral é:
/{newlabel_1/oldlabel_1,… newlabel_n/oldlabel_n}.
Renomeação de Ações
||CLIENT_SERVER = (CLIENT || SERVER)
/{call/request, reply/wait}.
call
reply
0
O renomeação garante que processos
compostos se sincronizarão em uma ação
em particular.
1
CLIENT_SERVER
Algumas vezes é importante mostra as áções que não
são silents.
Quand aplicado ao processo P, o
operador de interface @{a1..ax} esconde
todas as ações exceto as presentes no
conjunto a1..ax.
service
1
2
reply
continue
call
0
Qunado apliado a um processo P, o operador hiding
\{a1..ax} remove os nomes das ações a1..ax do
alfabeto de P e torna estas ações "silent". Estas
ações são rotuladas por tau. Ações Silent em
processos diferentes não são compartilhadas.
0
2
service
1
CLIENT = (call->wait->continue->CLIENT).
SERVER = (request->service->reply->SERVER).
Tornando Internas (hiding
(hiding)) as
Ações-- Abstração para Redução de
Ações
Complexidade
call
SERVER
CLIENT
reply
2
3
continue
Tornando Internas (hiding
(hiding)) as
Ações
As seguintes definições são equivalentes:
USER = (acquire->use->release->USER)
\{use}.
USER = (acquire->use->release->USER)
@{acquire,release}.
A minimização remove as
acquire
0
ações silents produzindo
um LTS com
açõesobesrváveis.
tau
1
2
acquire
release
0
1
release
13
Download

Introdução aos Formalismos para Modelagem de Sistemas