Beruflich Dokumente
Kultur Dokumente
Conceito de processo
Estruturamos os sistemas complexos como sequência de
como conjuntos de actividades mais acções.
simples, cada actividade é
representada como um processo
sequencial. Modelar processos
como máquinas de
Desenhar software concorrente pode estados finitos.
ser complexo e permeável a erros.
Uma abordagem rigorosa é essencial.
Processos implementados
como threads em Java.
processos e threads
um comutador
0 1 de luz LTS
off
Uma sequência de
onoffonoffonoff ………. acções ou traço
SWITCH = OFF,
OFF = (on ->(off->OFF)).
Novamente ...
SWITCH = (on->off->SWITCH).
Animação usando o LTSA
0 1
off
FSP - prefixação de acções
0 1 2 3
Traço: orange
redorangegreenorangeredorangegreen …
FSP - selecção
0 1 2
tea
Selecção não determinista
COIN = (toss->HEADS|toss->TAILS),
HEADS= (heads->COIN), toss
TAILS= (tails->COIN).
toss
Lançamento da moeda.
0 1 2
Traços possíveis?
heads
tails
Modelar a falha
0 1
in
CHAN = (in->CHAN
|in->out->CHAN out
).
FSP - processos indexados e acções
valor indexado.
Expressões indexadas para 0 1 2 3
modelar cálculo:
const N = 1 out.0
SUM = (in[a:T][b:T]->TOTAL[a+b]),
TOTAL[s:R] = (out[s]->SUM).
FSP - acções guardadas
0 1 2 3
dec dec dec
FSP - acções guardadas
Um temporizador decrescente o qual emite um som após
N ticks, ou pode ser parado.
COUNTDOWN (N=3) = (start->COUNTDOWN[N]),
COUNTDOWN[i:0..N] =
(when(i>0) tick->COUNTDOWN[i-1]
|when(i==0)beep->STOP
stop
|stop->STOP
). stop
stop
stop
start tick tick tick beep
0 1 2 3 4 5
FSP - acções guardadas
const False = 0
P = (when (False) doanything->P).
Resposta:
STOP
FSP - alfabetos de processos
WRITER = (write[1]->write[3]->WRITER)
+{write[0..3]}.
O alfabeto de WRITER é o conjunto {write[0..3]}
2.2 Implementar processos
Implementar threads
em Java.