Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Jean-Marie Farines
1
Conhecido como paradoxo de Aquiles e da tartaruga que, na essncia, mostra uma
mquina - Aquiles - que pode realizar clculos infinitos num tempo finito.
iii
3.5.4 ChorusOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
3.5.5 Neutrino e QNX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.5.6 Linux para Tempo Real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100
3.6 Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104
Lista de Tabelas
Esse captulo visa esclarecer o entendimento de tempo real dos autores, definir
conceitualmente os Sistemas de Tempo Real e apresentar os problemas e desafios que
lhes so relacionados.
Sistema
Interface de Sistema Interface
a Homem- Operador
Instrumentao Computacional
Controlar Mquina
de Controle
Uma das crenas mais comuns que o problema de tempo real se resolve pelo
aumento da velocidade computacional. A rapidez de clculo visa melhorar o
desempenho de um sistema computacional, minimizando o tempo de resposta mdio de
um conjunto de tarefas, enquanto o objetivo de um clculo em tempo real o
atendimento dos requisitos temporais de cada uma das atividades de processamento
caracterizadas nesses sistemas [Sta88]. Ter um tempo de resposta curto, no d
nenhuma garantia que os requisitos temporais de cada processamento no sistema sero
atendidos. O desempenho mdio no tem importncia para o comportamento de um
sistema composto de diversas atividades com restries temporais. Mais do que a
rapidez de clculo, para os sistemas de tempo real, importa o conceito de
previsibilidade.
Um sistema de tempo real dito ser previsvel ("predictable") no domnio lgico e
no domnio temporal quando, independentemente de variaes ocorrendo nvel de
hardware (i.e. desvios do relgio), da carga e de falhas, o comportamento do sistema
pode ser antecipado, antes de sua execuo. Para se poder prever a evoluo de um
sistema de tempo real e garantir dentro de certos limites as suas restries temporais,
necessrio definir um conjunto de hipteses sobre o comportamento do ambiente
externo no que diz respeito carga e as falhas:
A hiptese de carga: ela determina o que corresponde a carga computacional de
pico (carga mxima) gerada pelo ambiente em um intervalo mnimo de tempo,
entre cada reao do sistema de tempo real. Mesmo eventos que ocorrem
esporadicamente como os que levam a situaes crticas (p.ex. alarme em planta
nuclear) devem ser levados em conta para determinar essa carga computacional;
A hiptese de falhas: ela descreve os tipos e freqncias de falhas com os quais o
sistema deve conviver em tempo de execuo, continuando a atender os seus
requisitos funcionais e temporais.
Consequentemente, de um ponto de visto rigoroso, para se assumir a previsibilidade
de um sistema (ou de um servio) de tempo real, precisa-se conhecer a priori o
comportamento de um sistema, levando-se em conta a pior situao de carga ocorrendo,
simultaneamente, com as hipteses de falhas. Como se v necessrio nesse caso que
6 1. Introduo sobre o Tempo Real
interaes com o seu ambiente sero atendidos. Mas na literatura, alguns autores como
em [JLT85] tambm associam o conceito de previsibilidade a uma antecipao
probabilista do comportamento do sistema, baseada em estimativas ou simulaes que
estipulam probabilidades dos prazos a serem atendidos. A previsibilidade probabilista
til em sistemas onde a carga computacional no pode ser conhecida a priori e portanto,
no se consegue uma garantia em tempo de projeto do atendimento de todos os prazos.
As discusses apresentadas acima sobre a previsibilidade, no que se refere a
aspectos de implementao, esto ligadas a um tipo de abordagem na construo de
sistemas de tempo real. Existem outras abordagens onde fatores ligados
implementao no so levados em conta e por hiptese, vlida num grande nmero de
aplicaes, o sistema de tempo real assumido com tendo um comportamento
determinista e por conseqncia a sua previsibilidade garantida. Essas abordagens que
apresentam formas distintas de conseguir a previsibilidade de sistemas de tempo real
so introduzidas no item 1.6 e apresentadas em detalhe no transcorrer desse livro.
1
O termo Abordagem Assncrona utilizado neste livro no consenso na literatura de
tempo real.
1.6 O Problema Tempo Real e Abordagens para a sua Soluo 9
2.1 Introduo
O conceito de tarefa uma das abstraes bsicas que fazem parte do que
chamamos um problema de escalonamento. Tarefas ou processos formam as unidades
de processamento seqencial que concorrem sobre um ou mais recursos computacionais
de um sistema. Uma simples aplicao de tempo real constituda tipicamente de vrias
tarefas. Uma tarefa de tempo real, alm da correo lgica ("correctness"), deve
satisfazer seus prazos e restries temporais ou seja, apresentar tambm uma correo
temporal ("timeliness").
As restries temporais, as relaes de precedncia e de excluso usualmente
impostas sobre tarefas so determinantes na definio de um modelo de tarefas que
parte integrante de um problema de escalonamento. Nas sees subseqentes
descrevemos essas formas de restries que normalmente esto presentes em
processamentos de tempo real.
Aplicaes de tempo real so caracterizadas por restries temporais que devem ser
respeitadas para que se tenha o comportamento temporal desejado ou necessrio. Todas
as tarefas de tempo real tipicamente esto sujeitas a prazos: os seus "deadlines". A
princpio, uma tarefa deve ser concluda antes de seu "deadline". As conseqncias de
uma tarefa ser concluda aps o seu "deadline" define dois tipos de tarefas de tempo
real:
Tarefas Crticas (tarefas "hard") : Uma tarefa dita crtica quando ao ser
completada depois de seu "deadline" pode causar falhas catastrficas no sistema de
tempo real e em seu ambiente. Essas falhas podem representar em danos
irreversveis em equipamentos ou ainda, em perda de vidas humanas.
coincidir com o tempo de chegada da tarefa. Em geral assumido que to logo uma
instncia de uma tarefa chegue, a mesma liberada na fila de Pronto. Mas, nem sempre
esse o caso; uma tarefa pode ser retardada na sua liberao pelo "polling" de um
escalonador ativado por tempo ("tick scheduler") ou talvez pelo bloqueio na recepo
de uma mensagem (tarefas ativadas por mensagem). Essa no coincidncia dos tempos
de chegada com as liberaes da tarefa conduz ao que identificado como "Release
Jitter", que representa a mxima variao dos tempos de liberao das instncias da
tarefa.
Diante das restries temporais citadas temos ento o comportamento temporal de
uma tarefa peridica Ti descrito pela qudrupla (Ji, Ci, Pi, Di) onde Ci representa o
tempo de computao da tarefa, Pi o perodo da tarefa, Di o "deadline" e Ji o
"Release Jitter" da tarefa que, de certa maneira, corresponde a pior situao de
liberao da tarefa. Nessa representao de tarefas peridicas, Ji e Di so grandezas
relativas (intervalos), medidas a partir do incio do perodo Pi. O "deadline" absoluto e
o tempo de liberao da ksima ativao da tarefa peridica Ti so determinados a partir
dos perodos anteriores:
dik = (k-1)Pi + Di
ri = (k-1)Pi +Ji (pior situao de liberao).
Pi Pi Pi
D D D
Ci Ci Ci
a r1 st ct d a =r st ct d a r3 st ct d t
F i g u r a 2 . 1 : A ti v a e s d e u m a t a r e f a p e r i d ic a
Na figura 2.1 ilustrado alguns dos parmetros descritos acima. Porm, cada
ativao da tarefa peridica (Ji, Ci, Pi, Di) definida a partir de tempos absolutos: os
tempos de chegada (ai), os tempos de liberao (ri), os tempos de incio (sti), os tempos
de trmino (cti) e os "deadlines" absolutos (di).
r e q u is i o 1 r e q u is i o 2
m in i m in i
Di Di
Ci C
0 a st ct d st = a ct d t
F ig u r a 2 .2 : A tiv a e s d e u m a ta re f a a p e r i d ic a
2.3 Escalonamento de Tempo Real 15
Uma tarefa espordica descrita pela tripla (Ci, Di, mini) onde Ci o tempo de
computao, Di o "deadline" relativo medido a partir do instante da requisio do
processamento aperidico (chegada da tarefa espordica) e mini corresponde ao
mnimo intervalo entre duas requisies consecutivas da tarefa espordica. A descrio
de uma tarefa aperidica pura se limita apenas s restries Ci e Di. Na figura 2.2, a
tarefa aperidica espordica (Ci, Di, mini) apresentada com duas requisies.
Tomando o tempo de chegada da requisio espordica 2 como a2, o "deadline"
absoluto desta ativao assume o valor dado por: d2=a2+Di.
1
No clculo da escala o pior caso considerado, levando em conta a pior situao de chegada
das tarefas, as tarefas se executando com os seus piores tempos de computao, as tarefas
espordicas ocorrendo na mxima freqncia possvel definida por seus intervalos mnimos entre
ativaes (mini), etc.
2.3 Escalonamento de Tempo Real 19
E sc a lo n a m e n to d e T e m p o R e a l
A b o rd a g e n s c o m G a ra n tia A b o rd a g e n s c o m A b o rd a g e n s d e
e m T e m p o d e P ro je to G a ra n tia D in m ic a M e lh o r E sfo r o
E x e c u tiv o D irig id o a T c n ic a s
P rio rid a d e s A d a p ta tiv a s
C c lic o
F ig u r a 2 . 3 : A b o r d a g e n s d e E s c a lo n a m e n t o d e T e m p o R e a l
c o n ju n to s d e ta re fa s e sc a lo n v e is c o n ju n to s d e ta re fa s n o e sc a lo n v e is
A u m e n to d a c o m p le x id a d e
te ste su fic ie n te d o s c o n ju n to s d e ta re fa s
te ste e x a to
te ste n e c e ss rio
F ig u r a 2 .4 : T ip o s d e te ste s d e e sc a lo na bilid a d e
( )
n
Ci
[2 ]
1
U = Pi n 2
n
1 .
i
A medida que n cresce, nesse teste, a utilizao do processador converge para 0,69.
Uma utilizao de aproximadamente 70% define uma baixa ocupao do processador
que, certamente, implica no descarte de muitos conjuntos de tarefas com utilizao
maior e que, mesmo assim, apresentam escalas realizveis (feasible).
Essa condio suficiente pode ser relaxada quando as tarefas do conjunto
apresentam perodos mltiplos do perodo da tarefa mais prioritria. Nesse caso a
utilizao alcanada sob o RM se aproxima do mximo terico, coincidindo o teste
abaixo com uma condio necessria e suficiente [Kop92c]:
n
U = C i
i
Pi 1.
0 , 753 n 2 ( 1
n
)
1 = 0 , 779
tarefa A -
tarefa B -
tarefa C -
A ,B ,C A B A A ,B C
n
U = i=1
Ci
Pi 1 . [3 ]
Esse teste suficiente e necessrio na classe de problema definida para o EDF pelas
premissas a, b, c e d. Se qualquer uma dessas premissas relaxada (por exemplo,
assumindo DiPi), a condio [3] continua a ser necessria porm no mais suficiente.
No exemplo mostrado na figura 2.6, o mesmo conjunto de tarefas submetido a
escalonamentos EDF e RM. A utilizao do conjunto de tarefas de 100%. Com isto
pela equao [2] o conjunto no escalonvel pelo RM. Entretanto, a equao [3]
garante a produo de uma escala pelo EDF. No caso (b) da figura 2.6, no tempo t = 50
a tarefa B perde seu "deadline". Alm da melhor utilizao, uma outra diferena,
normalmente citada na literatura, que o EDF produz menos preempes que o RM. A
favor do RM est a sua simplicidade que facilita a sua implementao.
ta r e fa A -
ta re fa s p e ri d ic a s C i P i D i
ta r e fa A 10 20 20 ta r e fa B -
ta r e fa B 25 50 50
A ,B A A B
0 10 20 30 40 50 60
t
(a) E sc a lo n a m e n to E D F
A ,B A A B
p e r d a d e d e a d lin e d e B
0 10 20 30 40 50 60
t
(b) E sc a lo n a m e n to R M
F ig u r a 2 . 6 : E s c a la s p r o d u z id a s p e lo ( a ) E D F e ( b ) R M
ta r e fa s p e r i d ic a s Ci Pi Di pi
ta r e f a A 2 10 6 1 ta r e f a A -
ta r e f a B 2 10 8 2
ta r e f a B -
ta r e f a C 8 20 16 3
ta r e f a C -
A ,B ,C A ,B A ,B ,C
d dB dC
0 4 8 12 16 20 24
t
F i g u r a 2 .7 : E s c a l a p r o d u z i d a p e l o D M
i t
Wi (t ) = . C j , [4 ]
j =1 Pj
28 2. O Escalonamento de Tempo Real
A condio necessria e suficiente para que a tarefa Ti seja escalonvel que exista
um valor de t em que a sua utilizao Ui(t) seja menor ou igual a 1, isto , que a carga
de trabalho Wi(t) no supere o intervalo de tempo t (Wi(t) t) [LSD89]. A dificuldade
deste teste est em se determinar este valor de t.
Como o modelo define tarefas peridicas com instante crtico ocorrendo em t = 0, se
cada tarefa Ti respeitar o seu primeiro "deadline" ento os "deadlines" subseqentes,
referentes a suas outras ativaes, tambm sero atendidos. Com isto, os valores de t
podem se limitar ao intervalo (0,Pi]. Neste caso a procura de t pode se resumir a testar
os valores de mnimo de Ui(t) no intervalo considerado:
No lugar de fazer uma procura entre todos os valores de t no intervalo (0, Pi], os
clculos podem se resumir a testar os valores de :
Pi
S i = kPj 1 j i, k = 1 ,2 , . . . , . [6 ]
P j
O teste acima quando comparado com [2], embora mais complexo, pode aprovar
conjuntos de tarefas que seriam rejeitados pelo teste suficiente proposto originalmente
para o RM. O teste composto a partir de [5] e [7] permite uma maior utilizao do
processador, formando uma condio suficiente e necessria [LSD89], [Fid98].
Como exemplo, considere o conjunto de tarefas da figura 2.6 (tabela 2.2) em que
ocorre na escala do RM, a perda do "deadline" da tarefa T2 em t=50. Para a verificao
2.5 Testes de Escalonabilidade em Modelos Estendidos 29
T a b e la 2 . 2 : E x e m p lo d a fig u r a 2 . 6
Nessa verificao, inicialmente temos que calcular as utilizaes Ui (t) para todas as
tarefas do conjunto. Comeamos ento calculando a carga de trabalho correspondente
de cada tarefa (equao [4]):
t t t
W1 (t ) = .1 0 e W 2 (t ) = .2 5 + .1 0 ,
2 0 5 0 2 0
W1 ( t ) W2 (t )
U 1 (t ) = e U 2 = .
t t
t = 20 U 2 (20) = 1,75
t = 40 U 2 (40) = 1,12
"deadlines" relativos iguais aos seus respectivos perodos. O modelo assume tambm
tarefas com "deadlines" menores aos seus perodos (Di Pi). Esse teste, diferentemente
dos anteriores, est fundamentado no conceito de tempo de resposta. Em [JoP86],
tempo de resposta mximo de uma tarefa foi introduzido como sendo o tempo
transcorrido entre a chegada e o trmino de sua execuo, considerando a mxima
interferncia que a tarefa pode sofrer de outras tarefas de maior ou igual prioridade.
Uma anlise de escalonabilidade que se utilize desse conceito deve representar ento o
pior caso de interferncias (em termos de tempo) sobre cada tarefa do sistema.
Para o clculo do tempo de resposta mximo de uma tarefa necessrio que se
defina uma janela de tempo Ri que corresponda ao intervalo de tempo mximo
transcorrido da liberao de uma tarefa Ti at o trmino de sua execuo. A largura Ri
corresponde ao tempo necessrio, em situao de instante crtico, para a execuo de Ti
e de todas as tarefas com prioridades maiores ou iguais a i (pi=i). Nestas condies, o
tempo de resposta mximo Ri da tarefa Ti dado por :
Ri = Ci + I j
j h p (i)
Uma tarefa Ti mantm suas propriedades temporais sempre que Ri Di. Nesta
verificao necessrio a determinao de Ri a partir de [8]. Porm a largura Ri
aparecendo em ambos os lados dessa equao, implica na necessidade de um mtodo
iterativo para essa determinao. Em [JoP86] apresentado um mtodo para solucionar
[8]:
Rn
R in + 1 = C i + i C j
j h p (i) P j
conjunto de n tarefas de tempo real como escalonvel sempre que a condio i:1 in
RiDi for verificada. Os clculos dos tempos de respostas formam a base para um teste
suficiente e necessrio.
ta re fa s p e ri d ic a s Ci Pi Di
ta r efa A 2 10 6
ta r efa B 2 10 8
ta r efa C 8 20 16
T a bela 2 .3 : E x em p lo d a fig u r a 2 .7
Para clarificar o uso desse teste de escalonabilidade, considere o exemplo que foi
apresentado na figura 2.7 onde era apresentada uma escala produzida pelo "Deadline
Monotonic". As caractersticas das tarefas so reproduzidas na tabela 2.3.
A poltica DM pelos valores da tabela define uma atribuio de prioridades onde
pA>pB>pC. Os tempos de resposta das tarefas consideradas so determinados a partir da
aplicao da equao [8] nos valores da tabela 2.3. A tarefa TA, por ser a mais
prioritria, no sofre interferncia das demais e o seu tempo de resposta dado por
RA=CA=2. TA escalonvel porque seu tempo de resposta mximo menor que seu
"deadline" relativo (DA = 6) O clculo de RB, ao contrrio, envolve mais passos devido
a interferncia que TB sofre de TA. Aplicando [8] obtido:
R B0 = C B = 2
2
R B1 = 2 + .2 = 4
1 0
4
R B2 = 2 + .2 = 4
1 0
A tarefa TB que apresenta RB = 4 tambm escalonvel (RB DB). O tempo RC, por
sua vez, envolve as interferncias de TA e TB em TC. A partir de [8]:
R C0 = C C = 8
8 8
R C1 = 8 + .2 + .2 = 1 2
1 0 1 0
12 12
R C2 = 8 + .2 + .2 = 1 6
10 1 0
16 16
R C3 = 8 + .2 + .2 = 1 6
1 0 1 0
Wi + J j
Wi = C i + Cj [9 ]
j h p (i) Pj
onde a soluo de [9] conseguida pelo mesmo mtodo iterativo usado para resolver
[8]. Wi o intervalo entre a liberao e o termino de Ti. Para o clculo do tempo de
resposta mximo (Ri), correspondendo ao intervalo de tempo entre a chegada e o
trmino da instncia da tarefa Ti, necessrio que se considere tambm o atraso mximo
experimentado por Ti na sua liberao:
R i = Wi + J i . [10 ]
interferncias internas, ou seja, uma vez que se pode ter Di > Pi, ocorrncias anteriores
de uma mesma tarefa podem interferir numa ativao posterior.
necessrio que se estenda o conceito de "busy period" para se determinar o pior
caso de interferncia em uma tarefa Ti onde suas ativaes podem se sobrepor. O "i-
busy period" no comea mais com a liberao da instncia de Ti que se deseja calcular
o tempo de resposta. O perodo ocupado i continua sendo a janela de tempo Wi que
inclui essa instncia de Ti e que corresponde a maior execuo contnua de tarefas com
prioridade maior ou igual a i (pi = i). Porm, o incio desse perodo de execuo
contnua de tarefas se d com a liberao de outra ativao anterior de Ti. Nessa
extenso assumido que a execuo de qualquer liberao de uma tarefa ser atrasada
at que liberaes anteriores da mesma tarefa sejam executadas completamente.
Considera-se ento o "i-busy period" incluindo q+1 ativaes de Ti que podem se
sobrepor na concorrncia ao processador pois Di > Pi. O valor da janela de tempo Wi(q)
correspondente dado por [TBW94]:
Wi (q )
W i ( q ) = ( q + 1) C i +
j h p (i) Pj j
C . [1 1 ]
R i ( q ) = W i ( q ) q Pi [1 2 ]
Esta janela corresponde ao maior valor de "i-busy period" que se consegue, antes da
execuo de uma tarefa menos prioritria que i [TBW94]. Nessas condies, o tempo
de resposta mximo Ri calculado por:
R i = m a x R i ( q ).
q = 0 , 1 , 2 ,...
Wi ( q ) + J j
W i ( q ) = ( q + 1) C i +
j h p (i) Pj
Cj
[1 3 ]
e R i = m a x ( J i + W i ( q ) q Pi ). [1 4 ]
q = 0 , 1 , 2 ,...
ta re fa s p e ri d ic a s Ji Ci Pi Di
ta r efa T 1 1 10 40 40
ta r efa T 2 3 10 80 25
ta r efa T 3 - 5 20 40
W (q ) + 1 W 3 (q ) + 3
W 3 ( q ) = ( q + 1 ) .5 + 3 .1 0 + .1 0
40 80
W 30 ( 0 ) = C 3 = 5
5 + 1 5 + 3
W 31 ( 0 ) = 5 + .1 0 + 8 0 .1 0 = 2 5
4 0
25 + 1 25 + 3
W 32 ( 0 ) = 5 + .1 0 + .1 0 = 2 5
4 0 8 0
O valor do tempo de resposta R3(0) dado por [12] e corresponde a 25. Com W3(0)
superando o perodo P3 (P3 = 20) ento, essa janela no corresponde ao maior "busy
2.6 Tarefas Dependentes:Compartilhamento de Recursos 35
W 30 ( 1 ) = C 3 = 5
5 + 1 5 + 3
W 31 ( 1 ) = 1 0 + .1 0 + 8 0 .1 0 = 3 0
4 0
30 + 1 30 + 3
W 32 ( 1 ) = 1 0 + .1 0 + .1 0 = 3 0
4 0 8 0
Com isto obtemos pela equao [12] R3(1) = W3(1) - P3 = 10. Como W3(1) < 2P3,
temos ento o mximo "3-busy period" envolvendo duas ativaes da tarefa T3. Logo o
tempo de resposta mximo da tarefa T3 o maior dos tempos de resposta obtidos, ou
seja, de valor 25, correspondendo a primeira ativao de T3 no maior "3-busy period".
A figura 2.8 mostra esse perodo ocupado de prioridade 3 onde T3 liberada em suas
duas ativaes em t = 0 e t = 20. Por sua vez, devido aos seus "releases jitters", as
tarefas T1 e T2 que chegam em 1 e 3, respectivamente, s so liberadas em t = 0. A
primeira ativao de T3 empurrada para fora de seu perodo interferindo com a
ativao seguinte da mesma tarefa.
T2 T1 T3 T3 d2
-3 -1 0 10 20 30
t
Fig u ra 2.8 : M aio r P ero do O cup ad o da T arefa T 3
tarefas comunicantes.
T1
T2
T
e x e c u ta n d o e m S C
T4
F ig u r a 2 .9 : In v e rs o d e p rio rid a d e s t
Descrio do Protocolo
O uso do Protocolo Herana de Prioridade (PHP) determina que as tarefas sejam
definidas possuindo uma prioridade nominal ou esttica, atribuda por alguma poltica
de prioridade fixa (RM, DM, etc.) e uma prioridade dinmica ou ativa derivada das
aes de bloqueio que ocorrem no sistema. Inicialmente, numa situao sem bloqueio
no sistema, todas as tarefas apresentam suas prioridades estticas coincidindo com suas
prioridades ativas. As tarefas so escalonadas tomando como base suas prioridades
ativas.
Quando uma tarefa Ti bloqueada em um semforo, sua prioridade dinmica ou
ativa transferida para a tarefa Tj que mantm o recurso bloqueado. Quando reassume,
Tj executa o resto de sua seo crtica com a prioridade herdada de Ti (pj = pi). Uma
tarefa herdada, ao se executar, sempre a mais alta das prioridades das tarefas que
mantenha sob bloqueio. No momento em que Tj ao completar sua seo crtica, libera o
semforo associado, a sua prioridade ativa retorna prioridade nominal ou assume a
mais alta prioridade das tarefas que ainda estejam sob seu bloqueio.
A aplicao do Protocolo Herana de Prioridade no exemplo anterior (da figura 2.9)
implica que T4 no mais sofrer de interferncias intermedirias (preempes de T2 e
T3) porque herda a prioridade de T1 em t=5 (figura 2.10). E, ao sair da sua seo crtica
(em t=7, figura 2.10), T4 volta ao nvel de sua prioridade original.
38 2. O Escalonamento de Tempo Real
e x e c u ta n d o e m S C
T 2
T 3
b lo q u e io p o r h e r a n a
d e T 2 e T 3 p o r T 4
T 4
0 1 2 3 4 5 6 7 8 9 1 0 1 1 t
F ig u ra 2 .1 0 : E x e m p lo d o u s o d o P H P
Uma tarefa mais prioritria quando executando sob o PHP pode sofrer dois tipos de
bloqueios [But97]:
Bloqueio direto: que ocorre quando a tarefa mais prioritria tenta acessar o recurso
compartilhado j bloqueado pela tarefa menos prioritria.
T1
E x e c u ta n d o e m SC
T
T3
T4
0 1 2 3 4 5 6 7 8 9 10 11
t
F ig u ra 2 .1 1 : B lo q u e io tra n s itiv o
i C j Bi
[15 ]
1
+ i ( 2 i 1), i.
j =1 j
P Pi
ta r e f a s Ci Pi Bi
T1 6 18 2
T2 4 20 4
T3 10 50 0
T a b e la 2 .5
C1 B1
+ 1
P1 P1
C1 C2 B2
+ + 0 ,8 2
P1 P2 P2
C1 C2 C3
+ + 0 ,7 8
P1 P2 P3
Todas essas relaes acima se verificam para os valores de indicados na tabela 2.5;
o que indica que o conjunto escalonvel e todas as tarefas se executaro dentro de
seus "deadlines".
Uma outra variante desse teste onde a escalonabilidade pode ser verificada apenas
por uma equao s, tambm apresentado em [SRL90]:
n
Ci B B 1
+ m a x 1 , . . . . , n n . 2 n 1 .
1
[1 6 ]
i =1 Pi P Pn
O novo teste mais simples que o anterior porm mais restritivo e menos preciso.
Como exemplo, considere o uso do teste [16] na verificao da escalonabilidade do
mesmo conjunto de tarefas da tabela 2.5. A equao [16] aplicada s condies desse
mesmo conjunto implica em:
C1 C C B B 1
+ 2 + 3 + m a x 1 , 2 3 2 3 1
P1 P2 P3 P1 P2
i t
P C j + Bi
j =1 j
U i (t ) = , i , min 0 < t Pi U i ( t ) 1. [17 ]
t
O bloqueio Bi apresentado na equao [18] como uma interferncia sofrida por Ti.
Todos os testes apresentados com as extenses referentes ao limite mximo de bloqueio
definido sob o PHP, deixam de ser exatos e passam a ser condies suficientes. Isto
porque, o clculo de Bi conforme citado acima, no exato, refletindo um pessimismo
por vezes exagerado.
Descrio do Protocolo
Nesse protocolo, todas as tarefas apresentam tambm uma prioridade nominal ou
esttica, definida pelo RM. Uma prioridade ativa ou dinmica que incorpora o
mecanismo de herana do PHP, tambm usada para definir a incluso da tarefa nas
escalas em tempo de execuo. Sempre que uma tarefa menos prioritria bloquear uma
mais prioritria, sua prioridade ativa assume a prioridade da tarefa mais prioritria. A
42 2. O Escalonamento de Tempo Real
Semforos : S1 - S2 - S3 -
T1
T3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
t
Eventos Descrio
1 T 3 comea sua execuo
2 T 3 entra em seo crtica (fecha o Semforo S 3 )
3 T 2 inicia seu processamento interrompendo T 3 (preempo de T 3).
4 T 2 sofre bloqueio direto: S 3 fechado por T 3 que reassume e herda prioridade de T 2.
5 T 3 entra na seo crtica aninhada ao fechar semforo S 2
6 T 1 inicia e interrompe T 3 . T 1 mais prioritria que T 3 com a prioridade herdada de T 2.
7 T 1 tenta fechar semforo S 1, bloqueado por ceiling; possui prioridade igual ao maior
ceiling de semforo j fechado pelas outras tarefas (C(S2 )=1).
8 T 3 libera semforo S 2 . T 1 reativado e interrompe T 3. T 1 entra em S1 .
9 T 1 libera S 1 .
10 T 1 fecha Semforo S2 .
11 T 1 libera S 2 .
12 T 1 termina e T 3 reassume na prioridade herdada de T 2 .
13 T 3 libera S 3 retornando a sua prioridade esttica. T2 interrompe T 3 e fecha S3 .
14,15,16,17 T 2 libera S 3 ; fecha e libera S 1 ; e completa. T 3 reassume e completa.
{
B i = m a x D j ,k
j ,k
(p j ) }
< p i (C ( S k ) p i ) .
ta r e f a s S1 S2 S3
ta r e f a T 1 1 1 0
ta r e f a T 2 1 0 1
ta r e f a T 3 0 4 8
T a b e la 2 .6
Para ilustrar o clculo de Bi sob o uso do PCP, considere a tabela 2.6 que descreve
as duraes de sees crticas (Dj,k) a partir de condies do problema apresentado na
figura 2.12. De acordo com a equao acima os bloqueios mximos por tarefas so
dados por:
B 1 = max (1,4) = 4
B 2 = max (8)= 8
B3 = 0
tarefas J i Ci Pi Di
T2
T1 1 10 40 40
T4 T2 3 10 80 25
T3 - 5 80 40
T4 - 10 80 80
T1 T3
2
As precedncias entre tarefas nas atividades podem ser expressas pela relao de ordem parcial
, definida sobre o conjunto de tarefas. Se Ti precede uma outra tarefa Tj (ou seja, Tj
sucessora de Ti), esta relao representada por TiTj, indicando que Tj no pode iniciar sua
execuo antes de Ti terminar. A relao transitiva.
2.7 Tarefas Dependentes: Relaes de Precedncia 47
W 20 = C 2 = 1 0
10 + 1
W 21 = 1 0 + 10 = 20
4 0
20 + 1
W 22 = 1 0 + 10 = 20
4 0
Com W2 =20 e tomando J2=3, o valor do tempo de resposta dado por R2 = 23. A
tarefa T3, por sua vez, sofre interferncias de T1 e um "jitter" porque sua liberao
depende da concluso de T2 (J3 = R2):
W 30 = C 3 = 5
5 + 1
W 31 = 5 + 10 = 15
4 0
15 + 1
W 32 = 5 + 10 = 15
4 0
O tempo de resposta de T3 dado por: R3 = W3+J3 = 38. A tarefa T4, por sua vez,
sofre interferncias de T1 e T3 e um "jitter" de T2 (J4 = R2):
W 40 = C 4 = 10
10 + 1 10 + 23
W 41 = 1 0 + 10 + 5 = 25
4 0 8 0
48 2. O Escalonamento de Tempo Real
25 + 1 25 + 23
W 42 = 1 0 + 10 + 5 = 2 5
4 0 80
Servidor de "Background"
Este servidor extremamente simples. A idia central corresponde em atender as
requisies aperidicas quando a fila de prontos envolvendo tarefas peridicas est
vazia, ou seja, se tarefas peridicas no esto se executando ou pendentes, o
processador entregue para a carga aperidica.
A determinao de prioridades nesta abordagem feita atribuindo - segundo o RM -
as prioridades mais altas para as tarefas peridicas. As prioridades mais baixas so
destinadas para as tarefas aperidicas. Como conseqncia, o "Background Server"
50 2. O Escalonamento de Tempo Real
(BS) apresenta tempos de resposta muito altos para cargas aperidicas. Se a carga
envolvendo as tarefas peridicas alta, ento a utilizao deixada para o servio de
"Background" baixa ou no freqente.
ta r e f a s Ci Pi Di pi ta r e f a A -
ta r e f a p e r i d ic a A 4 10 10 1
ta r e f a p e r i d ic a B 8 20 20 2 ta r e f a B -
ta r e f a a p e r i d ic a C 1 - - 3
ta r e f a a p e r io d ic a D 1 - - 3 ta r e f a C -
ta r e f a D -
A ,B C A D A ,B
0 2 4 6 8 10 12 14 16 18 20 22 24 t
F ig u r a 2 .1 4 : S e r v id o r a d e B a c k g r o u n d
"Polling Server"
O esquema do "Polling Server" (PS) consiste na definio de uma tarefa peridica
para atender a carga aperidica [SSL89]. Um espao aberto periodicamente na escala
para a execuo da carga aperidica, atravs da tarefa Servidora de "Polling". A tarefa
servidora possui um perodo PPS e um tempo de computao CPS e, como as outras
tarefas da carga peridica do sistema, tem a sua prioridade atribuda segundo o "Rate
Monotonic". Em cada ativao, a tarefa servidora executa as requisies aperidicas
pendentes dentro do limite de sua capacidade CPS o tempo destinado para o
atendimento de carga aperidica em cada perodo da servidora.
Quando no houver requisies aperidicas pendentes, a tarefa PS se suspende at a
sua nova chegada, no prximo perodo. Neste caso, a sua capacidade CPS entregue
para a execuo de tarefas peridicas pendentes. Se um pedido aperidico ocorre logo
depois da suspenso da tarefa servidora, o pedido deve aguardar at o incio do prximo
perodo da tarefa PS.
2.8 Escalonamento de Tarefas Aperidicas 51
tarefas Ci Pi Di pi tarefa A -
tarefa peridica A 4 10 10 3
tarefa peridica B 8 20 20 2 tarefa B -
tarefa servidora PS 1 5 - 1
tarefa aperidica C 1 - - - tarefa C -
tarefa aperiodica D 0,5 - - -
tarefa D -
A ,B C A D A ,B
0 2 4 6 8 10 12 14 16 18 20 22 24 t
C PS
0 5 6 10 15 16 20
n
+ P S (n + 1) 2 1 ,
Ci C
1
( n + 1)
i =1 Pi PP S
U P ( n + 1) 2 1 + U S .
1
ou seja ( n + 1)
"Deferrable Server"
O "Deferrable Server" (DS) tambm baseado na criao de uma tarefa peridica
que no conjunto de tarefas da carga esttica, recebe uma prioridade segundo uma
atribuio RM. Ao contrrio do PS, o DS conserva a sua capacidade tempo destinado
para o processamento aperidico mesmo quando no existir requisies durante a
ativao da tarefa DS. Requisies no peridicas podem ser atendidas no nvel de
prioridade da tarefa servidora, enquanto a sua capacidade CDS no se esgotar no perodo
correspondente. No incio de cada perodo da tarefa servidora, a sua capacidade
processamento restaurada.
Por preservar sua capacidade, a abordagem DS fornece melhores tempos de resposta
para as tarefas aperidicas que o "Polling Server". Como a tarefa servidora usualmente
executa na prioridade mais alta do conjunto peridico, se a capacidade for suficiente, o
atendimento de requisies aperidicas imediato.
ta re fa s Ci Pi Di pi
t a r e fa A -
t a r e fa p e r i d i c a A 4 10 10 3
t a r e fa B -
t a r e fa p e r i d i c a B 8 20 20 2
t a r e fa s e r v i d o r a P S 1 5 - 1 t a r e fa C -
t a r e fa a p e r i d i c a C 1 - - -
t a r e fa D -
t a r e fa a p e r i o d i c a D 0 ,5 - - -
A ,B C A D A ,B
0 2 4 6 8 10 12 14 16 18 20 22 24 t
C DS
0 5 6 10 12 15 20
F ig u r a 2 .1 6 : A lg o r t m o D e fe r r a b le S e r v e r
U +2
U P ln DS . [19]
2U DS + 1
Servidor Espordico
O "Sporadic Server" (SS), a exemplo dos algoritmos DS e PE, outra tcnica
introduzida em [SSL89] que apresenta bons tempos de resposta e de servio imediato
para requisies aperidicas. Com caractersticas semelhantes a dos anteriores, foi
introduzido para possibilitar a execuo de tarefas aperidicas com restries crticas.
O SS cria uma tarefa peridica que atua em um s nvel de prioridade para executar
requisies aperidicas. Para entender o funcionamento do algoritmo do SS
54 2. O Escalonamento de Tempo Real
requisio aperidica (t = 4,5). Portanto, como pode ser visto na figura 2.17, o
preenchimento da capacidade consumida neste intervalo ocorre em t=14,5
(RTi=ta+PSS). A preempo de C pela tarefa A em t = 5 no define dois intervalos
ativos da servidora para as duas partes de C da figura 2.17. Na verdade, um mesmo
intervalo ativo se mantm durante as execues de C e A porque, entre os tempos t=4,5
e t = 6,5, a condio pSS ps se mantm como vlida.
tarefa A - ta refa s Ci Pi Di pi
tarefa p e ri d ic a A 1 5 5 1
tarefa B - tarefa p e ri d ic a B 6 14 14 3
tarefa serv id o ra S S 2 ,5 10 - 2
tarefa C - tarefa ap eri d ica C 1 - - -
tarefa ap erio d ica D 1 - - -
tarefa D - C D
A B A A B A A
0 2 4 6 8 10 12 14 16 18 20 22 24 t
C SS
3
2
1
0 2 4 5 6 8 10 12 14 16 18 20
2
U ln . [2 0 ]
P
U SS + 1
56 2. O Escalonamento de Tempo Real
ta r e f a s C i P i U i (% )
ta r e f a 1 2 10 2 0 ,0
ta r e f a 2 6 14 4 2 ,9
se rv id o r D S 1 ,0 0 5 2 0 ,0
se rv id o r P E 1 ,3 3 5 2 6 ,7
se rv id o r S S 1 ,3 3 5 2 6 ,7
T a b e la 2 .7 : U tiliz a o d o s s e r v id o re s D S , P E e S S
ta re fa s Ci Pi Di M in i pi t a r e fa A -
t a r e fa p e r i d i c a A 4 12 12 - 1
t a r e fa B -
t a r e fa p e r i d i c a B 4 20 20 - 2
t a r e fa C -
t a r e fa s e r v i d o r a S S 8 32 10 - 3
t a r e fa a p e r i d i c a C 8 - 10 32 -
A ,B ,C A B
dC
0 2 4 6 8 10 12 14 16 18 20 22 24 t
F ig u r a 2 . 1 8 : S e r v id o r S S e R M u s a d o s e m c a r g a a p e r i d ic a c o m D i = M i n i
Nos casos de tarefas espordicas com Di<mini, so necessrias polticas que sejam
dirigidas por "deadlines", permitindo ento a atribuio do mais alto nvel de prioridade
servidora SS associada. A poltica de atribuio esttica "Deadline Monotonic" a
mais apropriada nestes casos. Na figura 2.19 uma escala mostrada com o mesmo
conjunto de tarefas sujeito a uma atribuio DM de prioridades e onde todos os
"deadlines" so respeitados. A tarefa C se executa em t=0 (a servidora SS a tarefa
mais prioritria) e, o preenchimento da capacidade consumida correspondente ocorre
em t=32, portanto, antes de esgotado o intervalo mnimo entre ativaes de C (minC).
ta r efa A -
ta re fa s Ci Pi Di M in i pi
ta r efa B - ta r efa p er i d ica A 4 12 12 - 2
ta r efa p er i d ica B 4 20 20 - 3
ta r efa C -
ta r efa ser v id o r a S S 8 32 10 - 1
ta r efa a p er id ica C 8 - 10 32 -
A ,B ,C A B
dC
0 4 8 12 16 20 24 28 32
t
CSS
0 4 8 12 16 20 24 28 32
2.9 Concluso
3.1 Introduo
tempo necessrio para a construo dos programas. Isto implica na reduo do custo do
software, na medida em que so necessrias menos horas de programador. Por exemplo,
atravs de funes que simplificam o acesso aos perifricos, escondendo os detalhes do
hardware, ou ainda funes que gerenciam o espao em disco ou na memria principal,
livrando o programador da aplicao deste trabalho.
Em geral, as facilidades providas por um sistema operacional de propsito geral so
bem vindas em um SOTR. O objetivo deste captulo no descrever sistemas
operacionais em geral, mas sim tratar dos servios que so fundamentais para um
SOTR. Desta forma, esta seo trata apenas dos seguintes aspectos: tarefas e "threads",
a comunicao entre elas, instalao de tratadores de dispositivos e interrupes e a
disponibilidade de temporizadores.
Entretanto, bom lembrar que a maioria das aplicaes tempo real possui uma parte
(talvez a maior parte) de suas funes sem restries temporais. Logo, preciso
considerar que o SOTR deveria, alm de satisfazer as necessidades das tarefas de tempo
real, fornecer funcionalidade apropriada para as tarefas convencionais. Aspectos como
suporte para interface grfica de usurio, protocolos de comunicao para a Internet,
fogem do escopo de um SOTR que execute apenas tarefas de tempo real. Porm, so
aspectos importantes quando considerado que uma aplicao tempo real tambm possui
vrios componentes convencionais.
"thread" so herdados da tarefa que a hospeda. Desta forma, o chaveamento entre duas
"threads" de uma mesma tarefa muito mais rpido que o chaveamento entre duas
tarefas. Por exemplo, como todas as "threads" de uma mesma tarefa compartilham o
mesmo espao de endereamento, a MMU ("memory management unit") no afetada
pelo chaveamento entre elas. No restante deste captulo ser suposto que o SOTR
suporta "threads". Logo, o termo tarefas ser usado para denotar um conjunto de
recursos tais como espao de endereamento, arquivos, "threads", etc, ao passo que
"thread" ser usado para denotar um fluxo de execuo especfico.
Aplicaes de tempo real so usualmente organizadas na forma de vrias "threads"
ou tarefas concorrentes. Logo, um requisito bsico para os sistemas operacionais de
tempo real oferecer suporte para tarefas e "threads. Embora programas
concorrentes possam ser construdos a partir de tarefas, o emprego de "threads"
aumenta a eficincia do mesmo. Devem ser providas chamadas de sistema para criar e
destruir tarefas e "threads", suspender e retomar tarefas e "threads", alm de chamadas
para manipular o seu escalonamento.
Durante a execuo da aplicao as "threads" passam por vrios estados. A figura
3.1 procura mostrar, de maneira simplificada, quais so estes estados. Aps ser criada, a
"thread" est pronta para receber o processador. Entretanto, como possivelmente vrias
"threads" aptas disputam o processador, ela dever esperar at ser selecionada para
execuo pelo escalonador. Uma vez selecionada, a "thread" passa para o estado
executando. A "thread" pode enfrentar situaes de bloqueio quando solicita uma
operao de entrada ou sada, ou ento tenta acessar uma estrutura de dados que est em
uso por outra "thread". Neste momento ela para de executar e passa para o estado
bloqueada. Quando a causa do bloqueio desaparece, ela volta a ficar pronta para
executar. A figura 3.1 diferencia como um tipo especial de bloqueio a situao na qual a
"thread" solicita sua suspenso por um intervalo de tempo, ou at uma hora futura pr-
determinada. Neste caso, a "thread" dita inativa. Ela voltar a ficar pronta quando
chegar o momento certo. Este estado tpico de uma "thread" com execuo peridica,
quando a ativao atual j foi concluda e ela aguarda o instante da prxima ativao.
Observe que "threads" peridicas tambm podem ser implementadas atravs da criao
de uma nova "thread" no incio de cada perodo e de sua destruio to logo ela conclua
seu trabalho relativo quele perodo. Entretanto, o custo (overhead) associado com a
criao e a destruio de "threads" maior do que o custo associado com a suspenso e
reativao, resultando em um sistema menos eficiente. importante notar que a figura
3.1 descreve o funcionamento tpico de um sistema operacional genrico. Uma
descrio exata da semntica de cada estado depende de detalhes que, na prtica,
variam de sistema para sistema. Por exemplo, quando um escalonamento esttico
garante que todos os recursos que a "thread" precisa para executar estaro disponveis
no momento certo, ento ela nunca passar pelo estado bloqueada.
3.2 Aspectos Funcionais de um Sistema Operacional Tempo Real 65
inativa bloqueada
3.2.4 Temporizadores
Embora seja possvel conceber uma aplicao tempo real que nunca precise "ler a
hora" ou "aguardar um certo intervalo de tempo", esta no a situao mais comum.
Tipicamente as aplicaes precisam realizar operaes que envolvem a passagem do
tempo, tais como:
Ler a hora com o propsito de atualizar um histrico;
Realizar determinada ao a cada X unidades de tempo (ativao peridica);
Realizar determinada ao depois de Y unidades de tempo a partir do instante
atual;
Realizar determinada ao a partir do instante absoluto de tempo Z.
Tais operaes permitem a implementao de tarefas peridicas, "time-outs",
"watch-dogs", etc. importante que o SOTR oferea um conjunto de servios que
atenda estas necessidades. Tipicamente o sistema possui pelo menos um temporizador
68 3. Suportes para Aplicaes de Tempo Real
As aplicaes tempo real desenvolvidas esto cada vez mais complexas, o que exige
uma sempre crescente funcionalidade do suporte de tempo real. Por exemplo, cada
vez mais comum a necessidade de interfaces grficas, conexo via rede local ou mesmo
Internet, algoritmos de controle mais inteligentes.
Ao mesmo tempo, existem razes de ordem econmica para a utilizao de solues
de prateleira ("off-the-shelf"). Em particular, usar um sistema operacional de propsito
geral no projeto significa usar um sistema operacional tipicamente mais barato, para o
qual existe uma grande quantidade de ambientes de desenvolvimento e tambm mais
fcil contratar programadores experientes.
O que impede o emprego de sistemas operacionais de propsito geral so as
restries temporais da aplicao. Assim, uma das primeiras decises que o projetista
de uma aplicao tempo real deve tomar : " realmente necessrio usar um SOTR" ?
A dificuldade desta deciso minimizada pela existncia de uma classe de SOTR
que simplesmente um sistema operacional popular adaptado para o contexto de tempo
real. Estes sistemas foram adaptados no sentido de mostrar alguma preocupao com a
3.3 Aspectos Temporais de um Sistema Operacional Tempo Real 71
resposta em tempo real. O resultado final obtido com eles melhor do que quando um
sistema operacional de propsito geral utilizado, mas no capaz de oferecer
previsibilidade determinista.
Independentemente do contexto em questo, diversas tcnicas populares em
sistemas operacionais de propsito geral so especialmente problemticas quando as
aplicaes possuem requisitos temporais. Por exemplo, o mecanismo de memria
virtual capaz de gerar grandes atrasos (envolve acesso a disco) durante a execuo de
uma "thread". Os mecanismos tradicionais usados em sistemas de arquivos, tais como
ordenar a fila do disco para diminuir o tempo mdio de acesso, fazem com que o tempo
para acessar um arquivo possa variar muito. Em geral, aplicaes de tempo real
procuram minimizar o efeito negativo de tais mecanismos de duas formas:
Desativando o mecanismo sempre que possvel (no usar memria virtual);
Usando o mecanismo apenas em tarefas sem requisitos temporais rigorosos
(acesso a disco feito por tarefas sem requisitos temporais, ou apenas requisitos
brandos).
Todos os sistemas operacionais desenvolvidos ou adaptados para tempo real
mostram grande preocupao com a diviso do tempo do processador entre as tarefas.
Entretanto, o processador apenas um recurso do sistema. Memria, perifricos,
controladores tambm deveriam ser escalonados visando atender os requisitos
temporais da aplicao. Entretanto, muitos sistemas ignoram isto e tratam os demais
recursos da mesma maneira empregada por um sistema operacional de propsito geral,
isto , tarefas so atendidas pela ordem de chegada.
Outro aspecto central o algoritmo de escalonamento empregado. Tipicamente
qualquer sistema operacional dispe de escalonamento baseado em prioridades. Neste
caso, bastaria que a prioridade das "threads" de tempo real fossem mais elevadas do
que as "threads" associadas com tarefas convencionais ("time-sharing" e
"background"). Entretanto, a maioria dos sistemas operacionais de propsito geral
inclui mecanismos que reduzem automaticamente a prioridade de uma "thread" na
medida que ela consome tempo de processador. Este tipo de mecanismo utilizado para
favorecer as tarefas com ciclos de execuo menor e diminuir o tempo mdio de
resposta no sistema. Entretanto, em sistemas de tempo real a justa distribuio de
recursos entre as tarefas menos importante do que o atendimento dos requisitos
temporais.
Considere, por exemplo, o algoritmo de escalonamento utilizado em verses
tradicionais do sistema operacional Unix, tais como o Unix System V release 3 (SVR3)
ou o Berkeley Software Distribution 4.3 (4.3BSD).
O Unix tradicional emprega prioridade varivel. Quando uma tarefa liberada e
possui prioridade maior do que a tarefa que est executando, existe um chaveamento de
contexto e a tarefa recm liberada passa a ser executada. Tarefas com a mesma
prioridade dividem o tempo do processador atravs do mecanismo de fatias de tempo.
Entretanto, duas caractersticas tornam este sistema problemtico para tempo real.
72 3. Suportes para Aplicaes de Tempo Real
interrupo
latncia
(A)
k-des hw
trat
tempo
interrupo
latncia k-hab = Kernel com interrupes habilitadas
(B) k-des = Kernel com interrupes desabilitadas
hw = Tempo que o hardware leva para ativar o tratador
k-des hw k-des trat = Cdigo que trata a interrupo do hardware
trat
interrupo tempo
(C) latncia
k-hab hw k-hab
trat
tempo
situaes.
Apenas 1 tratador Tratador 1 interrompido pelo tratador 2
interrupo
int.1 int.2
resposta
resposta 1
latncia resposta 2
latncia
tempo trat.2
tempo
trat
thread thread
tempo
ctx - Tempo para chavear o contexto
outra - Tempo at a outra thread liberar o recurso necessrio
100
80
60
40
20
0 1 5 10 15 20 25 30 35 40
temporal.
Obviamente a soluo de escalonamento oferecida em cada suporte tambm varia, e
depende do mercado alvo. Todas as abordagens apresentadas no captulo 2 encontram
utilidade em algum cenrio de aplicao e acabam sendo incorporadas em algum tipo de
suporte. As solues mais populares so o executivo cclico para NTR dedicados e
escalonamento baseado em prioridades, mas sem garantias, para SOTR. Uma lista de
suportes para tempo real com cerca de 100 referncias pode ser encontrada no anexo 2.
A figura 3.7 procura resumir os tipos de suportes encontrados na prtica. Esta uma
classificao subjetiva, mas permite entender o cenrio atual. Alm do NTR e do SOTR
descritos antes, existem outras duas combinaes de funcionalidade e comportamento
temporal. Obter funcionalidade mnima com pouca previsibilidade temporal trivial,
qualquer ncleo oferece isto. Por outro lado, obter previsibilidade temporal determinista
em um sistema operacional completo muito difcil e ainda objeto de estudo pelos
pesquisadores das duas reas. Embora no seja usual atualmente, razovel supor que
existiro sistemas deste tipo no futuro.
Funcionalidade
mnima completa
Previsibilidade Ncleo de
Futuro...
maior Tempo Real
importante observar que muitas vezes o suporte de tempo real existe, mas fica
escondido do programador da aplicao. Duas situaes so freqentes, especialmente
com NTR. possvel esconder o suporte dentro da prpria linguagem (como em ADA
ou Java) ou do ambiente de programao. Neste caso, os servios normalmente
associados com o sistema operacional no so obtidos atravs de chamadas de sistemas,
mas sim atravs de construes da prpria linguagem de programao. Por exemplo,
no existe alocao e liberao de memria explcita em Java. Muitos ambientes
integrados de desenvolvimento (IDE "Integrated Development Environment")
incluem extensas bibliotecas e pacotes que tambm so usados pelo programador no
lugar das chamadas de sistema.
3.4 Tipos de Suportes para Tempo Real 85
3.4.2 "Microkernel"
Aplicao
Kernel
Microkernel
Hardware
Posix um padro para sistemas operacionais, baseado no Unix, criado pela IEEE
(Institute of Electrical and Eletronic Engineers). Posix define as interfaces do sistema
operacional mas no sua implementao. Logo, possvel falar em Posix API
("Application Programming Interface"). Na verdade a quase totalidade dos sistemas
operacionais implementam chamada de sistema atravs de interrupo de software. O
Posix padroniza a sintaxe das rotinas de biblioteca que por sua vez executam as
interrupes de software que so a verdadeira interface do "kernel". Isto necessrio
porque a forma de gerar interrupes de software depende do processador em questo e
no pode ser realmente padronizada, ao passo que rotinas de biblioteca podem. Alm da
sintaxe em C, a semntica das chamadas Posix definida em linguagem natural. Como
parte da semntica, so definidas abstraes e uma terminologia prpria. Como Posix na
verdade procurou padronizar o Unix, as abstraes usadas j eram conhecidas da
maioria dos programadores.
O padro Posix na verdade dividido em diversos componentes. Em sua primeira
verso o padro definia apenas a API de um sistema operacional de propsito geral.
Entretanto novos elementos foram includos com o passar do tempo, incluindo a
interface para servios que so importantes no contexto de tempo real. Posix herdou do
Unix o termo "processo", com o mesmo significado do termo "tarefa" empregado neste
texto. Nesta seo vamos continuar usando "tarefa" para manter a coerncia com o resto
do captulo, mesmo nos momentos que a literatura Unix usaria a palavra "processo".
Muitos sistemas operacionais de tempo real possuem uma API proprietria. Neste
caso, a aplicao fica amarrada aos conceitos e s primitivas do sistema em questo.
Um porte da aplicao para outro sistema operacional dificultado pela
imcompatibilidade no somente das chamadas e parmetros, mas das prprias
abstraes suportadas.
Usando um SOTR que compatvel com Posix, a aplicao fica amarrada aos
conceitos e s primitivas do Posix. Alm disto, o porte da aplicao entre sistemas
diferentes, mas compatveis com o Posix, fica muito facilitado. Muitos SOTR
atualmente j suportam a API do Posix, como pode ser constatado atravs de uma visita
s pginas listadas em http://www.cs.bu.edu/pub/ieee-rts.
A documentao do Posix aparece dividida em diversos documentos. Por exemplo,
o padro 1003.1 descreve a funcionalidade bsica de um sistema operacional Unix e
88 3. Suportes para Aplicaes de Tempo Real
Posix inclui as primitivas clssicas "fork" para criao de uma tarefa filha e "wait"
para esperar pelo trmino de outra tarefa. Alm disto, cada tarefa pode conter vrias
"threads". As "threads" de uma mesma tarefa compartilham o seu espao de
endereamento mas possuem alguns atributos particulares, como o tamanho da sua pilha
individual.
Com respeito a mecanismos de sincronizao, o padro oferece uma coleo deles.
Posix inclui semforos que podem ser usados para sincronizar "threads" de diferentes
tarefas. Embora semforos possam ser usados para sincronizar "threads" da mesma
tarefa, o custo envolvido alto e existem alternativas mais eficientes. Alm das
tradicionais operaes P e V, existe uma operao P no bloqueante e uma primitiva
para determinar o valor atual do semforo.
Quando o objetivo da sincronizao garantir o acesso exclusivo a uma seo
crtica, Posix oferece a construo "mutex". Uma varivel tipo "mutex" suporta as
operaes "lock" e "unlock" e sua implementao mais eficiente do que semforos.
Variveis "mutex" tambm suportam os protocolos de herana de prioridade e uma
variao do "prioriry ceiling".
A sincronizao baseada em condies pode ser construda atravs de variveis
condio. Uma "thread" fica bloqueada junto a uma varivel condio atravs das
operaes "wait" ou "timedwait". Ela acordada quando outra "thread" executar uma
operao "signal" (acorda uma "thread") ou "broadcast" (acorda todas as "threads")
sobre a varivel condio em questo.
Cada varivel condio associada com uma varivel "mutex" quando criada.
Para ficar bloqueado em uma varivel condio uma "thread" deve ter antes executado
um "lock" sobre o "mutex" associado. No momento que a "thread" ficar bloqueada na
varivel condio o "mutex" automaticamente liberado. Da mesma forma, quando
uma "thread" acordada da varivel condio, automaticamente solicitado um "lock"
sobre o "mutex" associado. A "thread" somente retoma sua execuo aps ter obtido
novamente o "lock" sobre o "mutex". Embora o Posix no especifique qual "thread"
ganha o "mutex" quando uma "thread" acorda outra, o escalonamento baseado em
prioridades resolve a questo executando a "thread" com maior prioridade. Esta
operao conjugada de "mutex" e varivel condio permite facilmente a
implementao de construes do tipo monitores, como descrito em [BuW97]. Isto
pode ser feito atravs de disciplina de programao e chamadas diretas ao sistema
operacional ou ento pode ser usado por um compilador para implementar monitores a
nvel da linguagem de programao.
Posix tambm define um mecanismo chamado fila de mensagens, o qual
semelhante a caixas postais, pois a comunicao assncrona e o endereamento
indireto (endereo de fila e no de tarefa). Cada fila de mensagens pode ter vrios
leitores e vrios escritores. Mensagens podem ter prioridades, usada ento para ordenar
as mensagens na fila. Filas de mensagens podem ser usadas para a comunicao entre
"threads" da mesma tarefa mas, em funo do custo associado, faz mais sentido usa-las
para a comunicao entre "threads" de tarefas diferentes. "Mutexes" e variveis
90 3. Suportes para Aplicaes de Tempo Real
cdigo para suportar uma interface padro definida pelo SVR4, cujas rotinas sero
chamadas sempre que uma deciso de escalonamento envolvendo tarefas daquela classe
forem necessrias. Desta forma, alm das duas classes providas sempre, o projetista
livre para criar sua prpria soluo de escalonamento. Obviamente ser muito mais fcil
portar a aplicao para outras instalaes se apenas as classes de escalonamento bsicas
forem utilizadas.
A classe "time-sharing" a classe "default" das tarefas. Tarefas possuem
prioridades variveis, definidas em tempo de execuo. Fatias de tempo so usadas para
dividir o tempo do processador entre tarefas de mesma prioridade. A durao da fatia de
tempo depende da prioridade da tarefa (menor prioridade, maior fatia). Em vez de
recalcular a prioridade de cada tarefa a cada segundo (como no Unix SVR3), o SVR4
recalcula a prioridade de uma tarefa somente na ocorrncia de eventos associados com a
tarefa. Desta forma o custo computacional deste reclculo drasticamente reduzido.
A prioridade reduzida sempre que a fatia de tempo esgotada pela tarefa. A
prioridade elevada sempre que a tarefa fica bloqueada por alguma razo ou fica muito
tempo sem esgotar sua fatia de tempo (provavelmente porque outras tarefas de maior
prioridade esto sempre tomando o processador). O reclculo rpido, pois o evento
em geral afeta uma nica tarefa de cada vez.
O descritor de uma tarefa contm, entre outros campos:
ts_timeleft - tempo restante na fatia;
ts_cpupri - parte da prioridade definida pelo sistema;
ts_upri - parte da prioridade definida pelo usurio (nice, entre -20 e +19);
ts_umdpri - prioridade em modo usurio, ts_cpupri + ts_upri, valor mximo de
59;
ts_dispwait - nmero de segundos desde o incio da fatia.
Quando uma tarefa acorda de um bloqueio dentro do "kernel" a sua nova prioridade
dentro do "kernel" determinada pela condio de bloqueio da qual acorda. Ao voltar
para modo usurio a prioridade definida pelo campo ts_umdpri. Uma tabela de
parmetros determina como ts_cpupri calculada. Ela contm uma entrada para cada
nvel de prioridade possvel no sistema. Os campos desta tabela determinam o
funcionamento de um mecanismo de envelhecimento ("aging").
A classe tempo real utiliza prioridades entre 100 e 159, maiores que qualquer tarefa
time-sharing. Quando uma tarefa tempo real liberada, ela obtm o processador
imediatamente no caso de estar executando uma tarefa time-sharing em modo usurio.
No caso de uma tarefa "time-sharing" estar executando cdigo do "kernel", a tarefa
tempo real ser obrigada a esperar que a tarefa "time-sharing" execute at atingir o
prximo ponto de interrupo do "kernel". Esta espera pode ser relativamente grande e
prejudica bastante o tempo de resposta das tarefas de tempo real no Unix SVR4.
Cada tarefa tempo real caracterizada pela sua prioridade e pela sua fatia de tempo.
94 3. Suportes para Aplicaes de Tempo Real
A tabela de parmetros empregada por esta classe contm apenas a fatia de tempo
"default" para cada nvel de prioridade. Tipicamente so fatias maiores para prioridades
menores, pois espera-se que as tarefas de prioridade maior sejam muito curtas.
Entretanto, como fatias de tempo so usadas apenas para tarefas de mesma prioridade,
este mecanismo pode ser completamente ignorado em anlises de escalonabilidade.
Uma figura de mrito importante a latncia desde uma interrupo de hardware at
o disparo da tarefa que trata este evento. Quando o evento ocorre ele sinalizado por
uma interrupo. Existe o processamento da interrupo, a qual libera a tarefa de tempo
real. Se houver uma tarefa "time-sharing" executando cdigo do "kernel", ser
necessrio esperar que ela chegue at o prximo ponto de interrupo. Neste momento
ocorre o chaveamento de contexto e a tarefa tempo real inicia a sua execuo. O cdigo
da aplicao executado, respondendo ao evento. Observe que, para o tempo de
resposta da tarefa tempo real, ainda seria necessrio incluir as interferncias e bloqueios
causados por outras tarefas tempo real da prpria aplicao.
Certamente a soluo de escalonamento do SVR4 melhor do que a soluo Unix
tradicional. Entretanto, ainda no satisfatria para muitas aplicaes de tempo real,
pois em geral melhora o desempenho mas no resolve completamente o problema da
previsibilidade. Alm do "kernel" no ser interrompvel em qualquer ponto, difcil
ajustar o sistema para um conjunto misto de aplicaes. Por exemplo, experincias
envolvendo um editor simples, uma tarefa em "background", e uma sesso de vdeo
usando X-server, mostraram que nenhuma atribuio de classes e prioridades resolve
completamente o problema de compartilhamento do processador neste sistema
operacional. Alm disto, os tempos das chamadas de sistema e os tempos mximos de
bloqueio dentro do "kernel" no so conhecidos.
3.5.4 ChorusOS
Linux um sistema operacional com fonte aberto, estilo Unix, originalmente criado
por Linus Torvalds a partir de 1991 com o auxlio de desenvolvedores espalhados ao
redor do mundo. Linux "free software" no sentido que pode ser copiado, modificado,
usado de qualquer forma e redistribudo sem nenhuma restrio. Entretanto, ningum
usando Linux ou criando uma adaptao do Linux pode tornar o produto resultante
proprietrio. Desenvolvido sob o "GNU General Public License", o cdigo fonte do
Linux est disponvel de graa para todos.
O sistema operacional Linux uma implementao independente do Posix e inclui
multiprogramao, memria virtual, bibliotecas compartilhadas, protocolos de rede
TCP/IP e muitas outras caractersticas consistentes com um sistema multiusurio tipo
Unix. Uma descrio completa do Linux no cabe neste livro. Alm da pgina oficial
http://www.linux.org, qualquer pesquisa na Internet ou na livraria vai revelar uma
enorme quantidade de material sobre o assunto.
O Linux convencional segue o estilo de um "kernel" Unix tradicional, no baseado
em "microkernel", e portanto no apropriado para aplicaes de tempo real. Por
exemplo, em [ENS99] descrita uma aplicao onde uma aplicao de controle de
aproximao de aeronaves em aeroportos executada simultaneamente com outros
programas que representam uma carga tipicamente encontrada em sistemas operacionais
de tempo real. A aplicao em questo utiliza um servidor grfico X e deve apresentar
as informaes dentro de certos limites de tempo, o que a caracteriza como uma
aplicao de tempo real "soft". O sistema operacional Linux kernel 2.0 foi utilizado.
Mesmo quando a aplicao tempo real executa na classe "real-time" e as demais
aplicaes executam na classe "time-sharing" o desempenho no foi completamente
satisfatrio. Em especial, tarefas "daemon" que executam servios tanto para aplicaes
de tempo real como para aplicaes convencionais executam com sua prpria
prioridade e atendem as requisies pela ordem de chegada. Neste momento, as tarefas
de tempo real perdem a vantagem que tem com respeito a poltica de escalonamento e
passam a ter o mesmo atendimento que qualquer outra tarefa.
Entretanto, o "kernel" do Linux possui um recurso que facilita sua adaptao para o
contexto de tempo real. Embora o "kernel" seja monoltico e ocupe um nico espao de
endereamento, ele aceita "mdulos carregveis em tempo de execuo", os quais
podem ser includos e excludos do "kernel" sob demanda. Estes mdulos executam em
modo privilegiado e so usados normalmente na implementao de tratadores de
dispositivos ("device-drivers"), sistemas de arquivos e protocolos de rede. No caso dos
sistemas de tempo real, esta caracterstica facilita a transferncia de tecnologia da
pesquisa para a prtica. Solues de escalonamento tempo real podem ser implantadas
dentro do "kernel" de um sistema operacional de verdade. Como o cdigo fonte do
"kernel" do Linux aberto, possvel estudar o seu comportamento temporal, algo que
impossvel com SOTR comerciais cujo "kernel" tipicamente uma caixa preta.
Na pgina http://www.linux.org/projects/software.html esto listados vrios projetos
3.5 Exemplos de Suportes para Tempo Real 101
Uma extenso ao modelo original permite que uma tarefa programada como um lao
infinito (como um servidor, por exemplo) execute em determinados momentos
previamente reservados. Por exemplo, execute 100 microsegundos dentro de cada
milisegundo. Solues de escalonamento baseadas na utilizao do processador podem
ser implementadas atravs deste mecanismo.
Segundo os autores do KURT-Linux, possvel integrar as solues do KURT-
Linux com as do RT-Linux e que foram feitas experincias com sucesso neste sentido.
Desta forma, seria possvel combinar a melhor marcao de tempo e disparo de tarefas
do KURT-Linux com a baixa interferncia experimentada pelas tarefas de tempo real no
RT-Linux.
3.6 Concluso
4.1 Introduo
Reatividade: O modelo reativo uma vez que se aplica a sistemas que entram
em ao reagindo presena de estmulos vindos do ambiente em instantes
discretos. Cada reao, portanto, est associada a um instante preciso; o
conjunto destes instantes caracteriza a vida do sistema reativo.
? B.~ R.! O
?A.~R.! O
?R ?R
?B.~R.! O
? A.~R.! O
module ABRO:
input A, B, R;
output O;
loop
[await A || await B];
emit O
each R
end module
loop
[await A || await B || await C];
emit O
each R
module Medidor-Velocidade:
input Centmetro, Segundo;
relation Centmetro # Segundo;
output Velocidade : integer;
loop
var Distancia := 0 : integer in
abort
every Centmetro do
Distancia := Distancia + 1
end every
when Segundo do
emit Velocidade (Distancia)
end abort
end var
end loop
end module
pelo ambiente entre os sinais do tipo input (e tambm do tipo return). Os dois
tipos de relao so de incompatibilidade ou excluso entre os sinais (#) como o
caso neste exemplo e de sincronizao entre sinais (=>). As relaes so teis para
evitar a programao de situaes de menor importncia e reduzir em conseqncia o
tamanho do autmato gerado, facilitando a sua verificao.
Em algumas situaes onde apenas necessrio a leitura de um valor a qualquer
momento, sem a necessidade de gerar tambm um evento de entrada, pode se utilizar o
sinal de entrada sensor que tem apenas o valor mas sem a presena da informao de
estado. Assim como o sinal com valor, definido anteriormente, o sensor tem o seu valor
lido pelo operador ?.
Uma varivel um objeto ao qual podem ser atribudos valores. Uma varivel
local uma thread que corresponde ao corpo p de um mdulo (no exemplo anterior a
varivel Distancia incrementada a cada sinal de entrada Centmetro dentro da malha
every ... end every do corpo do abort). O valor da varivel pode ser fornecido por
uma instruo de atribuio instantnea ou passado numa chamada de um procedimento
externo instantneo ou ainda passado pela instruo exec que permite a execuo de
tarefas externas de clculo que tomam tempo (esta instruo ser vista futuramente).
Contrariamente ao sinal, uma varivel pode tomar vrios valores sucessivos no mesmo
instante.
await S;
loop
abort [p; halt] when S
end loop
e permite realizar tambm uma preempo forte de seu corpo e a seguir ser atrasado
(halt uma primitiva que significa espera para sempre). Esta construo tem ainda
uma forma imediata every immediate S do p end que permite levar em conta o sinal
desde o primeiro instante. A soluo do problema da simultaneidade de Centmetro e
Segundo no mdulo Medidor-Velocidade pode ser tambm resolvido usando um
abort forte e um every immediate; neste caso o centmetro no ser contado
durante o segundo que esta acabando ms ser levado em conta no inicio do prximo
segundo.
Apesar de ter discutido essas construes apenas em termos de sinal, expresses de
sinais que so na verdade expresses booleanas formadas com operadores "not",
"and", e "or" aplicadas sobre o estado de vrios sinais podem ser utilizadas nas
construes temporais abort, every.
A linguagem Esterel fornece ainda um outro tipo de preempo mais brando que
tem um efeito de suspenso (do tipo ^Z do Unix em contraposio com o tipo ^C mais
duro da construo abort): suspend p when <S ou expresso-sinal>. Quando a
construo suspend inicia, o corpo p imediatamente iniciado. A cada instante, se o
sinal S esta presente ou a expresso de sinal for true, o corpo p se suspende e
114 4. O Modelo de Programao Sncrona para os Sistemas de Tempo Real
trap T in
p
handle T do
q
end trap
present
case e 1 do p 1
case e 2 do p 2
case e 3 do p 3
else q
end present
4.3.7 Mdulo
O mdulo a unidade bsica para construir programas Esterel. Ele tem um nome,
uma declarao de interface e um corpo que executvel.
module <nome> :
<declarao de interface>
<corpo>
end module
m odule A B C R O :
inpu t A , B , C , R ;
outp ut O ;
signal A B in
run A B R O [sign al A B / O ]
||
run A B R O [sign al A B / A , C / B ]
end sign al
end m odu le
116 4. O Modelo de Programao Sncrona para os Sistemas de Tempo Real
O submdulo ABRO [signal AB/O] se comporta como "loop [await A || await B];
emit AB each R"; o submdulo ABRO [signal AB/A, C/B] como "loop [await AB ||
await C]; emit O each R"; a difuso instantnea do sinal AB nos dois submdulos
paralelos torna o comportamento do mdulo ABCRO equivalente ao comportamento j
descrito anteriormente "loop [awaitA || await B || await C]; emit O each R". Constata-
se ainda que o modelo de programao sncrona fornece como resultado adicional
interessante, a reinicializao simultnea dos dois submdulos pelo sinal R.
A declarao de interface do mdulo define os objetos que este importa ou exporta:
objetos de dados (tipos, constantes, funes, procedimentos, tarefas) declarados de
forma abstrata em Esterel e implementados externamente e objetos de interface reativa:
os sinais e sensores. Todos os dados so globais ao programa. Cada dado usado num
mdulo, deve ser declarado nele.
sero emitidos de forma contnua; o sinal de sada Pular ser emitido em reao ao
sinal de entrada Passo. Desta forma fica definida a interface do mdulo Corredor cujo
o cdigo ser apresentado a seguir. As relaes de sincronizao entre sinais so
expressas no programa pelo smbolo =>.
O corpo do programa uma traduo natural da especificao informal seguindo o
estilo de programao apresentado anteriormente cujo o princpio fundamental consiste
em controlar as atividades a partir das construes de preempo. O uso de preempes
aninhadas uma forma simples e natural para expressar prioridades entre estas. Uma
linha de conduta para uma boa programao consiste a partir de uma primeira leitura da
especificao, em construir inicialmente a estrutura de preempes aninhadas, usando a
indentao das construes de preempo para visualizar o aninhamento e depois, a
partir de uma releitura da especificao, em introduzir as outras construes no corpo
do programa. O cdigo em Esterel do mdulo Corredor o seguinte:
module Corredor
constant Nmero-Voltas: integer;
input M anha, Volta, M etro, Passo, Segundo;
relation M anha => Segundo,
Volta => M etro;
output Correr-Devagar, Pular, Correr-Rpido;
every M anha do
abort
abort
abort
sustain Correr-Devagar
when 100 M etro;
abort
every Passo do
emit Pular
end every
when 15 Segundo;
sustain Correr-Rpido
when Volta
when Nmero-Voltas Volta
end every
end module
every Manha do
trap Anomalia in
abort
abort
abort
sustain Correr-Devagar
when 100 Metro;
abort
every Passo do
emit Pular
end every
||
<Monitorar-Corao>
when 15 Segundo;
sustain Correr-Rapido
when Volta
when Nmero-Voltas Volta
handle Anomalia do
<Voltar-Vestirio>
end trap
end every
weak abort
exec TASK (X) (...) return R;
when I
abort
exec TASK (X) (...) return R;
when I
su sp en d
e x e c T A S K ( X ) ( .. .) r e t u r n R ;
w h en S
exec
case T 1 (...) (...) return R 1 do p 1
...
case T n (...) (...) return R n do p n
end exec
loop
exec TA SK (X ) (...) return R ;
each I
Causalidade:
A expressividade da linguagem sncrona Esterel possibilita a construo de
programas no-causais.
A capacidade de comunicao atravs de sinais difundidos instantaneamente, pode
levar alguns programas a desrespeitar a causalidade. Por exemplo, o programa que
segue:
O programa seguinte:
128 4. O Modelo de Programao Sncrona para os Sistemas de Tempo Real
em it U ; p resen t S th en em it T en d
o sistema total que consiste em colocar cada um destes programas em paralelo com um
terceiro programa p3 cujo cdigo :
p re se n t U th e n e m it S e n d
apresenta uma soluo correta para o caso p2 || p3 e uma no-causalidade para p1 || p3.
4.9 Concluso 129
Malhas instantneas:
Uma outra situao indesejvel que pode levar a uma situao sem soluo o caso
das malhas instantneas cujo corpo termina no instante onde executado pela primeira
vez; por exemplo na instruo:
em it S (?S + 1)
4.9 Concluso
Esta seo descreve um sistema com requisitos de tempo real, o qual ser utilizado
para exemplificar a aplicao das tcnicas apresentadas nos captulos 2 e 3 deste livro.
O sistema descrito consiste de um veculo com navegao autnoma (AGV
"Automatically Guided Vehicle") bastante simplificado. O objetivo no descrever o
projeto completo de tal aplicao (tarefa para vrios livros do tamanho deste), mas sim
ilustrar aquilo que foi discutido. A literatura sobre o tema vasta. Por exemplo, em
[POS97] e [BCH95] que inspiraram o problema a ser tratado a seguir, so descritas
solues completas para um veculo submarino e um veculo para realizar inspees em
depsitos de lixo txico, respectivamente.
Um veculo com navegao autnoma deve ser capaz de planejar e executar a tarefa
especificada. Veculos com navegao autnoma so usados, por exemplo, para
132 5. Aplicao das Abordagens Assncrona e Sncrona
Reconhece
Monitora Estima
alarme
rodas posio
Computa
posio
Obtm Reconhece
Define
imagem referncia velocidade
e direo
Identifica Atualiza
mapa
obstculo
Mapa
A fsica do veculo impe restries temporais para a navegao, para que esta seja
capaz de evitar colises e realizar as manobras com segurana. A definio de
velocidade e direo tem o perodo definido pela fsica do veculo, sua velocidade
mxima, caratersticas do terreno, etc. Neste caso os engenheiros de controle definiram
100ms como perodo mximo. A estimativa da posio a partir da monitorao das
rodas deve ser feita a cada 100 ms. O reconhecimento de referncias no necessita ser
to freqente, at porque o algoritmo usado complexo. Uma tentativa de
reconhecimento de referncias a cada 1300 milisegundos considerado satisfatrio. Por
outro lado, a identificao de obstculos deve ser feita a cada 500 ms. Esta freqncia
permite que o veculo, mesmo em velocidade mxima, desvie de um obstculo que
surge repentinamente, por exemplo um outro veculo. Alm das funes normais, um
auto-diagnstico deve ser executado no prazo de 20 ms sempre que um sinal de
comando for recebido, por exemplo, de uma estao de superviso.
134 5. Aplicao das Abordagens Assncrona e Sncrona
COMPUTA_POSIO (C_P)
Tarefa peridica que l os sensores acoplados s rodas do veculo e estima a posio
atual do veculo, em funo da posio anterior e do comportamento das rodas, com
perodo de 100ms e tempo mximo de execuo de 20ms. Se alguma referncia tiver
sido reconhecida desde a ltima execuo desta tarefa, ento esta informao tambm
utilizada para computar a posio atual do veculo.
L_IMAGEM (L_I)
Tarefa peridica que l a imagem gerada por uma cmara CCD, trata a imagem e
armazena em uma estrutura de dados. Perodo de 500ms e tempo mximo de execuo
de 20ms. A imagem gerada colocada em uma estrutura de dados do tipo "buffer
5.1 Aplicao com Abordagem Assncrona 135
duplo", de forma a no criar situaes de bloqueio para as tarefas que consomem esta
informao.
ATUALIZA_MAPA (A_M)
Tarefa que usa a imagem gerada pela tarefa L_IMAGEM e procura identificar
obstculos. Em caso positivo, o mapa do ambiente mantido pelo veculo atualizado.
Perodo de 500ms e tempo mximo de execuo de 100ms. Existe uma relao de
precedncia direta entre L_IMAGEM e ATUALIZA_MAPA.
RECONHECE_REFERNCIA (R_R)
Tarefa que usa a imagem mais recentemente gerada pela tarefa L_IMAGEM e
procura reconhecer referncias. Em caso positivo, armazena a informao em estrutura
de dados a ser consumida pela tarefa COMPUTA_POSIO, sem entretanto
estabelecer uma relao de precedncia. Perodo de 1300ms e tempo mximo de
execuo de 200ms.
DEFINE_VELOCIDADE_DIREO (D_V_D)
Tarefa que usa a posio atual computada e a verso mais recente do mapa do
ambiente para definir a velocidade e direo que o veculo deve assumir. Estas
informaes so passadas para o nvel de pilotagem, responsvel pela sua
implementao. Esta tarefa possui perodo de 100ms e tempo mximo de execuo de
30ms. Existe uma relao de precedncia entre a tarefa COMPUTA_POSIO e a
tarefa DEFINE_VELOCIDADE_DIREO.
EXECUTA_DIAGNSTICO (E_D)
Tarefa aperidica disparada por um sinal de rdio, ela executa um autodiagnstico
sobre o sistema, sendo capaz de parar o veculo de maneira controlada se uma situao
de emergncia for detectada. Possui um deadline de 20 ms e suposto que o intervalo
mnimo entre ativaes de 2 segundos. O tempo mximo de execuo desta tarefa 1
ms.
RELATA ( R )
Tarefa que informa a estao de superviso sobre sua posio, velocidade e direo,
a partir dados obtidos pelos sensores. Esta tarefa no crtica ("soft"), pois no afeta o
deslocamento e o comportamento do veculo.
Existe ainda uma relao de excluso mtua entre as tarefas
RECONHECE_REFERNCIA e COMPUTA_POSIO, no momento que esta ltima
acessa as informaes sobre referncias identificadas. O tempo mximo de execuo da
seo crtica neste caso de 1ms. Tambm existe uma relao de excluso mtua entre
as tarefas ATUALIZA_MAPA e DEFINE_VELOCIDADE_DIREO em funo do
mapa do mundo. O tempo mximo de bloqueio neste caso de 3 ms.
Uma vez definidas as tarefas e suas caractersticas temporais, necessrio avaliar a
136 5. Aplicao das Abordagens Assncrona e Sncrona
A tabela 5.1 resume a definio das tarefas, como descrito na seo anterior. Antes
de proceder anlise de escalonabilidade, necessrio adaptar este conjunto de tarefas
no sentido de refletir tambm os custos do sistema ("overhead") e outros aspectos
relativos implementao.
do "kernel" que executa com interrupes desabilitadas o faz durante Bk = 0.1 ms.
isto , tarefas predecessores possuem prioridade mais alta. A tabela 5.2 resume a
definio das tarefas, aps terem sido considerados todos os fatores discutidos acima.
As tarefas aparecem na tabela 5.2 em ordem crescente de deadline, o que significa que
as tarefas com prioridade mais alta aparecem antes na tabela.
i : 1 i n, Ri Di .
Wi + J j
Wi = Ci +
Pj j
C [9 ]
j hp(i)
R i = Wi + J i . [10]
Vamos a seguir calcular o tempo mximo de resposta de cada uma das tarefas da
aplicao, como descritas no modelo de tarefas final. importante destacar que o
modelo de tarefas final inclui no somente as tarefas da aplicao, mas tambm tarefas
que representam os custos associados com o suporte de execuo.
5.1 Aplicao com Abordagem Assncrona 139
WE _ D + Bk
WE _ D = C E _ D + B M + Ctimer = 1,2
Ptimer
RE _ D = WE _ D + Bk = 1,3 ms
W + Bk W + Bk
WR = CR + R Ctimer + R CE _ D = 6,1
Ptimer PE _ D
RR = WR + Bk = 6,2 ms
WC _ P + Bk WC _ P + Bk
WC _ P = CC _ P + BR _ R + Ctimer + CE _ D +
Ptimer PE _ D
WC _ P + Bk
+ CR = 27,3
PR
RC _ P = WC _ P + Bk = 27 ,4 ms
140 5. Aplicao das Abordagens Assncrona e Sncrona
WD_V _ D + Bk WD_V _D + Bk
WD_V _ D = CD_V _ D + BA_ M + Ctimer + CE _ D +
Ptimer PE _ D
WD_V _ D + Bk
+ CR = 39,6
PR
RD _V _ D = WD _V _ D + RC _ P = 67 ms
WL _ I + Bk WL _ I + Bk WL _ I + Bk
WL _ I = CL _ I + Ctimer + CE _ D + CR +
Ptimer PE _ D PR
WL _ I + Bk WL _ I + RC _ P
+ CC _ P + CD_V_D = 123,3
PC _ P PD_V _ D
RL _ I = WL _ I + Bk = 127,4 ms
R A _ M = WA _ M + RL _ I = 386,0 ms
5.1 Aplicao com Abordagem Assncrona 141
RR _ R = WR _ R + Bk = 1228,4 ms
/* Inicializa a tarefa */
rtl_task_init( &my_task, codigo_da_tarefa, arg, STACK_SIZE, 1 );
V lv u la Bomba
N v e l_ M a x i
N v e l_ M in i
In ic _ R e g F im _ R e g R E S E R V A T O R IO
V lv u l a
R E G N V E L A b ra _ V a lv
F e c h a _ V a lv
N iv _ m i n
N iv _ m a x
Bom ba
CONSUMO L ig a _ B o m b a
D e s li g a _ B o m b a
In ic _ C o n s u m o F im _ C o n s u m o
6 LV W H P D G H & R Q WU R OH $ P E LH Q WH
m o d u le R E G N IV E L :
in p u t In ic_ R eg , F im _R eg, N iv _m in , N iv_ m ax ;
ou tp u t A b ra _V a lv , F ech a_ V alv;
aw a it In ic_R eg;
em it F ech a _V a lv ;
ab ort
loo p
aw a it N iv _m in ;
em it A b ra _V alv ;
aw a it N iv _m a x;
em it F ech a _V a lv ;
en d loo p
w h en F im _R eg
en d m o d u le
module CONSUMO :
input Inic_Consumo, Fim_Consumo;
output Liga_Bomba, Desliga_Bomba;
loop
await Inic_Consumo;
emit Liga_Bomba;
await Fim_Consumo;
emit Desliga_Bomba
endloop
endmodule
146 5. Aplicao das Abordagens Assncrona e Sncrona
m odu le R E SE R V A T O R IO :
in pu t In ic_R eg, Fim _R eg, In ic_C on su m o, Fim _C on sum o;
ou tp ut A b ra_V alv, F ech a_V alv, L iga_B om ba, D esliga_B om b a;
m odule M O N ITO R A _C O N SU M O :
input R el, N iv_m in, C onsum o_em _C urso
contador_tem po := 0;
loop
trap M O N ITO R in
loop
present N iv_m in then
contador_tem po := contador_tem po + 1;
present C onsum o_em _C urso then
if contador_tem po >= 3 then
exit M O N ITO R
end if
end present
else
contador_tem po := 0
end present
each R el
handle M O NIT O R do
% tratam ento da situao detectada de insuficincia do nvel de gua
% pela execuo do m dulo R E PA R O
end trap
end loop
end var
end m odule
module REPARO :
input MINUTE, Bomba-Autorizada;
output Bomba_em_Reparo, Alarme_Bomba, Reparo_Bomba_Concluido;
task Reparo_Nivel_Insuficiente ( ) ( );
[
abort
exec Reparo_Nivel_Insuficiente ( ) ( )
when 10 MINUTE do
emit Alarme_Bomba;
await Bomba-Autorizada
end abort;
emit Reparo_Bomba_Concluido
]
||
abort
sustain Bomba_em_Reparo
when Reparo_Bomba_Concluido
endmodule
module CONSUMO_SEGURO :
input Inic, Fim, Inic_Consumo, Fim_Consumo, Rel, Niv_min, MINUTE, Bomba-Autorizada;
output Liga_Bomba, Desliga_Bomba, Alarme_Bomba, Inic_Reg, Fim_Reg;
task Reparo_Nivel_Insuficiente ( ) ( );
Mdulo REGNVEL
REL
Inic_Reg Fim_Reg
CONSUMO_SEGURO
MONITORA_CONSUMO Niv_min
Inic
Fim
MINUTE
REPARO Bomba_em_Reparo
Tarefa
externa
exec Reparo_Bomba_Concludo
Alarme_Bomba
Nvel
Superior
Bomba_Autorizada
Inic_Consumo Fim_Consumo
configura numa grande vantagem por evitar a introduo de erros durante o processo de
traduo. Uma aplicao construda com a abordagem assncrona mais complexa e
mais difcil de verificar e consequentemente mais sujeita a falhas do que a mesma
aplicao na abordagem sncrona. Entretanto, quando o computador no consegue ser
muito mais rpido que o ambiente ou quando no possvel determinar com garantia a
relao de tempo entre o ambiente e o computador (p.ex. o caso da Internet), no
existe escolha e a abordagem assncrona deve ser utilizada. Geralmente nos sistemas
complexos, as duas abordagens podem se tornar necessrias; partes mais reativas do
sistema tais como interfaces homem-mquina, controladores, protocolos de
comunicao e "drivers" de perifricos podem ser tratadas pela abordagem sncrona,
enquanto as partes correspondendo aos clculos, ao manuseio e tratamento de dados e
comportamentos no-deterministas tem que fazer uso da abordagem assncrona.
5.4 Concluso
Este captulo apresentou duas aplicaes de tempo real. A aplicao "veculo com
navegao autnoma" foi implementada atravs da abordagem assncrona, com anlise
de escalonabilidade e emprego de um sistema operacional de tempo real. A aplicao
"sistema de controle" foi implementada atravs da abordagem sncrona, com o emprego
da linguagem Esterel. Finalmente, a seo 5.3 procurou fazer uma comparao entre as
duas abordagens.
Embora a limitao de espao permita apenas uma descrio superficial destas
aplicaes, elas permitem que o leitor tenha contato com o mtodo implcito na adoo
de cada uma das abordagens. A partir destes exemplos, fica mais fcil identificar
situaes onde uma e outra podem ser melhor aplicadas.
Captulo 6
tempo real e por isto considerada como orientada implementao. Vrios aspectos
referentes a uma aplicao so tratadas explicitamente a nvel de programao e
gerenciadas em tempo de execuo; o tempo e a concorrncia so exemplos deste
conhecimento explicito necessrio a um programador de aplicaes de tempo real nesta
abordagem. Como conseqncia, torna-se necessrio levar em conta j na especificao
e no decorrer do projeto, algumas caractersticas dos suportes de software e de
hardware. Por outro lado, na abordagem assncrona, a procura de uma descrio
completa do comportamento e a introduo de consideraes de implementao torna
complexa a anlise das propriedades do sistema de tempo real.
Num sentido mais clssico, dentro desta tica da abordagem assncrona, uma
fundamentao terica j bem definida para sistemas onde possvel uma
previsibilidade determinista. Uma coleo de algoritmos e tcnicas de analise existem
para problemas envolvendo escalonamentos com garantias em tempo de projeto,
caracterizando o que Stankovic chama de cincia da garantia de desempenho [Sta96].
Os sistemas, neste perspectiva de garantia em tempo de projeto, so de dimenses no
muito extensas, construdos para realizar um conjunto especfico de objetivos e
envolvendo, em termos de implementao, solues ditas proprietrias. Esto dentro
desta cincia da garantia do desempenho as abordagens que tratam com ambientes
dinmicos, ainda limitados, usando tcnicas para obter garantias dinmicas. Estas
abordagens envolvem testes de aceitao baseados em hipteses de pior caso dos
tempos de computao da carga presente no sistema. O estudo apresentado neste texto
de certa maneira cobriu estas tcnicas que formam esta cincia da garantia.
Como os sistemas se tornam cada vez maiores e mais complexos, interagindo com
ambientes tambm complexos e dinmicos e, portanto, no deterministas uma
expanso desta cincia da garantia necessria para captar as caractersticas destes
novos sistemas. As tcnicas existentes, mesmo as de abordagens assncronas que tratam
com garantias dinmicas, no so abrangentes o suficiente para que possam ser eficazes
diante destes novos sistemas.
A evoluo prevista para os prximos anos caracteriza sistemas como sendo
distribudos, de larga escala, oferecendo uma grande variedade de servios que trata
com vrias formas de dados e se apresentam constantemente mudando e evoluindo. Em
contraste, um desafio crescente colocado a comunidade de tempo real como construir
esses sistemas de propsito geral, abertos, que permitam conviver vrias aplicaes
independentes e de tempo real.
Uma perfeita anlise de escalonabilidade a priori impraticvel em um ambiente
destes. necessrio uma nova disciplina, com modelos e abordagens criados no sentido
de captar as complexidades desses novos ambientes que esto se caracterizando
envolvendo novas tecnologias e aplicaes. Esta nova disciplina para aplicaes de
tempo real vai exigir esforos de pesquisa na engenharia de software, em linguagens de
programao, em sistemas operacionais, na teoria de escalonamento e na comunicao.
158 6. Tendncias Atuais em Sistemas de Tempo Real
Sistemas Abertos
Linguagens
Java poder ser usada no futuro tambm para sistemas de tempo real.
Sistemas Operacionais
O mercado de sistemas operacionais de tempo real est passando por uma fase de
rpidas mudanas. A teoria de escalonamento de tempo real, ignorada at alguns anos
atrs, comea a ser incorporada aos sistemas operacionais. Desta forma, pode-se esperar
para os prximos anos suportes de execuo cada vez mais previsveis. Ao mesmo
tempo, Posix firmou-se como a interface padro nesta rea. Embora o prprio Posix
seja grande e por vezes ambguo, ele estabelece um padro para as chamadas de sistema
a serem oferecidas para aplicaes de tempo real.
Variaes do Linux para tempo real esto surgindo com fora neste mercado. Como
o captulo 3 mostrou, muitos grupos de pesquisa em todo o mundo esto trabalhando no
sentido de criar verses do Linux apropriadas para aplicaes de tempo real. Enquanto
alguns trabalhos nesta rea buscam uma previsibilidade rigorosa para atender sistemas
crticos, outros procuram melhorar o desempenho do escalonamento para melhor
suportar aplicaes com requisitos temporais brandos. No possvel ignorar que a
disponibilidade de um sistema operacional Unix completo, com fonte aberto e adaptado
para tempo real, vai causar um grande impacto no mercado. Por exemplo, no momento
em que este livro escrito, anunciado que o QNX ser fornecido sem custo para
aplicaes no comerciais (http://get.qnx.com).
Com respeito aos sistemas distribudos, ainda existe um longo caminho a ser
percorrido. Embora RT-CORBA padronize interfaces e crie uma estrutura conceitual
baseada em objetos, sua implementao depende dos servios de escalonamento e
comunicao tempo real fornecidos pelo sistema operacional e protocolos de
comunicao subjacentes. A medida que a qualidade destes servios aumentar,
implementaes do RT-CORBA tambm apresentaro melhor qualidade com respeito a
previsibilidade temporal.
Apesar de todos estes esforos, a verdade que o mercado de sistemas operacionais
de tempo real continuar segmentado ainda por muitos anos. Com aplicaes to
diversas quanto uma teleconferncia e o controle de um motor eltrico apresentando
restries temporais, obviamente existe espao para um grande conjunto de solues.
Estas incluem desde sistemas operacionais completos, adaptados para fornecer
escalonamento do tipo melhor esforo, at ncleos totalmente previsveis, capazes de
garantir "deadlines" em aplicaes crticas.
que possam tratar com estruturas complexas de tarefas e de recursos, definindo escalas
que atendam granularidades variveis de restries temporais [Sta96]. As tcnicas de
escalonamento devem ser robustas ou ainda, flexveis e adaptativas quando necessrio.
Existe uma necessidade de testes e algoritmos mais robustos. Na chamada cincia
da garantia testes e algoritmos, definidos segundo certas premissas, so vlidos para
determinados modelos de tarefas. Quando aplicados em um sistema, a atuao de um
algoritmo tida como correta se todas as premissas assumidas no modelo so vlidas.
Se algumas dessas premissas no so verificadas e mesmo assim as propriedades do
algoritmo se mantm corretas, as restries de tempo real da aplicao so atendidas e o
algoritmo dito robusto. O uso de um algoritmo robusto reduz, significativamente, a
necessidade da caracterizao da aplicao e de seu ambiente de execuo nos esforos
de anlises e medidas para a validao do conjunto de tarefas que formam a sua carga
[Sta96]. A eficincia e a robustez podem ser concretizadas facilmente se o grau de
sucesso da validao no o objetivo maior. Testes de aceitao (ou testes de
escalonabilidade), por serem excessivamente pessimistas, apresentam um baixo grau de
sucesso nestes novos e complexos ambientes.
As abordagens de escalonamento adaptativo (adaptive scheduling) tm sido
propostas no sentido de se adotar modelos mais flexveis. Essas abordagens assumem
que as condies do sistema so monitoradas, e as decises do escalonamento so
baseadas nas condies observadas [LSL94]. Modelos e abordagens de escalonamento
adaptativos so empregados com objetivo de lidar com a incerteza na carga do sistema e
a obteno de uma degradao suave [CLL90], [GNM97], [MFO99], [TaT93].
Degradao suave em sistemas de tempo real, significa a manuteno das propriedades
de previsibilidade na sobrecarga.
De forma diversa s abordagens mais clssicas, algumas abordagens adaptativas no
necessitam o conhecimento a priori dos piores casos de tempo de computao das
tarefas. A determinao destes tempos das tarefas, necessrios em abordagens mais
clssicas, sempre um trabalho rduo.
Diversas tcnicas adaptativas tm sido propostas recentemente. Por exemplo, uma
tcnica de adaptao pode ser baseada no ajuste dos perodos de tarefas peridicas em
tempo de execuo. A adaptao dos perodos de tarefas pode ser usada em alguns
sistemas de controle realimentados ou tambm, atravs da mudana da freqncia de
apresentao de quadros, em uma aplicao de vdeo sob demanda [KuM97]. A
computao imprecisa [LSL94] uma outra tcnica que permite a combinao de
garantia determinista com degradao suave usada para o tratamento de
sobrecargas. Nessa tcnica, cada tarefa decomposta em duas partes: uma parte
obrigatria e uma parte opcional. A parte obrigatria de uma tarefa deve ser completada
antes do deadline da tarefa para produzir um resultado aproximado com uma qualidade
aceitvel. A parte opcional refina o resultado produzido pela parte obrigatria. Durante
uma sobrecarga, um nvel mnimo de operao do sistema pode ser garantido de
forma determinista, atravs da execuo apenas das partes obrigatrias.
Em [HaR95], foi proposto o conceito de deadline (m,k)-firm, definindo que uma
162 6. Tendncias Atuais em Sistemas de Tempo Real
tarefa peridica deve ter pelo menos m "deadlines" atendidos em cada janela de k
ativaes. O limite superior tolerado de perdas de "deadlines" dado por k-m. Uma
falha dinmica assumida no sistema quando esse limite excedido. O DBP (Distance
Based Priority Assignment) a heurstica de escalonamento usada com essa tcnica no
sentido de minimizar o nmero de falhas dinmicas. Essa heurstica de escalonamento
atribui as mais altas prioridades para as tarefas que esto prximas de exceder o limite
superior especificado para as perdas de "deadlines". Outras tcnicas semelhantes
deadline (m,k)-firm foram introduzidas na literatura [KoS95], [CaB97] e [BeB97].
Todas se utilizam do descarte de certas ativaes de tarefas peridicas para aumentar a
escalonabilidade do sistema.
Comunicao
esforo e que esto sendo estendidas para implementar diferentes Qualidades de Servio
(QoS). Redes ATM tambm suportam diferentes classes de servio. Alm de servios
de melhor esforo estas tecnologias oferecem classes de servios garantidos que, com
reservas de recursos, fornecem servios garantidos fim-a-fim com o controle rgido da
largura de banda e do retardo [SPG97]. Com base nestas tecnologias novos modelos de
comunicao de tempo real devero surgir, possibilitando a associao de parmetros
de QoS relacionados com tempo real a um canal de comunicao.
Metodologias
Atualmente, a complexidade dos sistemas computacionais exige cada vez mais o uso
de metodologias para especificar, analisar, projetar e implementar. Os sistemas de
tempo real em particular quando distribudos, apresentam caractersticas que se
encaixam nesta categoria. As metodologias de propsito geral, normalmente utilizadas
na comunidade acadmica e no setor industrial e de servios, tem apresentado
inconvenientes. As razes esto na inadequao da linguagem de modelagem que no
inclui o conjunto especifico de requisitos necessrios para representar os sistemas
tempo real e, as dificuldades de implementao que no facilitam a ligao entre os
conceitos usados numa modelagem de alto nvel de abstrao e os conceitos usados na
implementao. Metodologias para sistemas de tempo real e que ao mesmo tempo
acrescentam as potencialidades da orientao objeto tm sido propostas para remediar
este problema e diminuir as dificuldades na construo destes sistemas. Destacam-se
entre estas linguagens de modelagem e metodologias para tempo real a ROOM (Real-
Time Object-Oriented Modeling) [SGW94] e a UML-RT (Unified Modeling
Language for Real-Time) [SeR98]. Essas metodologias apresentam as seguintes
caractersticas: seguir o paradigma de orientao-objeto; permitir a modelagem e a
construo de software tempo real; fornecer modelos executveis em todos os nveis de
abstrao; permitir um processo de desenvolvimento incremental e iterativo; e facilitar a
documentao.
Neste mesmo contexto, tcnicas de descrio formal tem sido adotadas num nmero
crescente de aplicaes, devido aos benefcios significativos que o rigor de seus
formalismos traz para a produo de software de qualidade, sobretudo quando esta
qualidade se expressa em termos de consistncia, segurana e correo temporal.
Muitas pesquisas e desenvolvimentos de ferramentas vem sendo realizadas neste campo
nos ltimos anos. Esta rea muito ampla e promissora e sai do escopo deste livro; os
interessados podem procurar, na ampla bibliografia disponvel da rea, as referncias
[HeM96], [BCN95] e [Rus93] que destacamos por apresentarem uma viso geral das
tcnicas de descrio formal prprias para sistemas tempo real.
ANEXO A
t
t P C i. [A 1 ]
Pi t i
Para aplicar o teste [A1], a inspeo de valores de t pode ser limitada aos tempos de
liberao das tarefas dentro do hiperperodo H do conjunto de tarefas considerado1.
Mas isto ainda pode representar um grande nmero de valores de t a serem verificados.
O conceito de "busy period" pode ser til na determinao de um conjunto mais
reduzido de valores de t. Retomando ento um perodo ocupado como um intervalo de
tempo com execues contnuas de tarefas e considerando o instante crtico em t=0, o
pior caso de execuo de uma tarefa Ti ocorre no primeiro i-busy period que inicia na
origem (t=0) e termina com a execuo da instncia considerada. A idia que o
completion time de uma instncia de Ti com deadline d deva estar no fim do i-busy
period no qual se executaro instncias de outras tarefas que tenham deadlines menores
ou iguais a d.
O intervalo de tempo L que ocorre entre t=0 e o primeiro "idle time" do
processador, assumido como o maior "busy period" no sistema. O valor de L obtido
a partir de [Spu96]:
n
L( 0 ) = C i ,
i=1 [A2]
L ( m + 1 ) = W ( L ( m ) ) ,
onde W(t) corresponde a carga cumulativa no intervalo [0, t], ou seja a soma dos
tempos de computao de todas as instncias que chegaram antes do tempo t :
n
t
W (t ) = P Ci . [ A 3]
i=1 i
1
hiperperodo de um conjunto de tarefas peridicas corresponde ao mnimo mltiplo comum
dos perodos das tarefas do conjunto.
2
L(m) converge para L em um nmero finito de iteraes se [Spu96]:
n
Ci
1.
167
{
= dik dik = kTi dik min( L, H ), 1 i n, k 1 . } [ A4]
Um modelo mais realista onde ocorrem "jitters", determina que uma tarefa Ti seja
retida depois de sua chegada at um tempo mximo Ji para a sua liberao. As equaes
acima devem ser modificadas no sentido de expressar esses tempos. O efeito de "jitters"
no pior caso pode provocar em [0, t] a interferncia de instncias que em situaes
normais teriam suas liberaes fora desse intervalo. Com isto, a carga cumulativa W(t)
correspondente ao intervalo [0,t] (carga que ocorre em [0, t]) deve, no pior caso,
aumentar [Spu96]:
n
t + Ji
W (t ) = P Ci .
i=1 i
t + Ji
C (t ) = P Ci .
Pi t + J i i
t + Ji
t Ci.
Pi t + J i Pi
t Di
C (t ) = 1 +
Di t
Ci . [ A 5]
Pi
Com isto uma condio necessria e suficiente para tarefas peridicas possuindo
deadlines arbitrrios e escalonadas pelo EDF, obtida atravs de:
t Di
t 1 +
Di t
Ci [A 6 ]
Pi
e {
= dik dik = kTi + Di , dik min( L, H), 1 i n, k 0 , } [ A7]
t + J i Di
C (t ) = 1 + Ci [ A8]
Di t + J i Pi
t + Ji Di
t 1 +
Ci [A 9 ]
Di t + Ji Pi
ta re fa s p e ri d ic a s Ci Pi Di
ta r e fa A 2 10 6
ta r e fa B 2 10 8
ta r e fa C 8 20 16
Para ilustrar esse teste para modelos de tarefas com deadlines arbitrrios em
esquemas de prioridade dinmica, considere o conjunto de tarefas descrito na tabela I.
Usando a equao [A5] podemos determinar para essas tarefas a demanda de
processador C(t):
t 6 t 8 t 16
C (t ) = 1 + .2 + 1 + .2 + 1 + .8
10 10 20
Falta obtermos o valor t a ser usado no teste [A6]. Para isto, a carga cumulativa
(tarefas que chegam antes e em t) necessria:
169
t t t
W ( t ) = .2 + .2 + .8 .
10 10 20
L(0) = C i = 12
L (1)
= W (L (0)
) = 16
L (2)
= W (L ( 1)
) = 16
Logo L=16, com isto obtemos o conjunto dos valores possveis de t [A7]:
{
= d ik d ik 1 6 }
Considerando as tarefas da tabela I e a figura 2.7 (captulo 2) verificamos que =
{6, 8, 16}. Com isto obtemos as seguintes demandas de processador: C(6) = 2, C(8) =
6 e C(16) = 16. Em todos esses valores de t verificado o teste [A6], ou seja, t C(t).
Logo o conjunto apresentado na tabela I e figura 2.7 escalonvel tambm em
esquemas de prioridade dinmica.
A tcnica chamada de Stack Resource Policy (SRP) foi introduzida em [Bak91] para
controlar em polticas de prioridade dinmica, o compartilhamento de recursos de uma
forma previsvel. Basicamente, esse mtodo estende os resultados do "Priority Ceiling
Protocol" para esquemas de prioridade dinmica. Ou seja, as inverses de prioridades
se limitam a um bloqueio por ativao da tarefa.
Descrio do Protocolo
Dj
Di
t1 t2 di dj
t
c a s o (a )
Dj
Di
t1 t2 dj di
t
c a s o (b )
F ig u ra A .1 : N v e is d e P re e m p o n o E D F
= m ax ( R r )
r = 1, 2 , ... , m .
T1
T2
T3
0 2 4 6 8 10 12 14 16 18 20 22
t
1
0 2 4 6 8 10 12 14 16 18 20 22
O SRP foi concebido para ser usado com polticas de prioridades dinmicas como o
EDF. Em [Bak91], o teste de escalonabilidade do EDF (equao [3], captulo 2) foi
estendido considerando o SRP:
i
Cj Bi
j =1 Pj
+
Pi
1, i ,1 i n .
173
i C Bi
+ 1, i,1 i n.
j
j =1 D j Di
t + J j Dj t + J i Di
t 1 +
C j + 1 +
Bi i, 1 i n
D j t + J j Pj Pi
{
= d ik d ik = kTi + Di , d ik min ( L , H ), k 0 . }
No teste acima o somatrio determina a demanda de carga de tarefas de nvel de
prioridade maior ou igual a i, ou seja, tarefas que apresentem Dj - Jj Di - Ji. O termo
que envolve Bi corresponde ao pior caso de bloqueio imposto sobre Ti, durante o
intervalo t, por tarefas de menor nvel de preempo.
O mximo bloqueio Bi que uma tarefa Ti pode experimentar em uma ativao, deve
corresponder a durao da maior seo crtica entre as que podem bloquear Ti. A
exemplo do PCP, um bloqueio s pode ser caracterizado quando uma tarefa Tj menos
prioritria executando em uma seo crtica de durao Dj,r, guardada pelo semforo Sr,
tiver o seu nvel de preempo menor que o de Ti (i>j) e o recurso guardado
apresentar o "ceiling" mximo igual ou maior que i. O "ceiling" mximo de um
semforo assumido quando o nmero de unidades livres do recurso for nulo. O
bloqueio mximo dado ento por:
174 Anexo A Extenses em Esquemas de Prioridade Dinmica
Bi = m ax D j , r
j ,r
( j )
< i R S r
(0)
i
ta r e fa A -
ta r e fa s Ci Pi Di
ta r e fa B - ta r e fa p e r id ic a A 1 5 5
ta r e fa C - ta r e fa p e r id ic a B 6 14 14
ta r e fa s er vid o r a D S S 2 ,5 10 -
ta r e fa D -
ta r e fa a p e r id ic a C 1 - -
C D ta r e fa a p e r iod ic a D 1 - -
A B A A B A A
0 1 2 4 5 6 8 10 12 14 16 18 20 22 24
t
C D SS
3
2
1
0 2 4 6 8 10 12 14 16 18 20
F ig u ra A .3 : A lg o rt m o D yn a m ic S p o ra d ic S e r v e r
t a r e fa A -
ta re fa s Ci Pi Di
t a r e fa B - t a r e fa p e r i d i c a A 1 5 5
t a r e fa p e r i d i c a B 6 14 14
t a r e fa C -
t a r e fa s e r v i d o r a D S S 1 10 -
t a r e fa D -
t a r e fa a p e r i d i c a C 1 - -
t a r e fa a p e r i o d i c a D 1 - -
C D
A B A A B A A
0 1 2 4 5 6 8 10 12 14 16 18 20 22 24 t
C DSS
0 2 4 5 6 8 10 12 14 16 18 20 22 24
F ig u r a A . 4 : D y n a m ic S p o r a d ic S e r v e r c o m c a p a c id a d e m e n o r
ANEXO B
C.2.1 Dados
Tipos e operadores
Os cinco tipos primitivos de Esterel so: boolean, integer, float, double e string.
As operaes so as usuais: igualdade = e diferena < > para todos os tipos, and,
or e not para o tipo boolean e +, -, *, /, <, < =, >, >= para tipos integer, float,
double. O usurio pode definir seus prprios tipos declarando seus nomes; um tipo do
184 Anexo C Sintaxe e Semntica da Linguagem Esterel
Constantes
possvel declarar constantes de qualquer tipo. Quando o tipo pr-definido, so
declarados em Esterel nome, tipo e valor; quando o tipo definido pelo usurio so
apenas declarados nome e tipo, sendo que o valor definido na linguagem hospedeira.
Funes
A declarao de funo contm a lista de tipos dos objetos que vai usar e o tipo do
objeto de retorno: function <nome> (<lista de tipo de argumentos>) : <tipo do
retorno>;.
Procedimentos
A declarao de um procedimento tem duas listas (opcionais) de argumentos de
tipos arbitrrios: lista de argumentos passados por referncia e modificveis pela
chamada (call), lista de argumentos passados por valores e no modificveis. A
declarao se apresenta na forma: procedure <nome> (<lista de tipo de argumento-
referncia>) (<lista de tipo de argumento-valor>);.
Procedimentos e funes so definidos na linguagem hospedeira e no apresentam
efeitos colaterais.
Tarefas
As tarefas so entidades de clculo externo mas que no podem ser consideradas
instantneas. Elas so sintaticamente similares aos procedimentos e so executadas pela
construo exec acoplada com o sinal return (ver a seguir)
valor de tipo arbitrrio (por exemplo output <nome-sinal> := <valor inicial> : <tipo-
sinal>;).
Um sinal com valor no pode ser emitido pelo programa duas vezes no mesmo
instante e nem no mesmo instante que ele esta sendo recebido do ambiente. Ele
chamado de sinal com valor nico. Para se livrar desta restrio, utiliza-se a palavra
chave combine na declarao do sinal com valor; os sinais so chamado de sinais
com valor combinados. Operadores (and, or, +, *) e outras funes declarados pelo
usurio podem ser usados na combinao de sinais.
Existe apenas um sinal puro pr-definido tick que representa o relgio de ativao
do programa reativo mas no precisa declara-lo. Seu estado tem o valor presente a
cada instante.
Sensores
Os sensores so sinais de entrada com valor mas sem a presena da informao de
estado: sensor <nome-sensor> : <tipo-sensor>;. O valor do sensor acessado pelo
programa atravs da construo ?, quando necessrio
Relaes de entrada
A construo relation ... permite representar relaes de entrada que indicam
condies booleanas entre os sinais input e return; estas condies so
supostamente garantidas pelo ambiente. As relaes so de incompatibilidade ou
excluso entre os sinais (#) ou de sincronizao entre sinais (=>).
C.2.3 Variveis
As variveis so objetos aos quais valores podem ser atribudos. A declarao das
variveis com seu nome, valor inicial e tipo feita numa construo de declarao de
varivel local var <lista de variveis> in p end var. O escopo da declarao de
varivel e o corpo da construo p. A modificao da varivel pode ser o resultado de
atribuies, chamadas de procedimentos e execues de tarefas externas (exec).
Contrariamente ao sinal, uma varivel pode tomar vrias valores sucessivos no mesmo
instante.
186 Anexo C Sintaxe e Semntica da Linguagem Esterel
C.2.4 Expresses
Expresses de dados
Elas combinam constantes, variveis, sensores e sinais com valores usando
operadores e chamadas de funo. A sua avaliao instantnea e envolve checagem de
tipos. "?S" indica o valor corrente do sensor ou do sinal com valor S.
Expresses de sinais
Elas so expresses booleanas ("not", "and", e "or") aplicadas sobre os estado de
sinais (ou do sinal "tick"). Elas so utilizados em testes de presena ou em expresses
de atraso.
Expresses de atraso
Elas so utilizadas em construes temporais tais como "await" ou "abort" para
expressar atrasos que comeam quando inicia a construo temporal que as contm.
Existem trs tipos possveis:
atrasos padres definidos por expresses de sinais e que nunca esgotam
instantaneamente;
atrasos imediatos definidos por "immediate [<expresso de sinais>]" e que
esgotam instantaneamente;
atrasos de contagem definidos por uma expresso de contagem inteira seguida
por uma expresso de sinais: ("<expresso-contagem> [<expresso-
sinais>]").
Atribuio
A atribuio "X := e" com a varivel X e a expresso de dados e do mesmo tipo
instantnea.
Chamada de procedimento
A chamada de procedimento tem a forma "call P (X, Y) (e1, e2)" onde X, Y so
variveis e ei so expresses. A chamada instantnea.
Emisso de sinal
A emisso instantnea de sinal realizada por "emit S" ou "emit S(e)"
respectivamente no caso de um sinal puro ou de um sinal com valor resultante da
avaliao da expresso e. Para um sinal nico, somente um "emit" pode ser executado
neste instante; para um sinal combinado, o valor emitido combinado com os que so
emitidos por outros "emit" neste instante, usando a funo de combinao.
Seqncia
O operador de seqncia ";" permite que a construo q de "p; q" inicia
imediatamente aps a construo p ter terminada, a menos que p contenha algum "exit"
de um "trap".
Malha
A construo loop p end loop representa a malha simples infinita. O corpo p
sempre re-iniciado imediatamente aps seu trmino. Se construes trap fazem parte
do corpo p, os exit so propagados instantaneamente e a malha para. No permitido
que o corpo p de uma malha possa terminar instantaneamente quando iniciado.
A malha repetitiva executa seu corpo p um nmero finito de vezes. No permitido
que o corpo p termina instantaneamente. A construo repeat e times p end repeat
na qual e do tipo integer e avaliada somente uma vez no instante inicial. Se o
resultado da avaliao for zero ou negativo, o corpo no ser executado. A construo
repeat considerada como instantnea e no poder ser colocada numa malha loop
se no for precedido ou seguido por um atraso. Para garantir, neste caso, que o corpo
ser executado pelo menos uma vez, utiliza-se a construo positive repeat ... que
permite realizar o teste para repetio somente aps a primeira execuo do corpo.
188 Anexo C Sintaxe e Semntica da Linguagem Esterel
Testes
O teste de presena binrio tem a seguinte forma geral present e then p else q end
present; uma das ramificaes then ou else pode ser omitida e neste caso a
omitida tem o significado de nothing. O teste de presena mltiplo utiliza a
construo case dentro do present da forma seguinte:
present
case e1 do p1
case e2 do p2
case e3 do p3
else q
end present
Atraso
A construo temporal mais simples await S significa a espera por um atraso.
Quando a construo iniciada, ela entra em pausa at o atraso ser esgotado, instante
no qual ela termina.
A construo await immediate S termina instantaneamente se o sinal for
presente ou a expresso de sinal for verdadeira no instante inicial.
Pode se utilizar ainda a construo case dentro do await; o primeiro atraso que
se esgota fixa o comportamento seguinte; se dois deles se esgotam simultaneamente, a
prioridade com o primeiro da lista; a clusula else no permitida. A contagem do
nmero de sinais ou uma expresso de sinal pode tambm ser utilizada para expressar o
atraso.
A construo await completa utiliza uma clusula do para iniciar outra
construo quando o atraso esgota: await <expresso-atraso> do p end await.
Preempo
A construo abort p when <expresso-atraso> do q realiza uma preempo
189
abort
abort p
when I do q
end abort
when J
Malha temporal
As malhas temporais so infinitas e o nico meio de termina-las atravs de uma
exceo (exit de um trap). Existem duas formas de declarar malhas temporais:
loop p each d onde d um atraso no imediato. O corpo p
inicializado ao instante inicial, e re-inicializado a cada vez que o atraso d
esgota; se p termina antes do esgotamento de d, o re-inicio de p dever
esperar at o atraso d se esgotar. Esta construo uma abreviao de:
190 Anexo C Sintaxe e Semntica da Linguagem Esterel
loop
abort
p; halt
when d
end loop
await d;
loop
p
each d
Exceo e tratamento
O mecanismo de exceo implementado pela construo:
trap T in
p
handle T do
q
end trap
Paralelismo
O operador de paralelismo ll (que pode ter qualquer aridade) coloca as
construes que ele separa em paralelismo sncrono. Os sinais emitido por um dos
ramos ou por outra parte do programa so difundidos instantaneamente a todas os
ramos. Somente variveis para leitura podem ser compartilhadas em todos os ramos da
construo paralela.
Uma construo paralela, quando inicia, dispara instantaneamente uma thread por
ramo. Ela terminar quando todos os ramos tero terminado, esperando eventualmente
at o ltimo terminar. Se o exit de uma exceo trap ativada num ramo, ele
propagada em todos os outros ramos, levando a uma preempo fraca (weak abort)
de todos os ramos no mesmo tempo.
exec
case T1 (...) (...) return R1 do p1
...
case Tn (...) (...) return Rn do pn
end exec
Bibliografia