Você está na página 1de 220

$DA AO CORPO DOCENTE DA COBRDENAGgO DOS

-GRADYBGAO DE MGENHARPA DA UNEVERÇPBBDE


RI8 DE JANEIRO COMO PART DOS REQUISITOS
PENÇ6O DO GRAU DE MESTRE EM 61
DE SISTEMAS CBMPUTAC#O.

Aprovada p o r :

~ ; + a .S u e l i B . T . Mendes, P k . D
(Presidente)

P r o f . E d i l S . T . Fernandes, P h . B .

Prsf. Claudio K i r n e r , B . S c ,
LOBIANCO J O N I O R , WANBERLEY

PBRTBS-PF: Sistema Bperacisnal Portatil d e


Tempo-Real som Primitivas de Talerâneia a
Falhas CRia de Janeiro3 1789.

xv, 2@!7 p. cm (COPPE/UFWJ, M . S c i ,


29,7
Engenharia de Sistemas e ComputaeZs, 1 9

Pese - Universidade Federal do Ria de


Janeiro, COPPE

1 . Sistemas Operasionais I . CBPPE/UFRJ


E % . ~ í t u l o(çkrie).
a minha noiva Ie f u t u r a
esposa), q u e sempre me
motivou a apsiau no
mestrado e na v i d a ;

a minha mze, primeira e


eterna p r o f e s ~ o r a ;

a meu p a i e a meu irmão,


meus maiores amigos;

a meus avás, de quem


sempre s e n t i r e i saudades
e muito c a u i n h o j

a Deus, pois %em Ele


nada s e r i a p o s s i v e l .
A Profa. Sueli B. T. Mendes, pela forma
amiga com q u e me o r i e n t o u n e s t e t r a b a l h o .

Aos professares "i1 S. P. Fernandes e


Cl&udio Kirner, p e l a h o n r a q u e me d ã o a o i n t e g r a r e m m i n h a
banca.

Ao P r o f . Wilson V . uggiero, pela gentileza


d e t e r me a j u d a d o n o i n i c i a d o s m e u s t r a b a l h e s d e t e s e com
orientacões muito importantes.

A meus amigas b u i z C a r l o s de Souza Jr.,


Fernando C . L. V i l e l a d e A b r e u e R o n a l d o P . T h s m p s o n , com
quem muito aprendi e tive o prazer de desenvolver meu
primeiro t r a b a l h a n a ãrea d e sistemas o p e r a c i o n a i s .

A m e u s amigos R o b e r t o L . C. Ramos, Carloã


Eduardo W . R a t t a e Çér i o C . A n d r a d e , q u e c a n t r i b u i r a m com
ideias B a p i n i z e s v a l i o s a s p a r a a e l a b o r a ~ S od e s t a t e s e .

A minha n o i v a e a minha mãe, pelo paciente


e e l a b o r a c ã a d a s +'iguras.

A Mário R a b e r t o , Maria H e l e n a , Mario e I v o n e


Benevides e C a p e l l a I v o e Wanda F o l h a d e l l a , p e l e amor e
c a r i n h o q u e s é m p r e me d e r a m .

A â6nia Alveã d e F r e i t a e , p e l a a t e n g ã e cem


q u e me o r i e n t o u e a j u d o u n o s a s p e c t o s f o r m a i s d a t e s e .

A m e u s p r o f e s s o r a s d a COPPE, q u e me a j u d a r a m
a a d q u i r i r novos conhecimentos.
Resume da Tese apresentada à CQPPE/UFRJ como parte dos
requisitos necessários para o b t e n ~ ã edo grau de Mestre em
CiEncias (M.Sc.1.

Brientadera: Sueli . T . Mendes

Programa: Engenharia de Sistemas e Gsrnputa~ão

ste trabalho aborda a descri-%o, projeto e


implementa~ãade um sistema operacional portátil, voltado
para aplica~Ees em tempo-real @ sem primitivas de
toleriincia a falhas: o $O %o discutidos aspectos
relativos a sistemas operacionabç, portabil idade, tempo-
real @ %sler%ncia a falhas. Após a apresentacão de
questees teáricas encontradas na literatura, são comentadas
a% s p ~ e e sde projeto a d a t a d a s .

O PORTOS-TF apresenta um n&eleo multitarefa


que permite a e x e c u ç ã o de processos concorrentes com
prioridades e tamanhos de fatias de tempo distintos. A fim
de tornar o sistema aplicative mais versátil e medular, a
comunicação e sincronizacão entre processos se dá atràvgs
de troca de mensagens com enderecamento açeado em pertas.
Para permitir sua aplicacão em arn ente-, de a
con$iabil idade, o PORTO%-TF incorpora primitivas de
tu1erZnci.a a falhas que criam um mecanismo de N-versBes.

Constituem-se nas maiores eontr-ibui-oes


desta tese a reunião, em um único texto, de tkcnicas e
conceitos relativos à tolersncia a falhas, em especial a
falhas d e ssftware, e a discussão das q u e s t o e s l i g a d a s &
i m p l e m e n t a ~ ã od e um sistema operasional psrt&kil de tempo-
real com primitivas de tolerância a falhas.
Gtbstract of Thesi6; presented t o CBPPE/UFRJ as partia1
f u l f i l l m e n t o f t h e r e q u i r e m e n t s f o r t h e d e g r e e o f Master s f
Science (M.%e.).

anca Júnior.

June, i989

Advisor: Sueli . T . Mendes

Department: Systems E n g i n e e r i n g and Computinq

This work dascribes tha design and


irnplernentat i o n of an operãt ing system for r e a l - t ime
applisations w i t h fault-tolerante primitives: PB
Aspeets related to operat ing systems, psrtability, real-
time eonst r a i n t ã and fault-taler-ance are discussed . The
adapted c h o i c e s r - e l a t e d t o t k e s p e r a t i n g s y s t e m d e s i g n are
presented a f t e r theeret i c a l eonçiderat i a n s .

"OS-TF c r e a t e s a mul t i t a s k k e r n e l whish


allows t h e e x e c u t i o n o f c o n c u r r e n t p r o c e s s e s w i t h d i f f e r e n t
prisrities and time-ãliees. %t implementã a mesãage
ãwitching mechaniçm f o r communicat i o n and synckronisat ion
between processes. Addressing p o l i t i c s are based on p o r t s .
Fault-tolerante primitives support a N-version mechanism
qor highly reliable applications.
viii

The great c s n t r i b u t i o n s provided by this


thesis csnaist sf a studr o f different fault-tolerante
conceptã and t e c h n i c s (mainly related t o ãoftwar-E) in t h e
same t e x t and the d i s c u s s i o n o f implementatisn a s p e c t s in a
p s r t a b l e r-eal-t ime operat ing s y s t e m with faul t-tolerante
prirnit i v e s .
CAPITULO 1 : INTRQDUC O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1 . 1 . Motivacão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
6 . 1 . 1 .Razoes para ser Poré&til . . . . . . . . . . . . . . . . . . . 2
1 . 1 . 2 . Razões para ser Tolerante a Falhas . . . . . . . . . 4
1.2. Ob~etivo% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1 . 3 . Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1 . 4 . Çaracterásticas Gerais . . . . . . . . . . . . . . . . . . . . . . . . . 9
1 . 5 . Estrutura de Capítulos . . . . . . . . . . . . . . . . . . . . . . . . . 18

CAPITULO 11 : PORTABELIDADE E
WEWTILIZAG: O DE SOFTWARE . . . . . . . . . . . . . . . . 13
11.1. Entrodu~ão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
$ 1 . 2 . Critérios de Portabilidade . . . . . . . . . . . . . . . . . . . . 14
11.3. Questões Relativas à
Partabilidade do Sistema Bperacianal . . . . . . . . . . 15
1 1 . 3 . 1 . Caracteristicas da Maquina Padrão . . . . . . . . . 16
1 1 . 4 . Procedimentas de Transporte da PBRTOÇ-TF . . . . . . t8

CAPIPULB 111 : NCJCLED DB SISTEMA BPERRCZONAL . . . . . . . . . . 21


1II.1. Gntrodu$%o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
111.2. Estruturas de Dados do Núcleo . . . . . . . . . . . . . . . . 24
111.2.1. Lista de Dascritares de Processos . . . . . . . . 24
111.2.2. Lista de Processos no Estado "Pronto" . . . . 25
111.2.3. Lista de Processos
som Cláusula de Tempo . . . . . . . . . . . . . . . . . . . . 26
111.3. Instalasão e Acesso ao Núcleo . . . . . . . . . . . . . . . . 28
111.4. Características dos processos do PBRTBS-TF . . . 29
$11.5. F u n ~ Z e sd s Núcleo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1 1 1 . 5 . 1 . Criasãs de Presesses . . . . . . . . . . . . . . . . . . . . 38
111.5.2. D e s t r u i ~ ã ode Processos . . . . . . . . . . . . . . . . . 34
111.5.3. O b t e n ~ ã odo ãdentifieador . . . . . . . . . . . . . . . 34
lequeio de Processo% . . . . . . . . . . . . . . . . . . . 35
iberacão de Processss . . . . . . . . . . . . . . . . . . 36
I11.5.6. O b t e n ~ ã oda Prioridade . . . . . . . . . . . . . . . . . . 37
111.5.7. Alteras%o da Prioridade . . . . . . . . . . . . . . . . . 37
111.5.8. O b t e n ~ ã oda Fatia de Tempo . . . . . . . . . . . . . . 37
111.5.9. Alteraqão da Fatia de Tempo . . . . . . . . . . . . . 38
. Congelamento da Fatia de Tempo . . . . . . . . . . 38
IIP.5.12. Descongelamento da Fatia de Tampe . . . . . . . 38
1II.P.12.Wabili.ta~%e de Geracão de E x c e ~ s e s . . . . . . 38
EEI.5.13. Desabilitacãs de Geracso de E ~ c e c ã e 5 . . . . 39
PEI.S.I4. #abilita&%e de Esealonamento . . . . . . . . . . . . 39
111.5.15. Desabilita~ãode Esscalonamento . . . . . . . . . . 38
ILI.ã.16. Escalonamente do Processo Corrente . . . . . . 48
. 17. Bbteneão de
do Siatema Operacional . . . . . . . . . . . . . . . . . . 48

CAPITULO IV : eaMuNIeAens E
ÇINCRONIZACÃO ENTR PRClCESâaS . . . . . . . . . . . 41
IV.2. I n t r o d u ~ ã s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4%
LV.2. Mecani%mos de Csmunicac%o e
Sincronira~ãeentre Processos . . . . . . . . . . . . . . . . . 4%
IV.2.1. Endere~ãrrientaem Sistemas Bistribuádo~i . . . . 43
IV.2.2. Mecanismos para Sistemas
cem Memária Distribuída . . . . . . . . . . . . . . . . . . . 44
IV.2.2.1. Troça de Mensagens . . . . . . . . . . . . . . . . . . . . 45
X V . 2 . 2 . 2 . "Wender-Veus" . . . . . . . . . . . . . . . . . . . . . . . . . 49
I V . 2 . 2 . 3 .Chamada Remota de Procedimentos . . . . . . . 58
I V . 2 . 3 . Portas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
T V . 3 . Configuracão Dinsmica de Sistemas . . . . . . . . . . . . . 58
IV.4. Implementa~ãode um Mecanismo de
Comunica~ãae %àncronizaç3o entre Precessoã
Baseado e m Partos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
I U . 4 . 1 .Primitivas para o Manuseio de Portes . . . . . . 58
I V . 4 . 2 . Primitivas de Comunicalão e
Sincroniza~5o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
P V . 4 . 2 . 2 .Envia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $8
I V . 4 . 2 . 2 .Recebe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Q i
f V . 4 . 2 . â .Selec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
P V . 4 . 2 . 4 .Fim-Selec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
I V . 4 . 2 . 3 .Porto-Ultima-Mensagem . . . . . . . . . . . . . . . . . 65
r*

5
rei
n
O
c
R)
7
K

m
4
O
R
X
#
V
V I I . 6 . 1 . 3 . 1 . 2 . 2 . A s Alternativas . . . . . . . . . . 127
V I I . 6 . 1 . 3 . 2 . 2 . 2 . Q T e s t e de ~ c e i t a ~ ã. o
. . . . 128
V l I . 6 . 1 . 3 . 1 . 2 . 3 . R e s t a u r a c ã o do
Estado I n i c i a l . . . . . . . . . . . 138
V I I . 6 . 1 . 3 . 1 . 2 . 4 . Reeuperae%o de E r r o s em
. . . 131
P r o c e s s o s Comunicantesi
V I I . 6 . 1 . 3 . 2 . "Forward E r r a r Recovery" . . . . . . . . . 138
V I I . 6 . 1 . 3 . 3 . "Backward E r r a r Wecsvery",
"Forward E r r a r Recovery"
e E x c e ~ õ e s . . . . . . . . . . . . . . . . . . . . . . . 138
V I I . á . 2 . T é c n i c a s de Redundgncia de R e c u r s o s . . . . . . 148
V Ç 2 . 6 . 2 . 1 . Os MOdulss . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
V E I . 6 . 2 . 2 . 0 s veta dor^^ . . . . . . . . . . . . . . . . . . . . . . . . . 144
V I I . 6 . 2 . 3 . P r i m i t i v a s d e Sistema Bperacional . . . . 147
V I 2 . 6 . 3 . Comparãc.ao e n t r e Redundância Temporal
e Redundsncia. de R e c u r s o s . . . . . . . . . . . . . . . . 148
U I I . 7 . E m p l e m e n t a ~ ã ode um Mecanismo de N-Versões . . . 158

REFERÉNCTAÇ LIBERAFICAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

NBICE A : IMPLEMmTAÇ O EM EQUIPAMENTO8


DO TIPO IBM-PC ........................... 165
A . 1 . Pnkrodu~ão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
A . 2 . Q p e r a ~ ã oem C o n j u n t o com o DBS . . . . . . . . . . . . . . . . . 166
8 . 3 . Aspectos d a I m p l e m e n t a ~ ã s . . . . . . . . . . . . . . . . . . . . . . 168
1 9 . 3 . 1 . O RelOgio de Tempo-Real . . . . . . . . . . . . . . . . . . . . 168
1'4.3.2. Troca d e C o n t e x t o . . . . . . . . . . . . . . . . . . . . . . . . . . 169
A . 3 . 3 . Uso d e P o n t e i r o s e E n d e r e ~ a s . . . . . . . . . . . . . . . 178
A . 3 . 4 . Q " B u f f e r P s o l " do S i s t e m a . . . . . . . . . . . . . . . . . 171
6 . 3 . 5 . E s c r i t a em Vádeo . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

NBICE B : PRIMITIVAS D Q N O C L E O BB PORTQS-TF . . . . . . . . 174


B . 1 . E x p l i c a ~ ã od o s T i p o s não-padr8es Empregados . . . . 1 7 4
B.2. P r s t ó t i p o s da Primitivas d o Núcleo . . . . . . . . . . . . . 177
APÉNBICE c :

AFICAS ............... 189


C . % . T e x t o s R e l a t i v o s a Çiátemas B p e r a c i o n a i s . . . . . . . 989
C . 2 . T e x t o s Ligados a T s l e r h c i a a F a l h a s . . . . . . . . . . . 196
C . 3 . o u t r a s Referencías . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
xív

tnPIrubo 11%
1 1 1 . 1 . Esquema d e um nB d a L i s t a de DPs . . . . . . . . . . . . . 2%
111.2. Esquema d e u m n ó da b i s k a dos P r o n t o s o u
da L i s t a dos Bloqueados ...................... 26

CAPITULO P V
1 V . I . Esquema de um mecanismo d e
t r o c a d e mensagens ............................ 45
E V . 2 . Esquema d e d i C u % ã o de men%agens . . . . . . . . . . . . . . . 47
E V . 3 . Esquema de r e c e p G % o de mensagem d e
qualquer remetente . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
I V . 4 . T i p o s d e p o r t o s e p o s s i b i l i d a d e s d e l i g a ~ a o. . . 54
. B p ~ õ e sd e l i g a c ã o d e p o r t o s n o PQRTQÇ-TF . . . . . . 8
1 V . Q . E ~ e m p l od e e s t r u t u r a de s e l e ~ ã o
s linguagem . . . . . . . . . . .
b a s e a d a em c s n s t r u ~ ~ ede Q4
I U . 7 . E x e m p l o de e s t r u t u r a d e s e l e ~ ã on o PBRTBS-TF .. 64

CWITLJLO V
V . l . E x e m p l o d e a l o c a c ã o d e areas de m e m b r i a . . . . . . . . á?
........
U . 2 . Esquema d e um e l e m e n t o d e " b u C f e r p o o l " 71
U . 3 . Esquema d e desmembramento de b l o c o d e memória . . 71
U . 4 . Esquema de Cusão d e b l o c o s de m e m ó r i a . . . . . . . . . . 72

CAPITULO V %
U I . 1 . E x e m p l o de t a b e l a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
V 1 . 2 . Exemplo de l i s t a encadeada . . . . . . . . . . . . . . . . . . . . 75
V 1 . 3 . E x e m p l o de 5rvov-e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
V E . 4 . E ~ e m p l ode á r v o r e b i n á r i a . . . . . . . . . . . . . . . . . . . . . 78
V1.5. E s t r u t u r a de um n ó d a s á r v o r e s
empregadas n o PORTOS-TF ....................... 8@
V 1 . B . E s t r u t u r a g e r a l das "13skas" d o PORTOS-T L . . . .
i
éP
C o m
Z U w m
n D-
ai- ai QJ
a n r

(v- m O
W p - d *
r . P-'. r. .
S w rt-.
w- E .
3 . r - -
r. . a?r.
w . @ ? -
. O .
"Um Sistema O p e r a e i o n a l pode s e r encarado
como um c o n j u n t o de programas, implemenkades por software
ou Sirmware, que tornam o hardware u t i l i z á v e l . O hardware
prov@ o 'potencial b r u t o de computa~ão'. Os sistemas
operaeionais tornam esse potencial c o n v e n i e n t ement e
disponável a o s u s u á r i o ã . " Ê a s s i m que BEITEL (2.984) d e f i n e
sistemas operaeionais. A l i t e r a t u r a sabre essa grea da
C i g n c i a da Computacão 6 v a s t a (BWINCH HANÇ N, 1973; M A D N I C K
& DONQVAN, 1974; TÇICHREPZES & B E R N G P E I N , 2.994j HOLT &
o u t r o s , 1998; DEITU, 2.9

1 . 1 . Motiva

Sistemas s p e r a c i o n a i s de tempo-real n%o s ã o


um a s s u n t o n o v o . V á r i o s t r a b a l h o s j á +oram e s s r i t o ~a s e u
r e s p e i t o (EERW"ZA, 1'7 5 ; SANTOS, 1987; SCHWARZ, 19
Todavia, existe uma p e c u l i a r i d a d e n e s s e t i p a de sistemas
o p e r a t i a n a i s que o s d i f e r e d o s d e m a i s : tempo de r e s p o s t a .

Em s i s t e m a s de t e m p o - r e a l , solicitaçi3eã do
mundo e x t e r i o r devem s e r a t e n d i d a s em um tempo f i n i t o e bem
det erminâdo. Isso faz com que seja desej&vel o
conhecimento d e t a l h a d o do s i s t e m a o p e r a c i s n a l .

Na á r e a de micrasornputõdoreã não s ã o m u i t a s
o s s i s t e m a s e p e r a c i o n a i s de tempo-real comerciais. Pede-se
citar o Q N X (da Quantum S o f t w a r e Çystems Ltd., Canadêi)
) e o ÇC ( d a F B T W U Ç P ) ( Ç A N P Q Ç , 1987). Esses sistemas
operacionaiç, c o n t u d o , não s ã o p o r t á t e i s p a r a e q u i p a m e n t o s
d e d i c a d o s ( d o t i p o u n i d a d e remota de p r o c e s s a m e n t o ) .
Um sistema distribuido de tempo-real
composto de v á r i a s e s t a c g e s ( c o m p u t a d o r e s ) i n t e r l i g a d a s por
um ã u b - s i s t e m a de e o m u n i c a ~ ã o . A s e s t a ~ õ e s que compõem
esse sistema d i s t r i b u i d o não s ã o n e c e s s & r i a m e n t e iguais.
Be um moda g e r a l , 5 i s t e m a s d i s t r i b u í d o s s ã o compostos de
v á r i o s t i p o s de e q u i p a m e n t o s . A e s c o l h a do t i p o de e s t a ~ ã o
feita tomando-se por b a s e a s funcõas por ela
desempenhada, Come a p o r t a b i l i d a d e do s e f t w a r e a p l i c a k i v o
de tempo r e a l d e s e j á v e l , deve-se t e r o mesmo s i s t e m a
o p e r a s i r m a l no maior número d e e s t a e õ e s p o s s i v e i s .

Um o u t r o f a t o r muito i m p o r t a n t e em sistemas
de tempo-real 6 a c a p a c i d a d e de continuarem em operacão
ap6s a ocorrência de uma falha, mcme que de forma
degradada.

A motivacão d e s s e t r a b a l h o é, portanko, a
e l a b o r a ~ ã ode um s i s t e m a o p e r a c i o n a l p o r t & ti l de tempo-real
com prirnit i v a s d e tolersncia a falhas, particularmente
f a l h a s de s e $ % w a r e .

1 . 1 . 4 . Razaes p a r a ser P o r t á t i l :

SoCtware vem se t o r n a n d o , com o p a s s a r dos


anos, s componente mais c a r o de um s i s t e m a de computação.
Com o a v a n ~ o na área de circuitos integradas, os
equipamentos projetados têm sido mais poderoças @

Clexiveiã, podendo ser u t i l i z a d o s em uma v a s t a gama de


aplica~5es. kardware prove a i n f r a e s t r u t u r a s o b r e a qual
s e apoia a a p l i c a ~ a o . Cabe, pois, a s çoftware "vestir"
este hardware de modo a c o n s t r u i r um s i s t e m a d e c a m p u t a ~ S o
c a p a r de desempenhar s u a - F u n ~ à oda melhor forma p o s s í v e l .

Quanda s e d e s e n v o l v e um ç a f t w a r e p a r a uma
determinada a p l i c a ~ ã o ,deve-se p r e o c u p a r em faz&-le de modo
a que, senão t o d a , p e l o menos p a r t e d e s t e s o f t w a r e possa
ser reaproveitado em uma nova s i k u a c ã o . Isso se deve,
ainda em b o a p a r t e , p e l a forma " a r t e s a n a l " com que s e Caz
software. Como -Forma de tornar o desenvolvimento de
s o f t w a r e uma a t i v i d a d e d i s c i p l i n a d a , visande minimirar o%
e s f o r ~ e s p a r a sua c o n c e p ~ ã o , implementa~ão, m a n u t e n ~ ã oe
altera~ão, surgiu um rama na Cigncia da Camputa~ão
denominado E n g e n h a r i a d e S o f t w a r e . T r a t a r s o f t w a r e como um
trabalho de engenharia i m p l i c a n a adacão de tkcnicas e
procedimentos formais que levam a implernenta~ões mais
e o n f i & v e % s em menor tempo.

Contudo, a a d o ~ z ede t k c n i c a s de e n g e n h a r i a
de s o f t w a r e n ã o r e s o l v e o p r o b l e m a de r e a p r o v e i t a m e n t o de
s s f t ware. Por mais bem regrade que seja seu
desenvolviments, a i n d a e x i s t e a questão da d i v e r s i d a d e de
ambientes operasionais nos quais o s o f t w a r e é executado.
sse ambiente é composto p o r v 6 r i a s f a t o r e s como t ipo e
número d o s p r s c e s s a d o r e s , a r q u i Q e t u r a da máquina, sisk@ma
operaeional, l i n g u a g e m de p r o g r a m a ~ ã o , e t s . D i a n t e dessa
s i t u a ~ ã o , muitas v e z e s a Ú n i c a p a r t e d e um software que
pode s e r r e a p r o v e í t a d a ti sua i d g i a .

ortabilidade" é a palavra chave dessa


questão. Um s o f t w a r e deve t e r um g r a u de p o r t a b i l i d a d e o
maior p o s s í v e l . Um s e f t w a r e t o t a l m e n t e p o r t z i t i l aquele
que não n e c e s s i t a de nenhuma m o d i f i e a 6 Q e p a r a s e r e x e c u t a d o
em um ambiente o p e r ã c i o n a l d i v e r s o daquele no qual foi
originalmente desenvolvido.

Na ã r e a de a p l i c a ~ õ e çem t e m p o - r e a l (como a
área de c o n t r o l e de p r o c e s s o s ) , é comum a e x i s t e n c i a de
vários e q u i p a m e n t o s de p r o e e s s a m e n t o de dados, como por
eHemplo CPã ( c o n t r o l a d a r e s p r s g r a m á v e i s ) , CNCs (comandos
numéricos csmput a d o r i r a d o s ) , unidades remotas de
processamenta (que sao c e m p u t a d o r e s d e d i c a d o s ) , além de
microcomput a d o r e s , minicomputadores e at9 mesmo
c o m p u t a d o r e s de g r a n d e p o r t e de p r o p d ç i t o genkrico. Como
u m s i s t e m a de t e m p o - r e a l engloba, em m u i k o s c a s o s , m a i s de
um desses componentes, torna-se necessário O

d e s e n v o l v i m e n t o d e s o f t w a r e p a r a mais d e um t i p o de máquina
hospedeira.

Ocorre, parem, que t e r que c o n s i d e r a r , no


desenvolvimento de s e f t w a r e apl i c a t ivo, a s p a r t i c u l a r i d a d e s
de cada uma das e ç t a ~ õ e s que compõem esse sistema
distribuido, & uma r e s t r i c ã o extremamente desconfortável
para o p r a j e t i s t a . Dependendo da c o n f i u r a c ã a do s i s t e m a ,
algumas t a r e f a s podem s e r e x e c u t a d a s em um ou o u t r o t i p o de
esta&%.

A e x i s t z n c i a d e um s i s t e m a o p e r a c i o n a l que
seja comum a o s d i v e r s o s t i p o s d e computadores empregados
aumenta a p o r t a b i l i d a d e do s o f t w a r e a p l i c a t i v o . Em a l g u n s
casos, o apli.cativa pede ser totalmente portátil ou
necessitar a p e n a s de s e r recompilado p a r a s e r e x p r e s s o em
termos do c ó d i g o da novo p r o c e s s a d o r .

Todavia, coma o aplicativo necessita do


sistema operacisnal, e s t e tambkm deve s e r o mais portátil
possível. Caso c o n t r á r i o , a s d i f i c u l d a d e s e n c o n t r a d a s p a r a
transportar o s i s t e m a o p e r a c i o n a 1 p a r a uma nova miiquina
terão re$lexos n a p e r t a b i l i d a d e do s i s t e m a d e tempo-real
coma um t o d o .

azo,, para s e r T o l e r a n t e a F a l h a s

Sistemas d e tempo-real são encontrados em


d i v e r s o s s e t s r e s d a a t i v i d a d e humana. São, em s u a
maioria, sistemas de controle. Esses sistemas têm
a p l i c a ~ ã o nas á r e a s de m a n u f a t u r a , g e r a ~ ã o de energia,
m i l i t a r , médica, a e r s - e s p a c i a l , etc.

Por mais bem e s p e c i f i c a d o s e testados que


sejam, nsa há come g a r a n t i r que um s i s t e m a d e c o n t r o l e em
tempe-real s e j a totalmente confiável, i s t o é, que esteja
sempre em a t i v i d a d e e s e comportando d e a c o r d o com suas
e s p e c i f i c a ~ g e s . D e f e i t o s em componentes, bem como e r r o s de
p r o j e t o e de implementacão s ã o sempre p o s s % v e i s de o c o r r e r .

Uma f a l h a em um s i s t e m a d e c o n t r o l e pode t e r
eonseqilêneiaç d e dimensães v a r i & v e i s , de a c o r d o com o t i p o
d e s i s t e m a s o b r e o qual a t u a . Uma s u s p e n s ã o no bombeamento
automático de Sgua p a r a um r e s e r v a t ó r i o pode c a u s a r a p e n a s
o desconforto de ter-se que realizar essa opera~ao
manualmente. Por outra lado, uma f a l h a em um s i s t e m a de
c o n t r o l e de uma nave e s p a c i a l pode s i g n i f i c a r a d e s p e r d i c i o
de uma grande soma de dinheiro, sem ser levada em
consideuaqaa a p e r d a d e v i d a s humanas, case o v& seja
tripulado.

Uma f a l h a pode i n t e r r o m p e r a funcianamento


de um s i s t e m a d e c o n t r o l e . Apesar d e indesejável, essa
c o n d i ~ ã o é m u i t a s v e z e s p r e f e r i v e l a o mau funcionamento do
sistema.

De qual quer forma, independentemente do t i p o


d e f a l h a , d e s u a conseqLI2nci.a e g r a v i d a d e , 6 i m p e r t a n t e que
um s i s t e m a d e tempo-real d i s p o n h a d e algum mecanismo que
i m p e ~ aque s a e f e i t o s d a mau -Funcionamento de uma d a s suas
partes (seja d e s o f t w a r e ou h a r d w a r e ) s e j a sentida pelo
E i g u a l m e n t e r e l e v a n t e que o s i s t e m a
s i s t e m a como um t o d a .
operaciona1 disponha de p r i m i t i v a s que permitam a
implementaç%o de mecanismos p r ó p r i o s de t s l e r S n c i a a f a l h a s
para que a a p l i c a ~ ã snão t e n h a que s e p r e o c u p a r em criá-
105.

Como já mencionade a n t e r i o r m e n t e , o o b j e t i v o
geral desse trabalho é Q de elaborar, implementar e
i ç c u t i t - um s i s t e m a o p e r a c i s n a l , v o l t a d o p a r a um ambiente
distribuído, com primitivas de tolerancia a falhas e
estruturado de forma a ser o mais portstil possivel. A
ateneão maior dessa tese, contudo, está nos mecanismos de
tolerância a falhas, em especial falhas de software.

Visa-se, principalmente, est ruturar o


sistema operacional de forma a ser o mais port&til possível
e estudar e discutir eonceitoã e mecanismos de tolerância a
Galhas, implemenkando, por fim, um desses mecanismos. O
mecanismo de tolerância a falhas e%-colhidofoi o de N-
versões. A implementa$Eo desse sistema speracisnal em um
microcomputador do tipo IBM-PC ilustra aplica68es desses
coneeft os.

Dada à pert abil idade do sistema operacional ,


ss resultados obtidos podem ser extrapalados ou mesmo
verificados em outras equipamentos esm capacidade de
puocessamento semelhante & d o empregado nessa tese. A
partabilidade para m quinas de maior porte 6 tambkm um
objetivo perseguido, mas que será deixado para trabalhes
posteriores.

A metodolsgia de trabalho empregada


consistiu em efetuar um estudo global sobre siatemas
operaeionais, sistemas de tempo-real e eonfiabilidade de
sistemas.

A
partir desse estudo foram elaboradas
propostas para a imp'iementa~ãodo sistema operacional, de
acordo com o9 objekivos expostos n o itemanterior. Foram
efinidos os "limites" da tese, ou seja, quais tápisss
seriam abordados e quais não. Esse é um momento
importante pois uma definicão mal elaborada do contexto
estudado pode dificultar um acabamento a equado do
A i m p l e m e n t a ~ ã o f o i C e i t a de forma g r a d u a l e
modular. Cada módulo foi ideal irado, projetado,
implementado e d e p u r a d o a t é a p r e s e n t a r um comportamente com
um c e r t o grau de c o n f i a b i l i d a d e . Mesmo não g a r a n t i n d o a
elimina~ão total das erros, esse t i p o de procedimento
f a c i l i t a a s e u i s o l a m e n t o p e r m i t i n d o , d e s s a forma, d i m i n u i r
o tempo d e i m p l e m e n % a c ã a .

A documentasão da t e ã e f o i s e n d o g e r a d a em
p a r a l e l o com a i m p l e m e n t a ~ ã a . Alguns c a p i t u l a s chegaram a
ser e s c r i t o s a n t e s mesmo d a i m p l e m e n t a ~ ã e . Isso permitiu
que o texto elaborado fosse o mais fiel possivel ao
t r a b a l k o ~ r ái ct o .

Por f i m , foram r e l a c i o n a d a s algumas c r i t i c a s


e sugestoes. Essa p a r t e v i s a s a l i e n t a r o s pontos Cortes e
f r a c o s do t r a b a l h a , p a r a que possam s e r v i r coma e x p e r i ê n c i a
previa para t r a b a l h o s f u t u r o s . São, a i n d a , s u g e r i d a s temas
que possam d a r c o n t i n u a g % o a e s s a t e ã e .

. Caracterásticas Gerais:

O sistema operacional projetado e


implementado n e s s e t r a b a l h a f o i b a t i z a d o com o nome PORTQÇ-
TF. E l e tem a s s e g u i n t e s c a r a c t e r i s t i c a ç :
. mult itare-f'a;
. monoprocessade;
. v o l t a d o p a r a um a m b i e n t e d i s t r i b u i d o i
. com mecanismos de comunicacão e ç i n c r o n i z a c ã a entre
p r o c e s s o s b a s e a d o s em t r o c a de mensagens.
. enderegamento p a r p o r t o s .
. e s c r i t o em C ;
. d i v i d i d o em mádulos d e p e n d e n t e s e indepen
hardware empregado e
. com mecanismo de N - v e r ~ ã e s p a r a t o l e r â n c i a a falhas
de s o f k w a r e .

A capacidade m u l t i t a r e f a se f a z necessária
pela p r ó p r i a e a r a c t e r á s t i c a d e p a r a l e l ismo entre eventos
e x i s t e n t e na á r e a d e c o n t r o l e em t e m p o - r e a l .

Dada à d e s e e n t r a l i r a c ã o da s i s t e m a como um
todo, não se faz n e c e s s á r i o o emprego de e s t a ~ ã e s com
grande capacidade de processamento. Bessa Cerma,
computadores com um Único p r o c e s s a d o r atendem muito bem As
n e c e s s i d a d e s do s i s t e m a .

A escolha de mecanismos de comunicacão e


sincroni~aeao entre processos baseados em troca de
mensagens é a a p ~ z omais s i m p l e s e n a t u r a l p a r a um s i s t e m a
distribuido. Mecanismos de chamada remota de p r o c e d i m e n t o s
são mais adequados a n í v e l de l i n g u a g e n s e não d e sistema
operacional. Tkcnicas como s e m i f o r o s ou m o n i t o r e s foram
d e s c a r t a d a s por n e c e s s i t a r e m d e memória c o m p a r t i l h a d a .

Cl e n d e r e ~ a m e n t op a r a c o m u n i c a ~ a ov i a p o r t o s
tem como o b j e t i v o p e r m i t i r a c o n f i g u r a - 3 s dinâmica dos
processos do sistema. E facilidade 6 de grande
importância para as p r i m i t i v a s de tolerância a falhas
implementados.

A linguagem C f o i e s c o l h i d a p a r a implernentar
o P O R T O Ç - T I por s e r uma linguagem b a s t a n t e d i f u n d i d a e bem
padr-cmizada. Isso torna oç programas escritos nessa
linguagem quase que totalmente portáteis, isto é,
i n d e p e n d e n t e s do compilador u s a d o .

A e s t r u t u r a s ã o dos programas f o n t e em
dependentes a i n d e p e n d e n t e s do hardware u t i l i z a d o p e r m i t e
t r a n s p o r t a r o s i s t e m a o p e r a c i e n a l com um minimo de e s f o r e o .
Desde que h a j a c o m p i l a d o r e s " C " para o processador d e s t i n o
e uma forma de carre a r esse código na membria do
computador, basta r e c o m p i l a r o s módulos i n d e p e n d e n t e s de
hardware. Os rnbdulos dependentes, contudo devera^ ser
reescritos pois e s t ã o vinculados 4 e s t r u t u r a de membria,
número e t i p o d o s r e g i s t r a d o r e s , e t e .

A e x i s t s n c i a de um mecanismo de t o l e r â n c i a a
falhas implementado pelo sistema speracional 6 uma
earacteristica muito d e s e j & v e l em s i s t e m a s de controle.
Dessa forma, o s o f t w a r e a p l i c a t i v e não n e c e s s i t a de se
preocupar expl icikamente com a elaborasão desses
mecanismos.

O PORTOS-TF não prover nenhum sistema de


g e r e n ç i a m e n t s de a r q u i v o s . E l e assume que t o d o a s a f t w a r e ,
bAsico e a p l i c a t i v s , e s t a c a r r e ado n a memória p r i m á r i a da
e s t a ~ ã o . Essa B P G ~ Qde p r o j e t a , a p e s a r de a p r i m e i r a v i s t a
parecer comprome%er a apl i c a b i l idade do sistema
operacional, não o torna desinteressarite, como pode ser
vista a seguir.

Existem duas classes d e mziquinas onde o


PORTOS-TF pode ser empregado: máquinas de uso geral e
máquinas dedisadaç. Nas m&quinas d e uso g e r a l , isto 6,
m6quinas comerciais u s a d a s p a r a uma grande variedade de
apl icacoes, existe sempre um sistema operacional dito
"nativa" que é utilizado para prover um ambiente de
propdsbto genSrico. Esses sistemas oaeracionais nativos
apresentam, de um modo g e r a l , um s i s t e m a d e g e r e n c i a m e n t o
de a r q u i v o s . P a r a e s s e t i p o de computader, é conveniente
utilizar-se o PORTOS-TF em conjunto com o sistema
speracisnal nativo, desde que, é c l a r o , nzo h a j a c o n f l i t o s
irremediáveis entre os dois sistemas operacionai5. Com
isso, conjugam-se a s f u n ~ O e sdo P O R T O S - T F com a do s i s t e m a
o p e r a c i o n a 1 nat i v o (SOUZA, 19 7 ) . Uma d a s v a n t a g e n s d e s s e
t i p o d e a s s o c i a c ã o & o uso de s o f t w ã r e s d e s e n v o l v i d o s para
o sistema o p e r a c i o n a 1 nat i v o como sen o um dos processas
gereneiades pelo PORTOS-TF. O sistema de gereneiamento de
arquivos, nessa s i t u a ~ a oé, então, provido pela sistema
operacional nak ive. Em alguns sistemas operacionais
nativos poderá ser necessiria alguma alteragao no sistema
de geueneiamento de arquivos a fim de adapta-los a um
ambiente concorrente e de tempo-real . Como tais
modificações são muito dependentes da máquina e da sistema
de gerenciamento de arquivos ariginal, elas não foram
consideradas nesse trabalho.

Em computadores dedicados, que ngo possuem


sistema operacional nativo, 6 comum tambkm não se encontrar
dispositivo algum de memória de massa. Nessas máquinas, e
software fica todo gravado em membrias n%o vol&%eis (do
PROM) au então 4 carregado remotamente de um
camputador com esse tipo de dispositivo. Nos casos,
contudo, em que esses computadores possuam dispositivos de
memoria ãecund&ria e desejem utilia&-la, deve-se
desenvolver um nave mbdulo, dependente da arquiketura da
miquina e do dispositivo, a fim de suprir o9 mecanismos de
gerenciamen%o de arquivos. Esse m6dula pode se constituir
de um processe para o sistema operacional ou e n t s o ser
encarado somo um controlador de dispositivo ("device
driver"). A primeira opgão tem a vantagem de lidar mais
facilmente com a5 asçincronismos da diãpositivo físico sem
ocupar a UC na tarefa de aguardar o atendimento de um
pedido.

Neste capitulo E , é feita uma i n t r s d u ~ ã aaos


temas estudados na tese: sistemas operacienais de tempe-
real, portabil idade e tolerância a qalhas. São
apresentadas as razzes que levaram i e l a b o r a ~ ã o de um
trabalho nessa área, a que se pretende com ele, de que
forma o problema foi abordada e que características tem sua
No capitula 11, sgo estudadas quest geã
g e r a i s s o b r e " p o r t a b i l i d a d e " de s i s t e m a s , bem como a s p e c t o s
p a r t i c u l a r e s r e l a t ivos a sistemas operacionai 5.

13 c a p i t u l o EPE é dedicado ao núclea do


sistema operacional. Nele, são apresentados, de forma
resumida, alguns conceitos b á s i c a s na á r e a de sistemas
eperacionais. Em s e g u i d a ção r e l a c i o n a d a s a s a p ~ 8 e s de
projeto com a e x p a s i q ã o dos motivos que a s levaram a serem
otadaç. As e s t r u t u r a s de dadoa empregadas na s o n s t r u ~ a o
do nGcleo s ã o d e s c r i t a s com o p r o p b s i t o de auxiliar na
e n t e n d i m e n t o da l é g i c ã de s u a s f u n e õ e s . E s s a s f u n ~ 8 e s%%a
l i s t a d a s no ú l t i m o i t e m do c a p i t u l o .

O capitulo IV é reservado para um tema


bastante estudado na área de sistemas operacionais:
mecanis,mos de comuniea$ão e s i n c r o n i z a q ã o e n t r e p r o c e s s a s .
dada uma v i s g o g e r a l s o b r e o s mecanismos existentes e
onde mais s e a p l i c a m . Em s e g u i d a s ã o mostradaã a s opções
de projeto f e i t a s e suas justi-l'icativas. P a r último, as
p r i m i t i v a s d e c a m u n i e a ~ S oe s i n e r o n i z a e ã o são c o m e n t a d a s .

No capitula V, 6 discutida a idéia e a


implementa~%od e um " p o s l " de memória com o ~ b ~ e t i v do e
permitir a s s i s t e m a o p e r a c i o n a l a l o c a r dinamicamente suas
estruturas.

O c a p i t u l a V % d i s c u t e a s e s t r u t u r a s d e dados
que s ã o u s a d a s no P O R T O S - T F . Esse a s s u n t o mereceu um
c a p i t u l o à p a r t e p a r c o n s t i t u i r - ã e e m um t a p i c o de grande
i m p o r t â n c i a na e f i c i ê n c i a da s i s t e m a o p e r a c i o n a l .

6 c a p i t u l o VII f a l a s o b r e o que p r e t e n d e s e r
a maior c o n t r i b u l ~ ã ad e s s e t r a b a l h o : um e s t u d o de t é c n i c a s
de tolerância a falhas, em e s p e c i a l f a l h a s de p r o j e t a de
saftware. Nesse capitula serão formuladas e comentadas
primitivas que implementam um mecanismo de N-versões para
tolerância a falhas.

B capituloV X I E traz as conclusões dessa


tese, resuminda o que foi implementado e sugerindo alguns
tópicos, que podem ser abordadas em trabalhes futuros, pais
o tema abordado é vasto e está longe de ãe esgotar.

Terminada o texto principal, apresenta-se a


bibliografia utilizada na elabora~ãa desse trabalho.
Associado a cada titulo, vem um breve comentário sobre o
que & abordado pelo texto. Pretende-se cam isso auxiliar
aos que se utilizarão da tese coma refernncia durante a
s e l e ~ ã e de
textos para maior aprafundamento em algum
tópica. Algumas das referências b i b l i a raficas, mesmo nzo
tendo contribuido diretamente para a elabora~zo da tese,
sãa relacionados com o objetivo de servir de re$erencia
para o detalhamento maior em alguma área específica.

0 apgndice A discute as partieularidadeá da


implementâçâo do PBRTBS-TF em um computador da tipo LBM-PC.
Nessa implementaqão é comentada a forma como a POWTBÇ-TF
utiliza o BBÇ coma sistema operacional nativa da e s t a ~ ã o .

Por fim, são descritas, no apêndice


protbk ipoá das primitivas da PORTOS-TF.
P o r t a b i l i d a d e 6 uma c a r a c t e r i s t i e a d e s e ~ i v e l
em qualquer software. I s s o se d e v e a o f a t o d e q u e , cada
vez mais, o c u s t o d o s o f t w a r e tem a u m e n t a d o em r e l a ~ ã e a o
do hardware.

Um s o f t w a r e d e v e ser p r o j e t a d o d e ferma a
que possa ser r e a p r o v e i t a d o . Q u a n d o s e c o n c e b e um
p r o g r a m a , 6 comum e x i s t i r e m a l g u m a s S u n e B e s c u j o u s o n ã o s e
r e s t r i n g e à a p l i c a & S o p a r a a q u a l se d e s t i n a m . Em muikas
c a s e s , p o r e m , a Çarma com q u e s z o i m p l e m e n t a d a s f a z com q u e
seja ~ m p o s s i v e ls e u r e a p r o v e i t a m e n t o e m o u t r o s programas,
p e l o m e n o s sem n e n h u m t i p o d e m o d i f i c a s % o . Be mesmo m a d a ,
em sistemas mult i t a r e f a e d i s t r i b u i d o s , a implementa~ão
d e s p r e e c u p a d a d e um m b d u l o p o t e n c i a l m e n t e r e u t i l i e 6 v e l p o d e
i n v i a b i l i z a r s u a a p l i c a ~ ã oem o u t r o s s i s t e m a s .

A generalidade deve, pois, ser buscada.


Essa busca, porém, pode l e v a r à i n e f i c i g n c l a d e rnádulo.
E x i s t e , e n t % o , c o m o em q u a l q u e r p r o b l e m a d e e n g e n h a r i a , uma
relação custo X beneficio, que deve ser muito bem
considerada.

O q u e f o i d i % c u t i d o a n t e r i o r m @ n t e se r e f e r e
ao r e a p r o v e i k a m e n t o d e m b d u l s s d e software p a r a a p l i c a c ã e s
diferentes. Existe, contudo, a s i k u a ~ ã o na qual a
a p l i c a c ã o 6 a m e s m a . 0 s u e muda 6 o a m b i e n t e e s m p u t a c i a n a l
(computador, sistema o p e r a e i o n a l , e t c . ) . O p r o b l e m a e n t ã o
e s t á em e e n ã e u i r e x e c u t a r o mesmo s e f t w a r e em a m b i e n t e s
computacionais diversos.
D i f e r e n ~ a s como o p r o c e s s a d o r u t i l i z a d o , o
a memória e a sistema operacional (sistema de
arquivos e f u n - 5 e s d i s p o n i v a i s ) p o d e m 4'azer com que uma
mesma a p l i c a ~ ã o t e n h a q u e ser t o d a r e e s c r i t a . de O uso
linguagens d e alto nivel reduz a dependgncia do processador
n a m e d i d a em q u e s e d i s p o n h a d e c o m p i l a d o r e s p a r a o s
p r o c e s s a d o r e s empre a d o a . Umaoutra formade facilitar o
t r a n s p o r t e d e um p r o rama d e um a m b i e n t e c o m p u t a c i a n a l p a r a
o u t r o e s t á n a p a d r o n i z a c ã o d o sistema o p e r a c i o n a l .

Sistemas s p e r a c i o n a i s q u e se UIM um mesmo


p a d r ã o a p r e s e n t a m s u a s 9 u n ~ Z e se i n t e r f a c e s d e a c o r d o com o
s nessa padrso. Suas implementa~ães, contudo,
podem ser c o m p l e t a m e n t e i n d e p e n d e n t e s e d i s t i n t a s .

Ocorre que um sistema o p e r a c i o n a l eãeuits


para um t i p o d e c o m p u t a d o r tambgm d e v e
ser p o r t á t i l n a
medida e m q u e se d e s e j e s e r v i r também para o u t r o s t i p o s d e
uipamentss. É n e s s e c o n c e i t o q u e s e c o l o c a s PORTOS-TF.

CHERETBN & autros (1879) d i z e m que "um


p r o g r a m a é p o r t á t i l p a r a um c o n j u n t o d e m a q u i n a s c a s o c u s t e
ç i g n i f i s a t i v a m e n t e menos m o d i f i c á - l o para c a d a m a q u i n a d a
que i m p l e m e n t & - l o e m a n t g - 1 s s e p a r a d a m e n t e " . Esse c u s t o
inclui, entre outros fatores, o desempenho d o programa.
Assim sendo, um p r o g r a m a . F á c i l e siar c o n v e r t i d o p a r a um
novo c o m p u t a d o r mas que s e mostre e x t r e m a m e n t e i n a f i c i e n t e
n e s s e n o v o h a r d w a r e n ã o p o d e ser c o n s i d e r a d o p o r t i t i l .

Um software que não n e c e s s i t a de nenhuma


alteração para ser transportado de um computador para
o u t r a s máquinas é d i t o "independente d a máquina".

Um s o f t w a r e p o r t á t i l é v a n t a j o s o s o b o p o n t o
de v i s t a de seu desenvolvimento, manuteneão e e v o l u ~ % o .
n o r m a l m e n t e mais e c o n 6 m i c o d e s e n v o l v e r - s e um s o f t w a r e para
vários c o m p u t a d o r e s d o q u e c o n f e c c i a n a r um p a r a c a d a tipo
de máquina. A área d e a p l i c a ~ ã o d o p r o g r a m a
maior
justifica s u a m e l h o r d o c u m e n t a ~ ~ee um p r o j e t o mais bem
elaborado. Por fim, é t a m b é m mais f á c i l a m a n u t e n ç ã o e
e v o l u ~ ã o d e um p r o g r a m a bem p r o j e t a d o e d o c u m e n t a d o d e q u e
muitos que, invariavelmente, n ã o t e r ã o a mesma q u a l i d a d e
desse único.

. Questeíes elativa- à Perta ilidade de Sistema


Bperasional :

A primeira questão que surge quando se


discute a portabilidade d e um siskema operaciona1 & a
definição d a s máquinas p a r a as q u a i s e l e 6 portátil. Um
sistema o p e r a c i o n a 1 tem q u e s e b a s e a r n a e x i s t ê n c i a d e um
c o n j u n t o d e e ã t r u t u r a ç p r e v i d a s p e l a a r q u i t e t u r a d a máquina
de mode a construir sobre ela sua prápria arquitetura.
I s s o f a z com q u e t e n h a q u e ser d e f i n i d a uma m a q u i n a p a d r ã o ,
que 6 uma a b s t r a ~ ã od a s m á q u i n a s r e a i s q u e se pretende
atendar .

U m o u t r a p o n t o a ser d i s c u t i d o é a f o r m a de
se estruturar o sistema s p e r a c i o n a l a f i m d e m i n i m i z a r o
trabalho de t r a n s p e r t e e n t r e máquinas diferentes. Mesma
que escrito em uma l i n g u a g e m d e alto nável (como, por
exemplo, a linguagem "C"), a l g u n s p o n t o s d o p r o g r a m a têm
que ser amarrados de acordo cem as caracteristicas
especificaã do hardware. k-s 6 a ocaso, por e x e m p l o , da
r a d a e s a i d a nas p r i r n i t i ~ s sd o s i s t e m a a p e r a c i o n a l .

Os cádigos fontes do PORTOS-YF foram


divididos em mbdules. Essa divisão obedeceu a d o i s
critérios: funcionalidade e por-tabilidade. Os arquivos do
t i p o c a b e ~ a l h o , i s t o é , a r q u i v o s d e d e f i n i ~ g e s ,e s t r u t u r a s ,
v a r i á v e i s e r o t ó t i p o s d e f u n c ã e s , foram s e a r a d o s . As
Q u n g õ e s f o r a m a g r u p a d a s d e a c o r d o com o a s s u n t o q u e t r a t a m .
Assim, par exemplo, as fune8as do núcleo constituem um
arquivo, a s f u n ~ 8 a s d e i n i c i a l i z a ~ s ac o n s t i t u e m o u t r o e
assim p o r d i a n t e . A a r t i r d e s s a d i v i s ã o f u n c i o n a l , os
elementos (definicBes, estruturas, funeões, etc.) de um
rupo f o r a m d e s m e m b r a d o ç em a r u i v o s d i f e r e n t e s d e
e p e n d e n c i a q u e a r e s e n t a v a m em r e l a ~ ã o a o
hardware. Dessa f a r m a , c a d a g r u p o d e f u n e õ e s a s s o c i a d a s a
uma d e t e r m i n a d a d i v i s a o 1 6 o sistema o p a r a c i o n a l f i c o u
a r a d o em d o i s a r u i v o s : um c o n t e n d o a p e n a s e l e m e n t o s
independentes do hardware e outro contendo elementos
d e p e n d e n k es . uns casos, contu o, que não h&
elementos dependentes da kardware e o u t r a ssó h& onde
elementos desse t i p o . Nesses c a s o s , s b e x i s t e um Ú n i c o
a r q u i v o para o ico. A p e n a s como i l u s t r a g ã o , t e m -
ãe que a r q u i v o s que contêm elementos dependentes d o
h a r d w a r e tem o mesma nome d e s e u s p a r e s p r e c e i d a a p e n a s
p o r um c i f r ã o (

máquina ~ a d r z o da PORTOS-TF tem aç


u i n t e s c a r a e t e r á s t ieas :
. mecanismo i n t e i r u p ~ ã o i o d e t empo-real ;

. registros da segmento, p e l o menos para cádi


dados;
. um U n i c o p r o c e s s a d o r e
. um c o m p i l a d o r "C" p a r a s e u p r o c e s s a d o r .

Dizer q u e o $0 TOS-TF F p o r t á t i l p a r a t a
as máquinas que tiverem essas caraeteristicas & uma
a f i r m a ~ ã om u i t o f o e, p o i s eal u m a s d e l a s podam a p r a s e n
part i.cularidãdeã e impeçam a s e u t r a n s p o r t e d e maneira
simples. T o d a v i a , p o d e - s e a f i r m a r q u e má u i n a a q u e t i v e r e m
essas earae: e r á s t i s a s são f o r t e s e a n d i d a t ã s a ~ertencerem
ao "dominio do PORTOS-TF"

E i m p r e s c i n d á v e l p a r a um s i s t e m a o p e r a e i o n a l
de tempo-real que o hardware no qual s e b a s e i a t e n h a a
capacidade de g e r a r i n t e r r u p ~ õ e sem i n t e r v a l o s de tempo
constante, ou seja, uma i n t e r r u p ~ ã od e r e l ó g i o de tempo-
real. Essa i n t e r r u p e ã o & usada p a r a o escalonamento por
tempo e p a r a o c o n t r o l e d a s t e m p o r i z a e õ e s do s i s t e m a .

xiçtem s i t u a ~ B e s em que, no sistema


aplicativo, v á r i a s a t i v i d a d e s i g u a i s ocorrem em paralelo.
Dessa forma, o código e x e c u t a d o em cada uma d e l a s & o
mesmo. O que é o estado
difere das variaveis,
r e g i s t r a d o r e s e da p i l h a do p r o c e s s o . A s s i m s e n d o , de modo
a economizar mem0ria, a á r e a que armazena e s s e c Q d i g o pode
ser compartilhada e n t r e e s s e s processas. Cada um deles,
contudo, deve t e r s u a p r ó p r i a á r e a de dadas e de pilha.
bogol n e c e s s A r i a a e x i s t G n c i a de r e g i s t r a d o r e s de
segmenta (ou r e g i s t r a d o r e s de b a s e ) de forma a s e r p o s s i v e l
a c r i a ~ ã o de v á r i a s i n s t g n c i a s de um mesmo processo. O
sistema s p e r a c i o n a l e f e t u a e s s e compartilhamento de 7orma
automzitica: quando o s p r o c e s s o s "gêmeos" s ã s c r i a d a s , o p a i
informa a mesma á r e a d e c 6 d i g o p a r a t o d o s , mas áreas de
dado e d e p i l h a d i f e r e n t e s .

Um n ú c l e o m u l t i t a r e f a pode g e r e n c i a r um ou
mais processãdores. Contudo, no c a s o do p r o c e s s a d o r nãe
ser Gnico, deve-se ter a preecupaeão adicional de se
p r e v e n i r c o n t r a e v e n t u a i s i n t e r r u p ~ õ e sd e hardware. Çabe-
se sue o núcleo de um sistema operacional deve ser
executado com i n t e r r u p ~ s e si n i b i d a s . P a r a que i s s o seja
g a r a n t i d o em um p r o c e s s a d o r , b a s t a sue a s i n t e r r u p ~ õ e ã d e
hardware desse processador estejam desabilitadas. 1sto
pede ser obtido autamat i c a m e n t e , em um mecanismo de
à n t e r r u p ~ ã o d e softwaie, ou expl i c i t a m e n t e , a partir de
i n s t r u ~ õ e sde máquina. 8 PORTOS-TF p a r t e da s u p o s i ~ ã o de
que não h á mais de um p r o c e s s a d o r em cada e s t a ~ ã oem que
está sendo executado. Dessa forma, não tem qualquer
mecanismo d e g e r e n c i a m e n t o d e m b l t i p l a s UCPí.

Pelo Çato d e sistema o p e r a c i o n a l e s t a r t o d o


escrito na linguagem C, 6 imperativo que exista um
c s m p i l a d o r d e s s a l i n g u a g e m q u e gere c á d i g o d e m á q u i n a para
o p r o c e s s a d o r para o q u a l se d e s e j a t r a n s p o r t a r o PORTOS-
PF. E s s e c o m p i l a d o r d e v e s e g u i r o s p a d r õ e s d e KERNPGHAN &
R % T G H % E (i9788) e ANÇZ e p e r m i t i r c h a m a d a s reeursivas de
procedimentos, pois há diversas f u n ~ ã e s do sistema
o p e r a c i o n a 1 q u e se v a l e m d e s ç a c a r a c t e r - i s t i c a .

. Procedimentos d e Wransporte d e

Um sistema operacional não pode ser


"independente da máquina". Como já mene i o n a d o
anteriormente, h2 i.
p o n t o s que estso intimamante l i g a d o s
sua arquitetura, corno o s a l v a m e n t o e a r e s t a u r a e ã o d o
contexto, p o r exemplo ( v i d e c a p i t u l o 111). Dado q u e o
s i s t e m a o p e r a c i o n a l p o d e ser p o r t i t i l p a r a e q u i p a m e n t o s d e
arquiteturas diferentes, a l g u m a s a l t e r a ~ õ e s devem ser
p r o m o v i d a s para o s e u c o m p l e t o t r a n s p o r t e .

De a c o r d o com o e x p o s t o n o item 11.3, as


$antes d o PORTOS-TF e s t ã o s e p a r a d o s em a r q u i v o s d e p e n d e n t e s
e independentes da a r q u i t e t u r a d a máquina. Desde que h a j a
um compilador C sue g e r e um c 6 d i g o exesutável para a
máquina destina (isto é, aquela para onde çe está
ransportando o sistema operacional), basta que esses
m6dulos sejam compilados. Os arquivos dependentes da
a r q u i t et u r a da máquina dest ino devem, contudo, ser
reeseritos.

As p a r t e s d o PORTBS-TF q u e s 2 o depen
da arquitetura da máquina destino estão ligadas aos
seguintes tápicas:
. salvamento e restauracão de contexto;
. i n i c i a ~ ã ad e v e t a r e s d e i n t e r r u p e ã o d e s o f t w a r e ;
. i n t e r c e p t a c ã o d a r o t i n a d e t r a t a m e n t o d a rel6si.o de
tempo-real ;
. r o t i n a ç d e e s c r i t a em v i d e o e
. definições d e algumas constantes e e s t r u t u r a s .

A p r i m e i r a i m p l e m e n t a ~ ã od o PORTOS-Tf foi
r e a l i z a d a em e q u i p a m e n t o s d o t i p o E M-P6 (vide apendice A).
Para o u t r o s tipos d e computadere%, os módulos d e p e n d e n t e s
da máquina devem ser p a r c i a l m e n t e o u , em alguns casos,
totalmente alterados. Apesar d e s s a p r i m e i r a i m p l e m e n t a e ã o
a t o d a f e i t a e m "C", n a d a i m p e d e que se u s e outras
l i n g u a g e n s , i n c l u i n d o Assembly, n a r e c o n s t r u c ã o d o s mbdulos
dependentes d a máquina.

Em alguns tipos d e a r s u i t e t u r a , onde não


e x i s t a a e s t r u t u r a d e i n t e r r u p ~ a od e s o f t w a r e , as chamadas
ao n ú c l e o d o s i s t e m a o p e r a c i o n a l p o d e m s e r f e i t a s a t r a v é s
d e um vetar d e " j u m p s " . Nesse e s q u e m a , r e a l i z a d a uma
c h a m a d a a um e n d e r e ~ ad e memeria a b s o l u t o o n d e s e r á e s c r i t a
uma r e t i n a q u e s e l e c i a n a r a e e n c a m i n h a r á a c h a m a d a à f u n c ã o
pertinente. Todavia, como nessa sikuaeão não há
mascaramen t o nem desmascaramente a u t omát i c e das;
interrupcões d e hardware, ao c o n t r A r i o d o q u e o c o r r e em um
esquema d e i n t e r r u p $ ã o d e s o f t w a r e , d e v e - s e g a r a n t i r s u e as
interrupçães de hardware f i c a r ã o d e s a b i l i t a d a s enquanto nao
r e t o r n a r e m da chamada. I s s o p e d e ser a l c a n ç a d o a t r a v é s d a
utilizacãe de intruêões de habilitação e desabilitaeão de
interrupções na entrada e na çaida, respectivamente, de
c a d a uma d e s s a s r o t i n a s .

uns eomputador@s possuem relbgios de


tempo-real ( c o n d i ~ ã on e c e s s a r i a p a r a p e r t e n c e r e m a o d a m i n i o
de PORTOS-TF). Porém nem todos eles tem uma rotina
o r i g i n a l d e t r a t a m e n t o d e i n t e r r u p e ã o d e r e l ó g i o (que pede,
por exemplo, v i r g r a v a d a em uma EPROM). E s s e é o caso d e
alguns computadores dedicados. Nessa s i t u a ~ ã o , basta
implementar-se a retina de tratamento de interrup~ão de
r e l b g i o d e tempo-real d o PORTOS-TF. Todavia, e m máquinas
que p o s s u a m uma r o t i n a o r i g i n a l d e t r a t a m e n t o d o relósio,
deve ser f e i t a uma i n t e r c e p t a ~ ã od e s u a c h a m a d a a f i m de
i n t r a d u z i r a r o t i n a e q u i v a l e n t e d o PORTOS-TF. Na a p s n d i c e
A, e x i s t e um item r e l a c i o n a d o com e s s e a s s u n t o .

Coma o m a p e a m e n t o d a memória de videe 6


p a r t i c u l a r a cada c o m p u t a d o r , a s f u n ~ 6 e sa s s o c i a d a s ao seu
uso devem siar r e e s c r i t a s para c a d a t i p o d e e q u i p a m e n t o
distinto.

Algumas das constantes usadas pelo sistema


s p e r a e i o n a l são d a d a s p o r p a r t i c u l a r i d a d e s d o h a r d w a r e . c
o caso d e , por e x e m p l o , o ntirnero d e p u l s o s d o r e l b g i o q u @
t o t a l i z e m um s e g u n d o , ou e n t ã o o número d a i n t e r r u p c ã o de
software o n d e p o d e ser c o l o c a d a a rot i n a d e e n t r a d a para o
núcleo d o sistema operaeional. Elas devem, pois, ser
r e d e q i n i d a s para c a d a e q u i p a m e n t o d i f e r e n t e .

Alguns tipos de variiveis tamb&m podem


depender da arsuitalura da pracessador da estacão. O
conceito de ponteiro longo ( " f a r pointer") que existe na
famália de processadores do 88 ( u s a d a n o s e q u i p a m e n t o s d o
t i p o TBM-PC) p o r e x e m p l o , p o d e n ã o f a z e r s e n t i d o em o u t r o s
t i p o s d e UCBs.
arquitetura de um sistema operacional
A
muitas v e z e s confronta dois fatores importantes em um
projeta de software: simplicidade X efisscia. Lmplementar
mecanismos de forma simples e direta 6 uma preocupação que
deve estar sempre na mente de qualquer projekista. Quanto
menor a complexidade, menor a probabilidade de ocsrrencia
de erros na implementaçSo e mais $&si1 e rápida a
manutenção. Existem situacões, cont uda, ande estruturas
simples não conseguem desempenhar as tarefas envolvidas de
forma eficaz. Isso, porkm, não implica que D projeto tenha
que se tornar extremamente complexa. Apenas, em tais
situacões, opeões mais elaboradas devem ser adotadas.

A primeira questão a ser abordada no projeto


de um sistema operacional diz respeito à sua estrutura~sa.
Segundo HObT & outras (1978), há duas Pormas básicas de se
organizar um sistema operacional: atravks de um monitar
monolitico e atravds de um núcleo.

O PORTOS-TF & estruturade a partir de um


núcleo pois, desta forma, apenas as a p e r a ~ ã e scriticas são
executadas com interrup~õesdesabilitadas, as contririo da
sue ocorre em um monitor monolitico.

Cabe ao nbcleo da sistema operaciona1


gerenciar o processador, suprir mecanismos de comunica~ão@
sincronizacão entre processos (vide capítulo I V ) e oferecer
primit ivas que imp lementem, ou sobre as quais sejam
implemenkados, mecanismos de talerancia a falhas (vide
capitula Vãã) . Q gereneiamento da processador entre as
i-e

d i v e r s o s p r o c e s s o s que competem por e s s e r e c u r s o bastante


i l u s t r a d o na l i t e r a t u r a (BEITEL, 1984; HBLT & o u t r o s , 197
MADNPCM 8 DONOVAN, 1974). As demais f u n ~ õ e sdo sistema
o p e r a c i o n a l Cicam f o r a do nticleo, d i s p o s t a s em e n t i d a d e s de
s o f t ware, assáncronas e interrompiveis chamadas
"processos".

Cada r e c u r s o d e hardware pode s e r c o n t r o l a d a


p o r um p r o c e s s o , b a t i z a d o de " p r o c e s s o g e r e n t e " do r e c u r s o .
Bessa forma, o n ú c l e o nãa n e c e s s i t a r á s e p r e o c u p a r com o
g e r e n e i a m e n t o do9 r e c u r s o s p e r i f é r i c o s de hardware, podendo
a s s i m d e d i c a r - s e a s a t i v i d a d e s ~6 mencionadas.

Um processo pode e s t a r em três estados:


o", " p r o n t o " e "bloquea o " . Q sistema operaciona1
escalona os processos de acordo com a polática mais
conveniente para Q ambiente onde será empregada. "ta
politica pode variar d e sistema para sistema. 93EITEL.
(1984) d e d i c a um c a p i t u l o i n t e i r o a e s s e t b p i c o .

Há d u a s formas a t r a v é s d a s q u a i s um p r o c e s s o
pode p e r d e r o c o n t r o l e da UCP, ou s e j a , p e l a s q u a l % pode
haver um escalonamento: por e v e n t o e por tempo (HOLT &
outros, 1978; ii 4 ; K S R R M A N & KAUFMANN, 1984). No
e s c a l s n a m e n t o por tempo, cada p r o c e s s o r e c e b e uma " f a t i a d e
tempo ('time s l i c e ' ) " d u r a n t e a qual usa o processador.
Uma vez e x p i r a d o e s s e tempo, o processa s e r á escalonado.
O c o r r e , porkm, que, d u r a n t e o tempo em que e s t á de p o s s e da
UCP, o processo pode efetuar uma chamada ao sistema
operaciona1 que o t o r n e "bloqueado". Se isso ocorrer,
torna-se um d e s p e r d í c i o d e tempo a g u a r d a r a t é que a fatia
de tempo desse processo expire para promover o
escalonamento. Dessa forma, quando um processo fica
"bloqueado" por uma chamada a s s i s t e m a o p e r a c i o n a 1 ele 6
imediatamente escalonado. Esse tipo de escalonamento
r e c e b e o nome de "escalonamento por e v e n t o " .
Para que o n ú c l e o coordene a escalonamento
dos processas & n e c e s s á r i o que e l e conkeea algumas
i n f o r m a ~ õ e s s o b r e cada um d e l e s . E s s a s i n f o r m a ~ G e sficam
armazenadas em uma e s t r u t u r a de dados chamada " d e ã c r i t o r de
p r o c e s s o (DF')". A s i n f o r m a ~ 5 e ãg u a r d a d a s nos DPâ variam
p a r a cada s i s t e m a o p e r a c i o n a l . Algumas informa~ões,
c o n t u d o , s a o comuns a t o d o s o s s i s t e m a s . Dentre e l a s pede-
se citar a i d e n t i f i c a d a r do p r o c e s s o , seu estado
( " r o d a n d o " , " p r o n t o " ou " b l o q u e a d o " ) e a l o c a l i z a c ã o de s u a
pilha.

Cada p r o c e s s o deve t e r s u a p r ó p r i a p i l h a . O
sistema o p e r a c i o n a l pode p o s s u i r p i l h a p r b p r i a ou usar a
pilha do p r o c e s s o c o r r e n t e t o d a vez s u e f o r acionade. A
primeira o p ~ z o i n t r o d u z um processãmento e ~ t r a , para a
troca de pilhas na entrada e na saida do sistema
operarional. A segunda, por outro lado, obriga oç
processas a terem uma f o l g a na á r e a de pilha suficiente
para que p o s s a s e r usada p e l o s procedimentos do sistema
operacional. O PORTOS-TF adotou a p r i m e i r a opqsa tendo,
assim, sua p r á p r i a p i l h a .

Uma o u t r a informaç%o que pode s e r l e v a d a em


consideracão pela sistema operacional a , nesse caso, deve
e s t a r nos DPs é a " p r i o r i d a d e " d a s p r o c e s s o s . A prioridade
do p r o c e s s a s e r v e p a r a in$ormar ao s i s t e m a o p e r a c i o n a l qual
sua importGncia em termos de u r g ê n c i a da usa da UCP.
Processos mais prioritários têm p r e f e r E n e i a no uso do
processador.

Em s i s t e m a s de tempo-real , a distribui~ão
das prioridades por entre a s processos 6 uma questão
complexa. Se processos de maior prioridade $icam se
a l t e r n a n d o no usa da p r o c e s s a d o r , i s s o pode impedir o uso
deste r e c u r s o p e l o s p r o c e s s o s d e menor prioridade. Esse
e-feito 6 conhecido na l i t e r a t u r a como adiamento infini
(tamb@m e a n h e c i d o coma " s t a r v a t i o n " , em i n s l i 2 s ) ( K L R R M A N M &
KAUFMANN, 1 8 8 4 > .

Prioridades podem ser "estáticas" ou


"dinSmicas". No primeiro caso, uma vez atribuída a um
processo, a prioridade não mudada. No segundo, cada
processo tem uma prioridade inicial, mas ao longo de sua
e x e c u ~ ã o , pode te-ia alterada para um valor mais adequado.
Prioridades estáticas são mais simples de serem
gerenciadas. Prioridades dinâmicas podem ser adetadas com
o propósito de evitar o adiamento infinito.

O núcleo do PBRTBS-TF se vale de trgs


estruturas de dados para o gerenciamento dos processos.
são elas:
. "lista" de descritores de processos;
. "lista" de processos no estado "pronto" e
. "liãta" de processos bloqueados com cliusula de
t empst .

Podas as t râs 1 iejt a s enumeradas


anteriormente são implementadas através de uma estrutura
mista do tipa arvore binaria - lista circular (vide
capitulo VI) (dai porque a palavra "lista" esta entre
aspas) . Essa arquitetura foi adotada por apresentar um
tempo média de busca de um elemento O(log n) em o p o s i ~ ã o a
um tempo O ( n ) de listas encadeadas.

e Deseriteres de Processos

h "lista" de descritores de processas ou,


simplesmente, Lista de DPs, tem esmo objetivo guardar os
BPs de todos os processos da e s t a ~ ã o . A chave de
elassificaeão das elementos nesta lista 6 o identificador
do processo. Como cada processa tem um identificador
d i f e r e n t e dos demais, e x i s t e um nó d e á r v o r e p a r a c a d a um
dos p r o c e s s o s de uma e s t a ~ ã o . Por e s s e mesmo motivo, a
l i s t a c i r c u l a r a s s o c i a d a a eada um dos nós da 6rvor-e p o s s u i
a p e n a s um elemento ( f i g u r a 1 1 1 . 1 ) .

Figura 1 1 1 . 1 : Esquema de um wO da L i s t a de DPs

. 2 . L i s t a d e P r o c e s s e s no

A "lista" de p r o c e s s o s no e s t a d o "pronto"
ou, simplesmente, L i s t a dos P r o n t o s , mantem c l a s s i f i c a d o s
pela priaridade t o d o s o s p r o c e s s e s no estado pranto da
estacão . Como virios processos podem ter a mesma
prioridade, um mesmo nb d e á r v o r e pode s e r v i r como e n t r a d a
para uma l i s t a c i r c u l a r de v á r i o s e l e m e n t o s que apontam
para as BPs de p r o c e s s o s no e s t a d o "pronto" de mesma
p r i o r i d a d e (Cigura 111.2). O núcleo d s sistema operaciona1
se v a l e d e s s a l i s t a p a r a e s c o l h e r que p r o c e s s o ocupar& a
UCP na o c a s i ã o de um e ã c a l o n a m e n t o .
Figura 111.2 : Esquema de um nó d a L i s t a de5 P r o n t o s
ou da b i s t a d o s

. bista de l s q u e a d a s com Cláusula e


Tempo:

A "lista" de processos bl oqueados com


c l & u ã u l a d e tempo o u , simplesmente, L i s t a dos
aponta p a r a o s BPs d o s p r o c e s s o s no e s t a d o "bloqueado" mas
que serao 1iberadss automat icarnent e ap&s o t empa
especificado caso n z o a c o r r a nenhum e v e n t o q u e o s libere
antes d e s s e tempo e x p i r a r . 0s e l e m e n t o s desta l i s t a tam
como chave de claisifica~ao o tempo restante para a
l i b e r a ~ ã oa u t o m á t i c a . A s s i m como a l i s t a dos prontos, a
Lista d o s Bloqueados tem a s c a r a c t e r i s t i c a s i l u s t r a d a s na
f i g u r a (111.2).
Não ti n e e e s s A r i o que o s i s t e m a operacianal
mantenha uma lista para os processas bloqueados sem
c l á u s u l a de tempo, uma v e r que e l e s s 6 s e r ã o d e s b l o q u e a d o s
por uma chamada ao n ú c l e o , e x p l i c i t a (pelo processo) ou
i m p l i e i t a ( p o r uma o u t r a p r i m i t i v a ) .

Para c o n t r o l a r o momento da liberacão dos


processos bloqueados com cláusula de tempo o sistema
aperaeisnal poderia, a cada interrupeão do relbgio,
a t u a l i z a r a s c h a v e s da L i s t a d o s Bloqueados. Isso, P O ~ ~ M ,

s e r i a custoso, p o i s a l i s t a t e r i a que s e r t o d a v a r r i d a , o
q u e l e v a r i a um tempo O ( n ) .

$ai, então, adotada na i m p l e m e n t a ~ ã o uma


v a r i a ~ ã odo procedimento c i t a d o a c i m a . Nesta a l t e r n a t i v a ,
& empregada uma v a r i á v e l que contém a tempo r e s t a n t e p a r a a
l i b e r a c ã a do p r i m e i r o p r o c e s s o da l i s t a . A cada p u l s o do
r e l b g i o , essa v a r i á v e l , e apenas e l a , atualizada. Quando
chegar a zero, e n t ã o o s p r o c e s s o s i n d i c a d o s na p r i m e i r a n ó
da &rvor-e dos bloqueados s e r k liberadas. A variàvel
receberá e n t ã o o v a l o r da chave do navo p r i m e i r o elemento
da l i s t a d o s Bloqueados.

Para e s s e pracedimento f u n c i o n a r de forma


adequada, a chave d o s e l e m e n t o s da L i s t a d a s Bloqueados não
deve ser a tempo r e s t a n t e p a r a a l i b e r a c ã o d o s processos
indicados em seu respec%ivon o da árvore, mas s i m a
diferenea entre esse valar e s tempo restante para a
l i b e r a ~ ã odos p r o c e s s a s a p o n t a d o s no p r i m e i r o n6 da á r v o r e .
Pode-se, por c o n s e g u i n t e , a b % e r v a r que a chave do p r i m e i r o
n6 da á r v o r e 6 n u l a . A ú n i c a desvantagem i n t r o d u z i d a par
e s s a t k c n i e a e s t i no momento em que um p r o c e s s o é bloqueado
com uma c l % u s u l a de tempo i n f e r i o r à do p r i m e i r o nb da
lista. Nesse c a s o , deve--se i n c r e m e n t a r t o d a s a s c h a v e s em
um valor i g u a l à d i f e r e n e a e n t r e o tempo que falta para
desblequear s primeiro p r o c e s s a da l i s t a e a valor da
cláusula de tempo deste novo processo. Uma vez
"deslocãdas" a s chaves, o p r o c e s s o deve s e r inserido na
lista dos Bloqueados com chave z e r o e a vari&vel de
contagem de tempo do s i s t e m a o p e r a e i o n a l a l t e r a d a p a r a o
v a l o r da c l á u s u l a de tempo do p r o c e s s o .

EEX.3. E n s t a l a ~ Z ee Acesso ao Múclee:

í3 n ú c l e o do s i s t e m a a p e r a e i o n a l um mi~dula
de s o f t w a r e que f i c a r e s i d e n t e em memória.

As chamadas as nhcles devem ser feitas


através d e i n t e r r u p c ã e s de s o f t w a r e . 0s parametros das
f u n c 8 e s chamadas s ã o p a s s a d o s em uma e s t r u t u r a a l o c a d a p e l o
p r o c e s s o chamadar da f u n e ã o . B endereqo dessa e s t r u t u r a &
passada p a r a s n h c l e o na momento da g e r a s a s da i n t e r r u p c ã o
de software que t r a n s f e r e o c o n t r o l e da UCP de processo
p a r a o n ú c l e o do s i s t e m a a p e r a e i o n a l . A forma com que e s s e
enderece @ passado depende da a r q u i t e t u r a da máquina u s a d a .
Por e s s e met i v o , e l e um mecanismo implementado em um
modulo "dependente d a m%quinaH.

Na e n t r a d a da n h c l e o , 5go empilhados todas


as registradores. Em s e g u i d a , é s a l v o , no BP do p r o c e s s a
" r o d a n d a " , o e n d e r e - o c o r r e n t e do t o p o da p i l h a . 8 núcleo,
então, chaveia para sua p i l h a . Uma v e r que cada p r o c e s s o
tem sua prhpria pilha, os registradores podem ficar
guardados nessa pilha. Issa faz com que não seja
n e c e s s á r i o o c u p a r - s e á r e a do BP p a r a e s s e f i m .

um n i v e l mais e l e m e n t a r ,
Em constituem a
a" de um p r o c e s s o o s v a l o r e s dos r e g i s t r a d o r e s d a
maquina no momento d e e s c a l o n a m e n t o , p o i s supEe-se que cada
p r o c e s s e t e n h a s u a s p r b r i a s & r e a s de p i l h a e de d a d o s . Em
circunstâncias mais e l e b o r a d a ã , como na r e s t a u r a q ã o d e um
e s t a d o a n t e r i o r de um p r o c e s s o , a l g u n s v a l o r e s de v a r i á v e i s
podem tambkm compor o contexto de um processo (vide
Na s a í d a do n ú c l e o , a p i l h a k chaveada p a r a
a do p r o c e s s o que d e v e r á ocupar a UCP. Logo após, os
r e g i s t r a d a r e g s ã o desempihados, e o processamento d e i x a o
núcleo.

Má duas formas do n ú c l e o s e r chamada: por um


p r o c e s s o ( p e l a evocaGSs de uma p r i m i k i v a ) ou a t r a v é s de uma
i n t e r r u p e ã o do r e l d g i o .

Quando a e n t r a d a s e d6 p e l a chamada de uma


d e suas primitivas, o n ú c l e o , apbs e f e t u a r o salvamento do
c o n t e x t o e a t r o c a d e p i l h a , chama a funeão d e s e d a d a .

Quando é o r e l ó i o q u e a c i o n a o n ú c l e o , ele
v e r i f i c a s e 6 o momento de l i b e r a r algum p r o c e s s o bloqueado
com cláusula d e tempo. Em c a s a afirmativo, executa a
l i b e r a ~ ã odo p r o c e s s o . Veri+'ica, em s e g u i d a , s e a f a t i a do
processo que ocupa a UCP não e s t i congelada (ver itens
III.5.18 e IIE.5.11). Se não e s t i v e r , decrernenta seu
v a l o r em uma u n i d a d e . Se e s s e v a l o r chegou a z e r o , chama a
fun~ão de escalonamento (ver item 111.5.16). 0
e s c ã l o n a m e n t o do p r o c e s s o s e r á , e n t ã o , promovido d e s d e que
não e s t e j a d e s a b i l i t a d e ( v e r i t e n s 111.5.14 e IEI.S.15).
Antes d e i n i c i a r o procedimento de r e t o r n o , s%o executadas
outras o p e r a ~ g e scomo a t u a l i r a r a h o r a g l o b a l do sistema,
r e a r m a r o c o n t r o l a d o r de i n t e r r u p ~ E e s ,e t c .

Processos, na qualidade de entidades


autGnamas, são e x e c u t a d o s de forma i n d e p e n d e n t e uns deã
outros. A c o o p e r a ~ ã oe n t r e e l e s s e dá unicamente a t r a v k s
da emprego das p r i m i t i v a s de troca de m@n%agens ( v e r
capitulo I V ) . Sua comunicacãe com o s i s t e m a s p e r a c i o n a l
feita pela chamada de p r i m i t i v a s do núcleo (ver item
111.5).

Cada p r o c e s s o tem s u a prcipria 5 r e a de dados


e de p i l h a . Areas de e h d i g o podem s e r c o m p a r t i l h a d a s por
malá de um p r o c e s s o . Dessa forma, podem s e r c r i a d a s em uma
estacão mais de uma i n s t a n c i a de um mesmo processo. Na
verdade, para o sistema operacional, cada uma dessas
i n s t a n c i a s c o n s t i t u i um novo p r o c e s s o .

unci3es d a Núcleo:

B nGcleo da PORTOS-TF apresenta a s seguintes


$uneêjegi :
. c r i a c ã o e d e s t r u i ç f k de p r o c e s s o s j
. o b t e n ç ã o d o i d e n t i f i c a d o r do p r o c e s s o c o r r e n t e ;
. bloqueio e liberaeãa d e processos;
. a b t e n ~ ã oe a l t e r a ç ã o da p r i o r i d a d e d e p r o c e s ~ o ~ j
. o b t e n c ã o e a l t e r a c ã o d a f a t i a de tampe a t r i b u í d a
aos processos;
. congelamento e descongelamento da f a t i a de tempo
a t r i b u i d a aos processos i
. h a b i l i t a g ã o e d e s a b i l i t a ~ bde g e r a ~ ã ode e x e e ~ k s i
. h a b i l i t a s ã o e d a s a b i l i t acgo de escalonamento;
. e s c a l o n a m e n t o do p r o c e s s e c o r r e n t e e
. o b t e n ~ ã od o e s t a d o do s i s t e m a o p e r a c i a n a l .

. I . Criacão d e P r o c e s s o s :

A e r i a e % o de um p r o c e s s o é f e i t a a t r a v k s da
exeeucãa da p r i m i t i v a " c r i a , p r o c e s s o " . Qualquer processa
pode chamar essa primit iva e , portanto, criar um novo
processa.

Em alguns sistemas operacionai.s como, por


exemplo, o UNIX, o s p r o c e s s o s c r i a d o r e s s e tornam " p a i s "
dos "filhos" criados. Assim sendo, quando s pai &
eliminado, o s f i l h o s tambkm o s ã o . Não 6 d e s s a forma sue
opera o PORTOS-TF. Nele, nZa e x i s t e nenhuma r e l a e ã o de
"parentesco" e n t r e o processo "criador" e o "criado".

Desãs m a n e i r a , uma vez c r i a d o , um p r o c e s s o


desconhece seu c r i a d o r . O c r i a d o r , c o n t u d o , obt6m como
c ó d i g o de r e t o r n o da p r i m i t i v a evocada o i d e n t i f i c a d o r do
processo criado. Com e l e , o c r i a d o r poderá e x e c u t a r t o d a s
as o p e r a ~ õ e sd i s p s n i v e i s s o b r e o p r o c e s s o criado. Dessa
forma, a p e s a r de não e x i s t i r uma r e l a c ã o de " p a i e f i l h o " ,
no sentido mais comum d o s t e r m o s , entre esse par de
processos f i c a e s t a b e l e c i d a uma hierarquia. O processo
c r i a d o r promove, em m u i t o s c a s o s , a c o n f i g u r a ~ ã oe n t r e o s
p r o c e s s o s por e l e c r i a d o s ( v i d e c a p i t u l o I V ) .

A criacão de um processo depende dos


s e g u i n t e s pariimetros:
, endereGo i n i c i a l do c b d i g o
. prioridade
. tamanho da f a t i a d e tempo
. e n d e r e ~ oi n i c i a l da p i l h a
. e n d e r e c o i n i c i a l da á r e a de dados

A p r i o r i d a d e de um p r o c e s s o pode v a r i a r d e 1
a 255, sendo 2% a mais b a i x a e 1 a mais a l t a . Um p r o c e s s o
s ó ocupa a UCP quando não houver o u t r o s de maior p r i o r i d a d e
na L i s t a d o s P r o n t o s . Alguns s i s t e m a s a p e r a c i o n a i s como s
P0OLPgl ( K T RMANN & KAUFMANN, 1984) adotam um controle
ciclico dos p r o c e s s o s . Esãe t i p o de c o n t r o l e estabelece
prioridades iguais p a r a t o d o s o s p r o c e s s o s uma fatia de
tempo g r a n d e a s u f i c i e n t e p a r a que cada processo execute
uma determinada apão. Proce-ssas g r a n d e s demais devem s e r
divididos em v & r i o s pequenos p r o c e s s o s na mementa de sua
programap%o ou a t r a v é s de i n t e r r u p ~ ã e sdo relhgio. Essa
p a l i t i c a e v i t a o adiamento i n f i n i t o mas, em c o n t r a p a r t i d a ,
provoca a ã u b u t i l i z a ~ ã oda UCP. Q PORTOS-TF a d e t o u o s u e
KERRMANN & KAUFMANN (i9 4 ) chamam de "escalonamento
d i r i g i d o por evento" ("event-driven mede") por p e r m i t i r um
melhor aproveitamento do p r o c e s s a d o r . Fica a cargo do
p r o j e t i s t a do s o f t ware a p l i c a t i v o a a t r i b u i ~ ã oadequada d a s
prioridades de seus processos. Caso ele deseje um
escalonamento c i c l i e o , b a s t a a t r i b u i r a mesma p r i o r i d a d e a
todos o s processos.

B tamanho da f a t i a de tempo i n d i c a qual o


valor da f a t i a de tempo do p r o c e s s o medido em pulsos do
relógio. Q u a n t o maior e s s e tamanho, maas tempo o p r o c e s s o
passará no e s t a d o "rodando" a n t e s de s e r escalonado por
tempo. Q tamanho da f a t i a de tempo de um p r o c e s s o não tem
qualquer influGncia no e s c a l o n a m e n t o por evento. Essa
facilidade do sistema operacional torna viável que
p r o c e s s e s d e mesma p r i o r i d a d e S a ~ a r num u s e d i f e r e n c i a d o da
UCP em termas de propor~ao de tempo. Permite, por
c s n s e q U & n c % a , que no c a s o de um e s c a l o n a m e n t o c i c l i c o , as
f a t i a s de tempo sejam a d e q u a d a s a c a d a p r o c e s s o .

8 e n d e r e ~ oi n i c i a l da p i l h a 6 o e n d e r e ~ oda
p o s i c ã o onde ç e r i c o l o c a d o o p r i m e i r o v a l o r a ser empilhado
pele processa. Cl n ú c l e o do s i s t e m a o p e r a c i o n a l não faz
nenhum cheque de e s t o u r o de p i l h a . 8 processo, ao ser
escrito, deve, então, r e s e r v a r uma & m a c u j o tamanho não
seja nunca i n f e r i o r a o tamanho máximo que a pilka pode
alcan~ar.

No DP do p r o c e s s o , s ã o guardadas apenas a s
in$orma~Ces r e l a t i v a s à prioridade, tamanho da f a t i a de
tempo, e n d e r e ç o i n i c i a l da p i l k a da p r o c e s s o e a l i s t a d o s
portos (ver capitulo EU) associados ao processo (na
criaç%o, não há p o r t o s a s s o c i a d o s e , portanto, a lista é
iniciada vazia). Cl e n d e r e q o i n i c i a l d o c b d i g o e o e n d e r e ~ o
inicial da área de dados, são escrikos na pilha
p r o c e ~ s o , no momento de s u a c r i a s ã o , s e n d o de l á r e t i r a d o s
e e s c r i t a s n o s r e g í s t r a o r e s p e r t i n e n t e s na h o r a em que o
p r o c e s s o f o r despachado. Essa o p e r a $ ã o é r e a l i z a d a d u r a n t e
o procedimento de saáda do núcleo, já descrito
anteriormente neste c a p i t u l o .

0 procedimento de criaqão de puacessas


desempenha a s s e g u i n t e s t a r e f a s :
. e s c o l h e o i d e n t i f i c a d o r da processei

. c r i a o BP do p r o c e s s o e i n s e r e - a na L i s t a de D P s ;
. d e i ~ a - o no e s t a d o "bloqueado" e

. prepara a pilha do processe para o primeiro


escalonarnento.

E ã t e procedimento r e t o r n a a i d e n t i f i c a d o r do
processe. Caço o i d e n t i f i c a d o r s e j a 8 ( z e r o > , i s s o i m p l i c a
que não há mais i d e n t i f i c a d a r e s d i s p o n á v e i s .

O processo reckm criado fica na estado


"bloqueado", necessitando ser posteriormente "liberado"
para iniciar s u a execuc%o. E s t e procedimento 6 adotado
pois, via de r e g r a , a p r o c e s s o i r & se comunicar com oã
demais. Para t a n t o , s e r á , ainda, necess&rio ã e r i a ~ ã ae a
l i g a ~ ã o dos portos a e l e pertencentes ( v e r capitulo %V).
Gemo a l i g a c ã o dos p o r t o s só pode s e d a r apbs a c r i a ~ z od o s
p r o c e s s o s a o s q u a i s pertencem, B i n i c i o da execucãe d e s t e s
está, desta maneira, vinculada ao t é r m i n o da etapa de
con-Figuraqão do s i s t e m a . Caso comecassem a s e r e x e c u t a d o s
a n t e s , p e d e r i a o c o r r e r a p e r d a de mensagens.

A carga dos processos para a memária


primária do computador, bem como a gereneia das áreas
alocada5 para a cádigo, dados e p i l h a d o p r o c e s s o não s%a
de compet@ncia d e PORTOS-TF. Como abordado n o c a p i t u l o 1 ,
este s i s t e m a o p e r a c i o n a l 6 v o l t a d o p a r a a r q u i t e t u r a ~ onde
todo o c b d i g o j á e s t e j a em memaria ( g r a v a d a s em EP
carregados em RAM por pequenos módulos de saftwars
i n d e p e n d e n t e s ) ou onde e x i s t a um s i s t e m a o p e r a c i o n a l n a t i v o
que provenha funcges de c a r g a de programas da memória
secund6ria para a primária. Dessa forma, o procedimento d e
c r i a ~ ã o de processos assume que o processo esta todo
carregado em memória e q u e s u a s i r e a s de dados e de pilha
tamb8m e s t ã o r e s e r v a d a s .

Um processo 6 terminado, ou dest r u i d e ,


passando-se como p a r s m e t r o s e u i d e n t i f i c a d a r .

Caso o p r o c e s s o e x i s t a ( i s t o é, possua um BP
na lista d e DF's), e l e s e r á "bloqueado" sem cláusiula de
tempo ( v e j a i t e m 111.5.4) e seu BP s e r i r e t i r a d o da Lista
de BPs, t e n d o a á r e a que ocupava l i b e r a d a .

Como, de acorde com o exposta no item


111.5.2, o PORTOS-TF não g e r e n c i a a s á r e a s a l o c a d a s p a r a o
código, dados e p i l h a do p r o c e s s o , nenhuma a ~ ã o4 tornada
com r e l a c ã o a e s s a s S r e a s .

Essa f u n ~ ã or e t o r n a o v a l o r do i d e n t i f i c a d o r
passado como parhetro caso a processa exista. Caso
c a n t r á r i o , 4 retornado a valor nulo.

Essa funcso não tem p a r s m e t r o s e , ao ser


chamada, r e t o r n a o i d e n t i f i c a d o r du p r o c e s s e que a chamou.

Como um p r o c e s s o não s a b e , ao s e r criado,


qual i d e n t i f i c a d o r l h e foi a t r i b u í d o , pode s e r c o n v e n i e n t e
que e l e evoque e s t a p r i m i t i v a p a r a poder e f e t u a r a s demais
operacõea n o n ú c l e o s o b r e s i mesmo.
e Processos:

Esta p r i m i t i v a b l o q u e i a um processo (cujo


ident ificador ãe c o n s t i t u i e m um p a r g m e t r o d a p r i m i t i v a )
par um d e t e r m i n a d o t e m p o (um o u t r o p a r a m e t r o d a f u n - % o ) .
C a s o e s s e tempo e x p i r e a n t e s d o p r o c e s s o s e r d e s b l o q u e a d o
( v i d e item %PE.5.5), s e r á c h a m a d a uma r e t i n a d e s e r v i c o ,
c u j o e n d e r e ~ ot a m b é m f o i p a s s a d o c o m o p a r â m e t r a . Caso o
t e m p o d e b l o q u e i o s e j a i n f i n i t o ( i s t o é, o p r o c e s s o s b s e r á
desblsqueado v i a uma c h a m a d a d a p r i m i t i v a d e d e s b l o q u e i o ) ,
o parametro d a r o t i n a d e s e r v i ç o ser& i . g n o r a d o .

Uma vez desbloqueada, um p r o c e s s o n ã o tem


er se o f o i p o r tempo ou por uma atuaç.ao da
primitiva de desblaqueio. "as ri muito semum durante
t r a n s a ~ 8 e s d e somunicac%o. A r o t i n a d e s e r v i ~ otem como
funeão e ~ e c u t a ra s a ~ õ e sd e s e j a d a s p e l o p r o c e s s o q u e a c a b a
d e ser d e s b l o q u e a d a , c a s o e l e o t e n h a s i d o p o r e w p i r a ~ ã od a
tempo p r e v i s t a . C a s o n a s se d e s e j e tomar n e n h u m a a-%o no
momento da l i b e r a ~ ã o do processo, mas s z m algum tempo
depois, a r o t i n a d e s e r v i ~ op o d e s e r u s a d a p a r a i n d i c a r em
uma variável do p r o c e s s o que este f o i liberado por um
e v e n t o e n ã o p o r tempo. %e, t o d a v i a , n ã o f o r i n t e r e s s a n t e
d i f e r e n c i a r a forma p e l a qual a p r o c e s s a f o i desbloqueado,
basta que a e n d e r e ~ op a s s a d o como s e n d o o d a rotina de
s i e r v i ~ os e j a n u l o .

Quando 6 chamada, a primitiva de bloqueio


v e r i f i c a se CJ processo existe. Caso não e x i s t a , r e t o r n a o
valor nulo. Se e x i s t i r , retornará o valor da identificader
d o processo.

Se a identificadar da processo for valido,


e n t ã o ser%e f e t u a d a a s e g u i n t e ã e q i i z n s i a :
. se o processa já estiver bloqueado ale será
desbloqueado;
. o p r o c e s s o será r e t i r a d o d a b i s t a d o s P r e n t e s j
. c a s o h a j a e l i u s u l a d e tempo:
. g u a r d a o e n d e r e q o d a r o t i n a d e s e r v i ç o d o BPj
. põe o p r s c e ~ ~n ao L i s t a d o s B l o q u e a d o s (ver
item 112.2.3);
. e s c a l o n a , se est i v e r n o e s t a d a r o d a n d o .

Se, n a chamada d a p r i m i t i v a , o p r o c e s s o que


se deseja b l o q u e a r já e s t i v e r nesse estado, este seri
desbloqueado para, em s e g u i d a , ser b l o q u e a d o novamente.
Justiqica-se essa politica a partir do f a t o de que a
Gltima chamada çorrespsnde i n e c e s s i d a d e mais atual do
sistema. Portanto, o novo estado do sistema devera
c o r r e s p o n d e r a essa e x p e c t a t i v a . E s t e é o caso quando, p o r
e x e m p l e , um p r o c e s s o q u e se d e s e j a m a t a r e s t á b l o q u e a d o p o r
tempo. Caso ele não passe a ser bloqueado por tempo
i n f i n i t o , o u d e ou'cra forma, n ã o seja r e t i r a d o d a l i s t a d a s
bloqueadas, quando o tempo de bloqueio expirar, será
aeianada uma r o t i n a d e s e r v i 6 0 e m a n i p u l a d o um 8% s u e não
mais e~istem. Isso ter& r e s u l t a d o s imprevisiveia mas
possivelmente d e c o n s e q U Z n c i a s d a n o s a s a s s i s t e m a como um
tado.

A p r i m i t i v a que l i b e r a , ou desbloqueia, um
p r o c e s s o c u j o i d e n t i f i c a d e r l h e f o i p a s s a d o como p a r â m e t r o ,
retoma esse mesmo i d e n t i f i c a d o r c a s o o processo esteja
bloqueada. C a s o c o n t r á r i o , o v a l o r r e t s r n a d o ser& n u l o .

O p r o c e d i m e n t s d e l i b e r a q g o d e um p r o c e s s a
s seguinte:
. ãe h o u v e r c l á u s u l a d e t e m p o , o u s e j a , a DP @stiver
na L i s t a dos Bloqueados, o p r o c e s s o ser5 removido
dessa listaj
. s BP s e r á i n s e r i d o n a L i s t a d o s P r o n t o s e
. s e r á e f e t u a d o CI e s c a l s n a m e n t o s e o p r o c e s s o estiver
"rodando".
. 6 . O b t e n ~ ã oda P r i o r i d a d e :

Essa p r i m i t i v a busca o DP do p r e c e a s a CUJO

identificador é passado como parâmetro e r e t o r n a a


prioridade a l i assinalada. Caso o BP não s e j a e n c o n t r a d o ,
s e r á r e t o r n a d a uma p r i o r i d a d e n u l a .

. 7 . A l t e r a ~ ã oda P r i o r i d a d e :

Para a l t e r a r a p r i o r i d a d e de um processo,
caso ele exista, a p r i m i t i v a de a l t e r a ~ ã o bloqueia s
processe, caso já não e s t e j a , e a l t e r a o campo de s e u DP
relativa à prioridade. Antes de t e r m i n a r sua execu~ão,
libera s processa, c a s o e s t e nzo e s t i v e s s e bloqueado na
e n t r a d a da p r i m i t i v a .

Bloquear e d e s b l o q u e a r a p r o c e s s e é a Sarma
mais simples d e mudar a p o á i $ ã o do p r o c e s s o na L i s t a dos
Prantos. Convem lembrar que a b i s t a d o s P r o n t o s é ordenada
por ordem c r e s c e n t e de v a l o r e s p r i o r i d a d e s .

E s t a p r i m i t i v a r e c e b e como p a r â m e t r o o v a l o r
do identificador do p r o c e s s o que se deseja alterar a
prioridade. Como v a l o r de r e t o r n o , devolve a p r i o r i d a d e
original do p r o c e s s o , caso e l e e x i s t a . Caso contrário,
devalve a v a l o r nulo.

tenrgão da Fat i a d e Tempo:

Essa p r i m i t i v a busca a BP da p r o c e s s o cujo


i d e n t i f i c a d o r 6 passado como p a r % m e t r o e r e t o r n a o v a l o r d a
fatia d e tempo a s s i n a l a d a em s e u D P . Casa o BP não seja
e n c o n t r a d o , s e r á r e t e r n a d o um v a l o r n u l a .
111.5.9.A l t e r a c ã o da F a t i a d e Tempo:

Uma ver de posse do identificader do


processo que se deseja a l t e r a r a fatia, passado como
par%metro, seu c o r r e s p o n d e n t e BP é p r o c u r a d a na L i s t a de
BPs. Caso não s e j a e n c o n t r a d o , 6 reternado o valor nulo.
Caso contrário, s e r á retornado, ao fim da primitiva, B

v a l o r o r i g i n a l da f a t i a de tempo do p r o c e s s o .

Cas~o p r o c e s s o que s e está alterando o


tamanho da f a t i a d e tempo e s t e j a "rodando", s e r á a p l i c a d o o
seguinte algoritmo. Se o nova valer, passada como
par%netro, for menor do que o tempo j á transcorrida da
fatia original, o processo s e r i escalonado. Caso seja
maior ou i g u a l , a v a r i á v e l que c o n t a o número de p u l s o s do
r e l ó g i a que f a l t a m p a r a promover um e s c a l o n a m e n t a p o r tempo
s e r á a t u a l i z a d a p e l o novo v a l o r da C a t i a .

e l a m e n t o da Fatia

Esta primitiva faz com que não mais se


d e c r e m e n t e , a c a d a p u l s o de r e l ó g i o , a v a r i i v e l que c o n t a o
número d e p u l s o s do r e l ó g i o que restam p a r a s e r e f e t u a d o um
e s e a l o n a m e n t s por tempo. B e f e i t o d e s s e procedimento & a
"congelamento" da f a t i a de kempa do p r o c e s s o " r o d a n d o " .

. 1 1 . Descon a F a t i a de Tempo:

Esta primitiva cancela o e f e i t o d a a n t e r i o r

Essa r o t i n a h a b i l i t a a campo da mascara de


c o n t r o l e d e p e r m i s s ã o de g e r a e ã s de e x e e c ã a . A excepão que
s e v a i h a b i l i t a r 6 p a s s a d a como p a r â m a t r o p a r a a r o t i n a .
Essa r o t i n a d e s a b i l i t a o campo da miiscara d e
c o n t r o l e d e p e r m i s s ã o de g e r a c ã o de e x c e ~ ~ o A. e x c e ~ z oque
s e v a i h a b i l i t a r ti passada como p a r z m e t r o p a r a a r o t i n a .

~ t r a v é sda chamada d e s s a p r i m i t i v a , o n ú c l e o
fica autorizado a efetuar um novo escalonamento. Ela
cancela o e-Feits da primitiva que desabilita e
escalonamento ( v e r 111.5.15).

Se a q a t i a de tempo de p r o c e s s o c o r r e n t e y6
t i v e r s e esgotado ( i s t o e, s e u v a l o r chegada a z e r o ) , enkão
e processo ser& e s c a l o n a d o na interrupeão seguinte da
relógio. Caso c o n t r á r i o , o e f e i t o l i q u i d e observado s e r &
como se não tivesse ocorrido uma desabilita~ão de
essalonamento.

i l i t a ~ ã ode sealanamento:

E s t a p r i m i t i v a l i g a um " f l a g " que é testado


pela retina que promove o e s c a l o n a m e n t a (ver 111.5.26).
Quando ligado, este " f l a g " impede q u e o núcleo execute
qual quer e s c a l o n a m e n t o .

Burante este periodo de desabil i t a ~ ã a ,


contudo, a f a t i a de tempo do p r o c e s s o c o n t i n u a a s e r
decrementada, ao c o n t r á r i o da que o c o r r e quando é chamada a
primikiva de "congelamento d a f a t i a de tempo" (ver
II%.%.L@). Porém, quando s u a f a t i a chega a z e r o , permanece
som e s s e v a l o r .
sealonament o B Processo Corrente:

Esta primitiva é a responsável pela eleicão


do p r o c e s s o que i r á ocupar a UCP quando o n ú c l e o terminar
s u a execueão.

Seu a l g o r i t m o c o n s i s t e na r o t a - % o da lista
c i r c u l a r a s s o c i a d a ao p r i m e i r o n8 da L i s t a dos P r o n t o s , se
este Cor o p r o c e s ~ oque e s t i v e r ocupando a UCP. Além
d i s s o , 6 f e i t a a a k u a l i z a ~ ã od a s v a r i á v e i s que indicam ( 9 )
o DP c o r r e n t e , ou s e d a , o BP de p r o c e s s o no e s t a d o
"rodando" e ( 2 ) q u a n t a s p u l s o s d e r e l b g i o f a l t a m p a r a
t e r m i n a r a f a t i a d e tempo do p r o c e s s o c o r r e n t e .

Informa quantas processos existem na


estacão, quantss estão "prantos" e quantas estão
"bloqueadoá" .
I V . 1 . Intredu-%o:

"Processos concorrentes" sae aqueles que


existem em um mesmo momento. Tais processes pedem ser
totalmente independentes ou interagir e n t r-e si. No
primeiro caso, valem-se a p e n a s da c a p a c i d a d e de sistema
operacional em gerenciar os recursos da máquina, em
especial a UCP. Porém, quando cooperam e n t r e s i , o Cazem
através de uma c a m u n i c a ~ ã a . Ocorre que o s p r o c e s s o s sao
assíneronos e n t r e s i , isto e, o f l u x o de e x e c u ~ a ode cada
um & i n d e p e n d e n t e dos demais. Na hora de çe comunicar som
u u t r o , um p r o c e s s o desconhece em que ponto e s s e o u t r o e s t á .
E , p o i s , n e c e s s & r i o que h a j a uma forma d e s e s i n c r o n i z a r e m .
Desse modo, além do g e r e n e i a m e n t o dos r e c u r s o s f í s i c o s e
lógicos, s s i s t e m a o p e r a c i o n a l deve p r o v e r mecanismos de
comunisacso e s i n c r o n i z a ~ Z oe n t r e p r o c e s s o s .

A comunica~ãa e a sincronizasão entre


processos pede ser obtida atraves de varias tecnicas
b a s t a n t e c o n h e c i d a s (H0L.T & o u t r o s , 1978; B E T T E L , 1984;
MENDES, 1 8 8 4 ; SEGGRE, 1987; K E R N E R 8 MENDES, 1988).

Existe um e l e m e n t o d e c i s i v o na e s c o l h a do
mecanismo de comunica~iio e sincronira~ãs: a membria.
A r q u i t e t u r a s manoprocessadas ou d e p r o c e s s a d o r e s f o r t e m e n t e
acoplados ( i s t o é, q u e compart ilham um mesmo barramento
interno) dispBcm de uma mem8ri.a comum referenciada por
todas as processadores. Sistemas aperacionais rnultitarefa
que são executados sobre essa arquitetura podem assumir que
& possável os processos usarem áreas comuns de membria para
se comunicar e sincronizar. Par outro lado, arquit eturas
baseadas em processadores fracamente acoplados (isto é , que
não compartilham um mesmo barramente interno) não dispõem
dessa carasterástica.

Um sistema distribuído é composto por vsrias


e s t a ~ 8 e s . Nessas estacaes, independentemente de serem
monoprocessadas ou multiprocessadas, existe um ambiente
multitarefa. Dessa forma, & posãivel que os processos de
uma mesma máquina compartilhem áreas comuns de memória.
Ocorre, porém, que não se pode generalizar essa propriedade
para todas 0 5 processas do sistema distribuído, uma vez que
não existe uma afea de memória que s e j a comum a todos eles.

Pode-se, então, distingllir duas classes de


mecanismos de comunicaeZo e sincroniza~ãoentre processos:
os baseados em membria compartilhada e os baseados em troca
de mensagens. No primeiro, a men9ayem & escrita pela
processe produtor em uma determinada área de memória.
(Chama-se de " er" aquele que gera uma
mensagem.) "ta área é , então, lida, no momento oportuno,
pelo processo consumidor. (Chama-se de "processo
consumidor" àquele que utiliza mensagens geradas por
processos produtores.) J5 nos mecanismos baseadas em troca
de mensagens, os dados a serem enviados se f?ncontr-am em uma
área de memória do processo remetente, Estes dados s % o
então espiados para uma área do processo destinatário. Em
algumas s i t u a ~ n e spode ainda ser necessário s emprega de
"buffers" para o armazenamenta temporzirio das mensagens,

Aliteratura ilustra vários mecanismos de


memória compart ilhada, como regiões críticas, regizes
criticas condicionais, semáforos, monitores, ekç. Esses
mecanismos, contudo, não se aplicam a sistemas
distribuidos, como já visto anteriormente. Já sue o
PORTOS-TF segue um modelo distribuido, mesmo quando
implementada em uma Única estacSo, a5 a t e n ~ ã e sdesse texto
estarão voltadas para mecanismos de comun icaeão e
sincroniraqão entre processos para sistemas com memória
distribuida.

Em sistemas com membria distribuida, um dado


compartilhado não pode ser obtido atraves da leitura direta
da posi-ão onde se encontra. Ao invés disso, deve ser
transportado, via um subsistema de c o m u n i c a ~ ~ a ,atk uma
área local onde possa ser endere~ada por o p e r a ~ õ e s de
leitura e escrita do processo,

A questão do endere~amento em sistemas


distribuídoá é , tambkm, de grande impertSncia. Um dado
compartilhado não p o d e mais s e r b referenciade par seu
a n d e r e ~ ode memaria. Ao contrário, deve-se identificar um
e n d e r e ~ oabstrato de onde se passa obter este dado.

ndere~amentsem Sistemas Distribuidos:

Como j5 mencionado anteriormente, em


sistemas dist ribuádos k a uk i1 i n a ~ ã o de
necessária
enderesos abst ratos que representem o5 elementos do sistema
com os quais se deseja comunicar. Esse endere~amentopode
ser implícito ou explícito. O endere~amento eMpl%cito
pode, ainda, ser direto ou indireto.

Em sistemas com enderesamento implicito


como, por exemplo, dutos (ou no inglss, "pipes"), a
a s s o c i a ~ ã o entre os processos que irão se comunicar pode
ser estatica ou din3mica. No primeiro caso, ela é
estabelecida na c r i a ~ ã odos processos e s ó se desfaz quando
eles terminam sua e x e c u ~ a o . Essa 6 uma situacão que causa
bastante limitaeões ao sistema, uma vez que mantém um elo
entre os processos, mesmo em s i t u a ~ g e sem que eles j i não
estao mais se comunicando. A associacão dinâmica entr~
processos, isto 6 , aquela que é mantida apenas no periodo
em que estso interagindo, tem um caráter menos limitante.
Segundo ÇEGRE (1987'), "esta s o l u ~ ã oé apropriada para
aplicaeões nas quais encontra-se um processo trocando
mensagens longas com vários outros processos, su uma
seqllênsia não interrompida de mensagens curtas, som um
mesmo pracesso".

Na endere&amento explícito, os processas se


comunicam com os demais atravks de referências a nomes ou
endereces. B enderecamento explícito pode, ainda, ser
direto ou indireto. No endereqamenta direto, os processos
com que se deseja comunicar são identificados atravas de
nomes ou e n d e r e ~ o sglobais que lhe% são atribuidos. No
endereqaments indireto, por outro lado, um processo nza
associa um nome ou e n d e r e ~ oglobal ao sistema distribuído,
mas sim um atributo local. Esses atributos locais, por sua
vez, são ligados adequadamente, estabelecendo, assim, um
elo de comunicacão entre os procestãos emissor e receptor de
mensagens.

A ident i f i c a ~ ã oexpl ícita-indireta permite a


maior independgncia entre os mbdulos de um sistema
distribuido. Isso facilita sua reconfigura~ãoem situacoes
de falha, coma, por exemplo, no caso da substituiqão de um
modo faltaso por outro de reserva.

. ê . Mecanismos para istem-5 som Memoria Diskribuida:

Alguna mecanismos de eomunica~So e


sincronira~ãoentre processos são:
. troca de mensagens;
. "rendez-vous" e
. chamada remota de ~rocedimentos.

A seguir serão estudados esses mecanismos.


O s mecanismos d e t r o c a d e mensagens baseiam-
se em duas primitivas básicas: "envia" @ "recebe". A
primeira p e g a uma m e n s a g e m e x i s t e n t e em um " b u f f e r " local
do processo emissor e a "envia" para e processo
destinatário, atravks do subsistema de camunicaeãa. 6)

p r o c e s s e d e s t i n a t á r i o , p o r s u a vez, deve chamar a p r i m i t i v a


" r e c e b e " p a r a q u e a mensagem e n v i a d a p a s s a ser r e c e b i d a em
um " b u f f e r " . A f i g u r a ( b V . 1 ) i l u s t r a essa s i t u a q ã e .

Figura E V . l : E s q u e m a d e um m e c a n i s m o d e t r o c a d e m e n s a g e n s

Essas primitivas podem ser d e d o i s tipos:


b l o q u e a n t e s e riso-blequeantes. Assim s e n d a , pode-se t e r os
seguintes t ipes :

. envia não-blequeante;
. envia bloqueante;
. recebe nao-bloqueante e
. recebe bloqueante.

Uma primitiva bloqueante faz com que o


p r o c e s s o q u e a c h a m o u f i q u e " b l o q u e a d o " a @ &q u e a t r a n s a e ã o
seja completada. Entende-se por "transaqão" a seqUencia
completa de uma t r o c a d e mensagens, ou seja, desde a
chamada da p r i m i t i v a "envia" a t é o término da execu$ãe da
primit i v a "recebe". (Em a l g u n s c a s e s , a p r i m i t i v a " e n v i a -
b l o q u e a n t e " f i c a a g u a r d a n d o p o r uma r e s p o s t a , que é e n v i a d a
par uma primitiva "responde", chamada pelo processo
destinatirio.) nessa f o r m a , a p r i m i t i v a " e n v i a b l a q u e a n t e "
bloqueia o p r o c e s s o q u e a chamou a t k q u e a mensagem tenha
s i d o r e c e b i d a pela p r o c e s s o d e s t i n a t i i r i o (ou até que tenha
recebido s u a resposta). Be f o r m a a n á l o g a , uma p r i m i t i v a
"recebe bloqueante" f a z com q u e o p r e e e s s o q u e a chamou
f i q u e "bloqueado" a t & q u e uma m e n s a g e m s e j a r e c e b i d a .

No caso da utilizaqão de primitivas nzo-


kloqueantes, os p r ~ c e s s o çq u e a s e v o c a r a m continuam sua
execu6ão logo a p b s a chamada, não esperando, assim, a
conclusão da t r a n s a ~ ã a .

S e g u n d o K I W N E R 2% MENDES (2988), t r a n s a 6 B e s
que u t blizam primitivas blaqueantes s%o chamadas
"totalmente síncronas". T r a n s a c 8 e s q u e u t i l izam p r i m i t i v a s
nso-blsqueantes são chamadas "totalmente assineronas".
Aquelas que u t i l i z a m uma p r i m i t i v a d e um t i p o e o u t r a de
o u t r o são c h a m a d a s d e " s e m i - s i n c r o n a ã " .

As primitivas de troca de mensagens


a p r e s e n t a m , d e um modo g e r a l , a s s e g u i n t e s p a r â m e t r o s :
. identificador- dos processos (remetente e
destinatAria) i
. e n d e r e q o d a "buffer-" l o c a l que contem o u conterá a
mensagem e
. tamanho d a mensagem.

0 identificador de processo destinatário


pode não e x i s t i r em a l g u m a s i m p l e m e n t a ~ õ e s d a primitiva
"recebe", p o i s p o d e ser o b t i d a a u t o m a t i c a m e n t e pela sistema
operacional. O mesma pade acontecer em relac" ao
parametro d e i d e n t i f i c a d o r d o processo r e m e t e n t e q u a n d o se
f a l a da primitiva "envia".

8 ident ifieador da processo destinatário, na


primitiva "envia" pode e n d e r e q a r um ou mais processos
( f i g u r a IV.2). O e n d e r e q a m e n t a d e mais d e um p r o c e s s o p o d e
ser U t i l , o u mesmo n e c e s s á r i o , em s i t u a ~ õ e so n d e uma mesma
mensagem deve ser encaminhada a diversas destinatários.
P o d e ser e n d e r e e a d o um rupa de processos ("multlcast") ou
t o d o s os p r o c e s s o s d o sistema ( d i f u s ã o o u " b r o a d c a ã t " ) .

a PV.2 : Esquema d e d i f u s ã o d e mensagens

B identificador do processo remetente, na


primitiva "recebe", pode ser não e s p e c í f i c o , i s t o 4, p o d e
não endere-ar um p r o c e s s o em p a r t i c u l a r . Esse c a m p o p o d e
ser preenchido com um v a l o r q u e indique @star a p t o a
r e c e b e r mensagens de qualquer p r o c e s s o ( f i g u r a L V . 3 ) . Essa
s i t u a ~ z o% m u i t o comum q u a n d o B processo receptor não sabe,
de ante-mãa, qual p r o c e s s o l h e i r á e n v i a r uma mensagem.
Isso ocorre na maioria dos processos servidores de
recursos. Qualquer processo do sistema, a principio,
poderá enviar-lhe uma m e n s a g e m s o l i c i t a n d o um ç e r v i ~ o p o r
ele prestado, sendo, pois, impossível, ou mesmo
indesejável, p r e c i s a r qual s e r á o remetente.
Figura I V . 3 : Esquema d e r e c u p e r a c ã o d e mensagem
d e qual quer remetente

Quando um processo chama a primitiva


"recebe", ele d e v e i n f o r m a r o t a m a n h o máximo d o "buffer"
q u e e l e r e s e r v o u para a mensagem. Isso e v i t a q u e s sistema
o p e r a c i o n a l c o p i e para esse " b u f f e r " , cujo endereço i n i c i a l
tambdm é parâmetro d a p r i m i t i v a , uma m e n s a e m d e tamanho
superior ao s e u , que poderia provocar a invasão d e áreas
reservadas a outras variaveis. No caso da primitiva
"envia" o parâmetro d e tamanho d o "bu-Ffer" serve para
informar ao sistema o p e r a c i o n a l q u a l a t a m a n h o total da
mensagem a ser e n v i a d a . E s s e t a m a n h o s e r v e para o sistema
operacional alocar seus "buffers" intermediários, bem c o m o
i n f o r m a r s e u tamanho à s p r i m i t i v a s d e e n v i o pela s u b s i s t e m a
de camunicacão, na e v e n t u a l i d a d e d e ter que e n v i á - l a para
uma o u t r a e s t a c z o n o c a s o d e um s i s t e m a d i ã t r i b u i d s .

Nas primitivas bloqueantes pode, ainda,


e x i s t i r um a u t r a p a r â m e t r a q u e & o " t e m p o d e e s p e r a " . Esse
parSmetro indica qual o a processo
tempo máximo que
chamador d a p r i m i t i v a f i c a r á bloqueado aguardando o f i m d a
t ransacãca . Caso esta se complete antes desse tempo
expirar, a p r o c e s s e ser& d e s b l o q u e a d o e i n f o r m a d a d e ãuã
conclusão. Se, a o c o n t r á r i o , a tempo s e e s g o t a r a n t e s d a
t r a n s a ~ ã os e r t e r m i n a d a , o p r o c e s s a s e r á d e s b l o q u e a d o , mas
i n f o r m a d o q u e o tempo limite e x p i r o u .

E comum que r o t i n a s que apresentam esse


parâmetra t e n h a m um v a l o r e s p e c i a l q u e i n d i q u e q u e o tempo
de espera 6 i n f i n i t o , ou seja, que o p r o c e s s o deve f i c a r
bloqueado a que a transacão seja completada, não
importando q u a n t o tempo l e v a r á . P r o c e s s o s s e r v i d o r e s , usam
frequentemente esse valor "infinito", enquanto que
p r o c e s s o s c l i e n t e s se valem, normalmente, de cl&usulas de
t empo .

Existe, ainda, a possibilidade de se


transformar uma p r i m i t i v a b l o q u e a n t e em n ã o b l a q u e a n t e as
se escolher um v a l o r que indique tempo d e espera zero,
d e s d e q u e esse v a l o r s e j a p e r m i t i d o p e l a i m p l e m e n t a ~ ã o .

.?i i n t e r e s s a n t e o b s e r v a r que t o d o s os demais


mecaniãmss d e c o m u n i c a ~ ã oe s i n c r o n i z a ~ ã ee n t r e processes
se b a s e i a m , d e alguma Porma, n a troca d e mensagens, dando-
lhe, contudo, u m a F o r m a mais c o n v e n i e n t e , d e a c o r d o com a
a p l i e a c s a a q u e se d e s t i n a .

"Wendez-vaus" ( q u e q u e r d i z e r " @ n c a n t r o " , em


franc%s) 6 um mecanismo sinerono de comunica~Ãa e
sincronizacão entre ~ r o c e ~ s o s . O "rendez-vous" se
c a r a c t e r i z a p e l o f a t o d e q u e o s p r o c e s s o s q u e se comunicam
sincronizam-se em um p o n t a d e " e n c o n t r a " . Caso o processo
receptor d a mensagem n ã o se e n c o n t r e n o p o n t o d e "render-
vous", q u a n d o d a emiss%o d a m e n s a g e m , o p r o c e s s o r e m e t e n t e
ficará bloqueado ate que o r e c e p t o r a t i n j a o ponto de
encontro. O i n v e r s a tambcm verdadeiro. S e o processo
receptor atingir o ponto de "renden-evous" e nenhuma
mensagem l h e e s t i v e r d i s p o n á v e l , fiear&, então, bloqueada
a t é q u e um p r o c e s s o l h e e n v i e uma m e n s a g e m

Uma v a r i a ~ z od e s s a f o r m a d e " r e n d e z - v o u s " 6


o "rendez-vsus" estendido. No " r e n d e z - v o u s " simples, uma
vez e f e t u a d a a s i n c r o n i z a ~ ~ o ,o s processoç comunicantes
seguem s e u s Çluxos d e forma i n d e p e n d e n t e . No " r e n d e % - v a u s "
estendida, e s t a b e l e c i d a uma t r a n s a c g o d o t i p o "pedido-
resposta" ( " r e q u e s t - r e p l y " ) . E s s e t i p o d e t r a n ç a ~ ã ocomeea
com uma mensagem da "pedido" e 6 concluida com uma
mensagem, no sentido inverso, do tipo "resposta". A
sincronizaeão e n t r e o s d o i s p r o c e s s o s se d i d a mesma f o r m a
que n o "rendez-vous" simples. A d i f e r e n c a e s t á n o Cato d e
q u e o p r o c e s s o emissor d a m e n s a g e m ( o u d o p e d i d o ) p e r m a n e c e
bloqueado, e n q u a n t o o p r o c e s s o r e c e p t o r e x e c u t a um trecho
de códigg, até que l h e e s t e l h e a n v i e uma mensagem de
respoãta ao p e d i d a . A partir desse ponto, os processos
retomam e x e c u - g e s independentes.

Ada 6 uma linguagem de programa~ao


cencorrente que u t i l i z a o "render-vaus" estendido.

e Procedimentos:

A c h a m a d a remota d e p r o c e d i m e n t o ç é outra
forma d e e s m u n i c a ~ a os i n c r o n a e n t r e p r o c e s s a s e m a m b i e n t e s
distribuídos. Em uma chamada tradicional de um
procedimento, f l u x o d e e x e c u ~ g od e p r o g r a m a & desviado
p a r a a s u b r o t i n a e, ao f i n a l d e s t a , retornado à instrugão
seguinte a d a c h a m a d a com v a l o r e s d e retorno. B mesmo
o c o r r e em uma c h a m a d a remota d e p r o c e d i m e n t o . A diferenca
entre essas duas formas é que, no caso de uma chamada
r e m o t a , um c a n a l é u t i l i z a d o p a r a a p a s s a g e m d o s p a r S m e t r o s
de entrada e de saída. S e g u n d o MENNDEÇ ( 1 9 8 4 ) , "o canal
caracteriza o termo r e m o t a " . E s s e c a n a l é, no caso de
sistemas d i % t r i b u í d o s , o s u b s i s t e m a d e c o m u n i c a e ã o .

De a c o r d o som M I W M E R & MENDES (1988), " 13

processo ckamader deverá ficar bloqueado atk que o


procedimento chamado t e r m i n e " . No c a s o d o p r o c e d i m e n t o s e r
r e e n t r a n t e o u n ã o e s t a r s e n d o e x e r u t a d o , ser5 i m e d i a t a m e n t e
acionado. Caso nZo seja r e e n t r a n t e e já esteja sendo
executado, e n t ã o s ó seri p o s t o em e ~ e c u c ã e , p o r c a u s a da
nova chamada, Ioga assim que terminar sua execu~ão
corrente.
i n t e r e s s a n t e o b s e r v a r que a mecanismo d@
chamada remota de procedimento 6 implementado a n i v e l de
linguagem de p r o rama, a p o i a d o em p r i m i t i v a s de t r o c a de
mensagens implement a d a s p e l o s i s t @ma o p e r a c i o n a 1 . Este
fato s e deve, basicamente, A s c a r a c t e r á s t i c a s de cada um
desses náveis: linguagem de programa$ão e sistema
operacional. Enquanto um s i s t e m a o p e r a c i o n a l deve s e r o
mais versátil po5sive1, p o i s s o b r e e l e podem s e r usadas
v á r i a s linguagens d i f e r e n t e s , uma linguagem de p r o g r a m a ~ a o
concorrente deve se a p r e s e n t a r da forma mais conveniente
possível p a r a o u ~ u 1 r i o , com e s t r u t u r a s a s mais próximas
d a q u e l a s a que e l e e s t á acostumado. A t r o c a de mensagens é
o mecanismo maáç f l e x í v e l de t o d o s , embora s e j a também o
mais t r a b a l h o s o . Já a chamada remota de procedimentos 4 a
mais n a t u r a l p a r a a q u e l e s q u e e s t ã o acostumadas a t r a b a l h a r
com linguagens procedimentais (ou seja, baseadas em
procedimentos). E s s e mecanismo, contudo, impõe algumas
restrieões ao programador. Dai porque a preferiiincia p e l a
troca de mensagens a n í v e l de s i s t e m a operacional,
d e i ~ a n d o - s e a chamada remota de procedimento p a r a o n í v e l
de linguagem de p r o g r a m a ~ ã o , quando achado c o n v e n i e n t e .

KV.2.3. P o r t o s :

Csmo c i t a d o em SEGRE (1987), a c o n c e i t o de


portos (ou portas, como preferem alguns autores) foi
introduzido par Balzer e por Walden como forma de
identificacão i n d i r e t a d u r a n t e a t r o c a de mensagens entre
processos. A comunicasao e s i n c r e n i z a ~ ã oe n t r e procesaoç
baseada em p o r t o s não é exatamente uma t k s n à c a diferente
das demais, mas s i m uma forma s e t r o c a de mensagens com
e n d e r e ~ a m e n t oi n d i r e t o .

8 termo " p o r t o " vem da i n g l z s " p e r t " . Dado


a s u a s c a r a c t e r í s t i c a s , como s e & v i s t o a d i a n t e n e s s e i t e m ,
alguns autores, como, por exemplo, ÇEGAE ( L 9 7 ) ) adotaram
em p o r t u g u e s o nome " p a r t a " aa i n v k s de "porto". Nesse
trabalho, c o n t u d o , s e r á empregado o termo " p o r t o " , como em
KLRNER & MENDES ( 1 9 8 8 ) .

Na cemunicacão e ãincronizac%o entre


p r o c e s s o s b a s e a d o s em p o r t o s , o s p r o c e s s o s comunicantes não
s e e n d e r e ~ a md i r e t a m e n t e . Quando um p r o c e s s o d e s e ~ ae n v i a r
uma mensagem, e l e a e s c r e v e em um p o r t o de s a i d a . Quando,
ao cantr&rio, quer ler, vai h u s c i - l a em um porto de
entrada. Um processo sb conhece os portos a ele
pertencentes. E l e i g n o r a o s que s ã o d o s o u t r o s p r o c e s s o s .
Portanto, sua implementacão 6 independente dos demais.
Esse t i p o de e n d e r e ~ a m e n t oi n d i r e t o tem a grande vantagem
de aumentar a modularidade do sistema dist ribuído
facilitando, assim, seus procedimentos de c o n f i g u r a c ã o e
reeanSigurac%o.

Como d i s p o s t o em K R B M E R X MAGEE (1985), é


amplamente a c e i t o que, no p r o j e t o de um grande s i s t e m a de
seftware, deve-se decompor o s i s t e m a em módulos que possam
s e r programados, eemp i l a d o s e t e s t ados separadament e . Esse
procedimento facilita e desenvolvimento do saftware par
lidar com programas menos complexos. B s i s t e m a como um
t o d o é, e n t ã o , composto de uma c o n f i g u r a ~ ã sd e s s e s módulos
de s o f t w a r e . E s s e s d o i s n í v e i s de c o n s t r u q g o de um s i s t e m a
de s o f t w a r e , que c l a r a m e n t e s e d i s t i n g í l e m , szo conhecidos
na literatura como " p r o g r a m a ~ ã oem pequena escala" (ou
"programming-in-the-small") e " p r e g r a m a ~ ã oem l a r g a e s c a l a "
(ou "programming-in-the-large") .

Uma vez que, n e s s e t i p o de c o r n u n i c a ~ ã s o r a


diçcutido, n3o há r e f e r @ n c à a s a e l e m e n t o s do escopo de
outros processas, pode-se v e r i f i c a r que a p r o g r a m a ~ % o em
pequena e s c a l a 6 e n e q U i v e l .

A pragramaGãa em l a r g a e s c a l a 8 feita por


processos de c u n f i g u r a ~ ã o que ligam p o r t o s de saida a
portos de entrada. A transferência das mensagens de um
porto de saida para um de entrada & feita pela sistema
operae ional .

Be acordo com ÇEGRE (1987), partos podem ser


considerados tipos abstratos de dados capares de ser
manipulados par um conjunta especifico de funqnes. Segundo
KIRNER & MENDES (19 8 ) , um processo pode efetuar as
seguintes o p @ r a ~ õ e s sobre um porto :
. cria~ãoi
. e1 iminaeãoi
. conexão e
. deconexãa.

Um processo, para se comunicar com o9


demais, d e v e , em primeiro lugar, criar os partos que julgar
necessArioa para essas t r a n s a ~ C e s . Esses portos, que são
definidos pelos processos criadores, pedem ser globais ou
Iacaiia.

Nas prapostas de Ç I L B E R S C H A T Z (18811, L L S K B V


(1979) e M A 0 & YEH (1988), as portas s ã o entidades globais.
Na comunica~ãaentre os processos, eles se referenciam a um
mesmo porta. Esse tipo de Emplementa~ão, contudo,
eompramet e a modularidade e, eenseqUentement e , a
potencialidade de reconfiguraeZo dinâmica do sistema.

Posições mais atuais, como as de REILI


(1988), JOÇEPH <19f31>,RUí366ERB €4 BREÇSAN (1982), KRAMER &
autroã (19831 e FANT CHI & outros (19831, utilizam portos
como elementos locais a cada processo. Dessa $arma, faz-se
necessário a l i g a ~ ã o , ou conexão, entre eles. C possivel,
assim, haver a configuração dinâmica do sistema de
soft ware .

No que eaneerne ao sentida das mensagens, os


portas podem ser classificados como de entrada, de saida ou
bidirecisnais. Enquanto portos bidirecionais (tambkm
chamados de p e r t o s d e d i f u s ã o (KIRNER & MENDES, l.988))
estão ligados a o u t r o s portos também bidirecionsis., os
portos de saida, q u e são o n d e são e s c r i t a s a s mensagens,
ficam ligados a portos de entrada, d e o n d e -%a lidas as
mensagens.

S e g u n d a KLRNER 13 MENDES (1Y88), p e r t o s p o d e m


ser ligados d e a c o r d o com q u a t r o combina~8e- possíveis,
como i l u s t r a a f i g u r a ( E V . 4 ) :
\

. um para um;
. um p a r a v á r i o s ;
. v d r i o s para u m e
v i r i o s para v k r i a s

Figura IV.4 : Tipaã d e portos e possibilidades de ligacão


A conexga "um p a r a um" é equivalente ae
endere-amento direta deum ú n i c o p r o c e s s o na t r o c a de
mensagens s i m p l e s . E a forma mais i m e d i a t a de i n t e r l i g a ç ã o
de portoca.

A conexão "um p a r a v & r i o s " pode a i n d a s e r de


tipo " d i f u s ã o " au "conexao m b l t i p l a " . No p r i m e i r o caso,
t o d o s o s d e s t i n a t á r i o s recebem a mensagem. A d i f u s ã o pode
s e r muito ú t i l na t r a n s m i s s ã o , por exemplo, de um a v i s o que
diga r e s p e i t o a todos a s processos r e l a t i v o s à l i g a c ã o . A
conexão multipla se c a r a c t e r i z a por deixar a mensagem
enviada à disposi-ão de t o d o s oç p o r t a s pertencente% à
ligaqaa a t & que um p r o c e s s o dono de um desses portos a
leia. A p a r t i r d e s s e i n s t a n t e , a mensagem não mais e s t a r á
disponível a o s demais. ssa característica 6 importante
quando se deseda que apenas um dentre as poãsiveis
d e s t i n a t á r i o s responda a um p e d i d a .

A conexão do tipo "vzirios para um"


bastante empregada na comunicaeão entre c1 i e n t e s e
servidor. Nessa forma de I i g a c ã o , um s e r v i d o r não tem como
s a b e r a p r i n c í p i o qual c l i e n t e l h e f a r á o práxime p e d i d o .

Finalmente, a conexão do t i p o " v á r i o s p a r a


virios" pode s e r e n c a r a d a como sendo uma combina~ãs das
l i g a c s e s "um p a r a v i r i o s " e " v á r i o s p a r a um".

Na comunicaeao e sincroniza~ãs entre


p r o c e s s o s baseada em p o r t o s , e x i s t e também a q u e s t ã o do u s a
de "buffers", assim come na t r o c a de mensagens simples.
Como n a q u e l e mesanisma, n e s t e também a s " b u f f e r s " o r i g i n a l
e final das mensagens são definidos pelos processos
r e m e t e n t e e d e s t i n a t i r i e , r e s p e c t bvamente. Na c a s o , porém,
de uma r e c e p ~ g os á n c r o n a com uma transmissão assáncrona,
quando uma mensagem 6 e s c r i t a em uma p o r t a de s a i d a ma5 o
processo destinatário a i n d a não e x e c u t o u a instru~ão de
leitura da c o r r e s p o n d e n t e p o r t a d e e n t r a d a , e s t a deve s e r
armazenada em um " b u f f e r " i n t e r m e d i á r i o de forma a liberar
o " b u f f e r " do p r o c e s s o r e m e t e n t e sem que com i s s o , s e p e r c a
a mensagem e n v i a d a .

Além da c l a s s i f i c a ~ % do
a p o r t o quanto a s e u
sentido, pode-se ainda c l a s s i f i c i - l o quanto ao tipa de
mensagem que por e l e passará e ao tipa de áincronismo
empregado, isto é se a comunicacão ser6 sáncrona ou
assbncrona.

I V . 3 . Cenfi u r a ~ ã oBinâmisa de S i s t e m a s :

Uma vez que o PORTOS-TF & um sistema


operaeional que implementa primitivas de tolerância a
falhas, ele deve p e r m i t i r a r e s o n f i g u r a ~ ã o dinsmica do
sistema come um t o d o . l o n f i g u r ã ~ ã o (ou reconfigura~ão)
diniimica de sistemas é uma á r e a que tem recebido muita
a t e n ~ ã o em pesquisas recentes (MRAM R & MAGEE, 1985j
Ç L O M A N , KRAMEW 8 M A G E E , 1886; Ç E G R E , 1987). Segundo K R A M E R
& Ml'rGEE ( 1 9 5), c o n f i g u r a - ã s d i n s m i c ã de um s i s t e m a é a
h a b i l i d a d e de m o d i f i c a r e a m p l i a r e s s e s i s t e m a e n q u a n t o e l e
e s t & em o p e r a ç ã o .

A m a d i f i c a ~ ã o ou incorpora6ão de alguma
função a um s i s t e m a J% e x i s t e n t e pode s e r muita trabalhosa
quando não i m p e s s i v e l s e e s s a p o s s i b i l i d a d e nso t i v e r s i d o
levada em c o n s i d e r a ~ ã oquando da e l a b o r a ~ ã s d o sistema.
Mais do que s e preocupar com a sonfigura~ao durante o
desenvolvimento do s o f t w ã r e , deve--se p r o j e t a r um sistema
flexável a s u f i c i e n t e p a r a que p o s s a s e r configurada em
tempo de execuç%o. O processa de edição, compila~ãa,
l i g a ~ ã oe c a r g a de t o d o o s i s t e m a , mencionado por K R A M E R &
MAGEE (1985>, pode s e r i n v i á v e l por motivos eson8misos ou
mesmo de seguranGa, como 6 o c a s a de a l g u n s s i s t e m a s de
controle de p r o c e s s a s e s i s t e m a s de c o n t r o l e de navega~ao
(aeronaves, espa$onaves, e t s . ) .
Be acordo com K R A M E R & MAGE
sxstema operaeional deve s e r capaz de a n e x a r e eliminar
rnódulos a o s i s t e m a , g e r e n c i a r s u a s i n t e r l i g a ~ õ e se p e r m i t i r
que esses módulos se comuniquem entre E ainda
si.
desejável que o s i s t e m a o p e r a c i o n a l s e j a c a p a r de promaver
a r e c s n T i g u r a ~ % oem tempo h á b i l sem comprometer a r e s p e s t a
da s i s t e m a como um t o d a sempre que forem d e t e c t a d a s f a l h a s .
Essa r e c o n f i g u r a ~ ã o deve demandar o mánimo possável de
esforço adicional ,f "overhead" ) .

Dentro desse contexto, o e n d e r e ~ a m e not


direto na c o m u n i c a ~ ã oe n t r e p r o c e s s o s "amarra" o sisk@ma
impedindo, a s s i m , s u a r c e s n T i g u r a e ~ odinamita.

lementa-ão de um Mecanismo de Cornuniea~So e


Sincronizacão e n t r e Processos a s e a d o em P o r t o s :

Cl PORTOS-TF implement a primit ivas de


toleriincia a f a l h a s ( v i d e c a p i t u l o VZI). Para a e x e c u ~ ã o
adequada dessas p r i m i t ivas, é Tundamental que o sistema
possa s e r r e e o n f i g u r a d o dinamicamente. Cem o o b j e t i v s de
garantir a modularidade e n t r e o s p r o c e s s o s que i n t e g r a m o
sistema, f o i f e i t a a op-ão do emprego de p e r t o s como forma
de e n d e r e ~ a m e n t o usada n a s t r o c a s de mensagens entre os
prscessos.

íJs p o r t o s d e f i n i d a s p e l e s i s t e m a o p e r a c i s n a l
pede t e r dois sentidos: s e n t i d o de e n t r a d a e sentido de
saida. A principio, um p s r t s pode s e r l i g a d o a vários
outros, desde que e s s e s tenham s e n t i d o c o n t r á r i a ao dele.
Deasa forma um p o r t o de e n t r a d a pode e s t a r l . i s a d s s a v á r i o s
portos de s a i d a e um p s r t ~de s a i d a pode e s t a r ligado a
vsrios portos. Várias p o r t a s de s a í d a l i g a d o s a um de
e n t r a d a 6 uma c s n f i g u r a e ã o c a r a c t e r i s t i c a do t i p o c l i e n t e s -
servidor. A c a n C i g u r a ~ ã oc o n t r á r i a , i s t o &, um p o r t a de
saida ligado a v á r i o s d e e n t r a d a se p r e s t a à difusão de
mensagens. Partos podem tambkm t e r l i g a c 8 e s únicas, ou
s e j a , um p o r t e d e ç a i d a l i g a d o a um p o r t o d e e n t r a d a .

NEo h á , contudo, nenhuma c a r a e t e r á r a ~ ã odo


tipo de conexao f e i t a p e l o p e r t o ( s i m p l e s ou m b l t i p l a ) na
e s t r u t u r a que o d e s c r e v e . 13 t i p o de conex3a d e f i n i d a na
c o n f i g u r a c % o do sistema. Caso se deseje uma conexão
simples, um p o r t e deve s e r l i g a d o a um h n i c o o u t r o e vàce-
versa durante o processo d e csnfiguracão. Caso s e j a
adequada uma conexão m ú l t i p l a , um p o r t o d e v e s e r l i g a d o a
tedos aqueles que forem c o n v e n i e n t e s . A figura (EV.5)
i l u s t r a e s s e s t r e s t i p o s de conexão e n t r e p a r t o a .

Figura I V . 5 : B p ~ õ e sd e l i g a ~ ã ode p o r t o s no PORPQÇ-TF

P e r t o s devem s e r manipulado% p e l o processo


de c o n f i g u r a ç ã o com a e b j e t i v o d e e s t a b e l e c e r a s ligacães
entre os processos. 8 PBRTBS-TF apresenta quatro
prirnit i v a s para s manuseio de portes: cria-porto,
e l irnina-porta, liga-perto e desl iga-porto

A primitiva "cria-porto", como o próprio


nome sugere, cria (ou cadastra) um porto no sistema
operacisnal. Na c r i a ~ ã ode um p o r t o s ã s e s p e c i f i c a d o s e
número do p a r t o , p r o c e s s o a que p e r t e n c e e s e u s e n t i d o de
csrnunica~ão. Para d e s c a d a s t r a r (ou e l i m i n a r ) um porto,
deve-se s e r empregada a p r i m i t i v a "elimina-parto". Essa
primitiva requer, como p a r â m e t r o s , o número do p a r t o e o
p r o c e s s e a que p e r t e n c e . E s s a s duas p r i m i t i v a s devem ser
evocadas na f a s e de c r i a e S o e e l i m i n a ~ ã od o s p r a c e s s o s .

Na f a s e d e s o n f i g u r a ~ ã ai n i c i a l do s i s t e m a ,
ou n a s s i t u a c ã e s de r e c o n f i g u r a ~ ã o , o s p o r t o s devem ser
ligados e desligados. A5 primitivas " l i a-porto" e
a-porta" t&m essas f u n ~ 8 e s . Cada chamada a uma
delas liga ou desliga um par de partos de sentidos
diferentes. São p a r â m e t r o s d e s s a s r o t i n a s o s números das
p o r t o s e o s i d e n t i f i c a d o r e s dos processos a q u e pertencem.

h e s c o l h a do t i p o de s i n c r o n i s m s d a s t r o c a s
de mensagens tambgm não constituem caracteristicas dos
portos. Ao i n v k s d i s s o , uma t r a n s a c ã o 6 s i n c r o n a ou
assíncrona d e a c o r d o com ss p a r ã m e t r o s d a s p r i m i t i v a s de
comunica~%o.

. Primitivas d e C e m u n i c a ~ ã oe S i n c r o n i z a $ % o :

São três as primitivas do sistema


operacianal para a comunica~%oe sincroniza~ão entre
proceçsos: "envia", "recebe" e "responde". Em t o d a s e l a s ,
o processo especifica a número de p o r t o por ande deve
passar a mensagem. 8 t r a n s p o r t e dessas mensagens entre
portos r e s p e i t a a s l i g a c ã e s e s p e c i f i c a d a s na csnfigura~ão
de s i s t e m a .

As primitivas da t i p o " r e c e b e " podem ser


agrupadas de modo a que o p r o c e s s a p o s s a Picar esperando
mensagens que venham por mais de um p o r t o . Para c r i a r e s s a
estrutura foram i n t r o d u z i d a s duas p r i m i t i v a s auxiliares:
" s a l e c " e "fim,r;elec".

A p r i m i t i v a " e n v i a " e s c r e v e em um p o r t o de
saida, c u j o número & p a s s a d a esmo p a r â m e t r o , uma mensagem
que tem s e u e n d e r e q o como um segundo parâmetro d a fun~%o.
O tamanho d e s s a mensagem tambkm se constitui em um
parametro da p r i m i t i v a .

Essa primitiva pede ser síncrona au


assincrona. No c a s o s i n c r o n o , deve s e r i n d i c a d o na chamada
da C u n ~ ã o o e n d e r e ~ oe o tamanho de um " b u f f e r " que ser5
usada p a r a g u a r d a r a r e s p o s t a i mensagem e n v i a d a . No c a s o
d e uma camunica-ão a s s i n c r o n ã , não há e s p e r a por r e s p o s t a .
Con~eqUentemen t e , esses parâmet r o s s ã s nu1 o s . !3 úl t imo
parsmetro d a p r i m i t i v a i n d i c a o t i p o de s i n c r o n i s m a a ser
adotado. Ele mostra o tempo de e s p e r a p e l a resposta da
mensagem e n v i a d a .

Um tempo de e s p e r a i g u a l a z e r o i n d i c a uma
comunicacão assincrona, ou seja, sem resposta. Dessa
forma, a primitiva "envia" tem um comportamento ngo-
bloqueante, isto e, a mensagem é e n v i a d a e e processo
continua seu f l u x o .

Quando uma mensagem é e s c r i t a em um parto,


ela c o p i a d a em t o d o s o s p o r t o s d e e n t r a d a a e l e l i g a d o s .
O procedimento de c b p i a v e r i f i c a , p a r a cada p r o c e s s o dona
de um p o r t o de e n t r a d a l i g a d o , s e e l e e s t á e s p e r a n d o alguma
mensagem. Caço esteja, então a mensagem será copiada
diretamente p a r a o " b u f f e r " do p r o c e s s o . Caso c o n t r á r i o ,
será c o p i a d a p a r a um " b u f f e r " do s i s t e m a operacional sue
ficará ligado a esse porto de entrada. Quando este
p r o c e s s o chamar a p r i m i t i v a " r e c e b e " , v i s t a mais adiante, a
mensagem j á e s t a r á d i s p o n i v e l p a r a s e r l i d a .

Um tempo de e s p e r a d i f e r e n t e de z e r o i n d i c a
uma camunieacão sincrona e, eonsequentemente, som uma
resposta associada. B processo Ticara no estado
"bloqueado" a t e que c h e g u e a r e s p o s t a o u a t é que e x p i r e s e u
tempo d e e s p e r a . Ao s e r d e s b l o q u e a d o , o processa poderá
saber qual das duas s i t u a ~ õ e so c o r r e u pelo código de
r e t o r n o da p r i m i t i v a . Um v a l e r " i n f i n i t o " p a r a o tempo de
espera, cujo c o r r e s p o n d e n t e n u m & r i c o depende da maquina
h o s p e d e i r a d s PQWTBÇ-TF, i n d i c a sue o p r o c e s s o ehamador d a
primitiva "envia" só s e r 6 l i b e r a d o após a recep6So da
resposta. Caso esta nunca chegue, o processa ficará
bloqueado p a r a sempre.

A segunda primitiva de comunica~ão, a


"recebe", lê uma mensagem d e um p o r t o de entrada. Seu
nbmero 6 passado coma p a r S m e t r o e e l a é escrita em um
"buffer" que tem s e u e n d e r e ç a como um segundo p a r â m e t r o da
funcão. B tamanho d e s s a mensagem também %e c o n s t i t u i em um
p a r s m e t r o da p r i m i t i v a .

Essa primit iva, a exemplo da anterior,


também pode ser sínersna ou assincrona. Nesse caso,
contudo, o s i n c r o n i s m o n ã o t e m a v e r com a r e c e p c ã o d e uma
resposta, mas s i m com a r e c e p c ã o da p r b p r i a mensagem. A
selecao do tipo de sincrenismo tambem 6 feito pelo
par2mett-a " t e m p o de e s p e r a " . Um v a l o r n u l o d e s s e p a r â m e t r e
indica que a transacão será assínerona, e n q u a n t o que um
v a l o r d i f e r e n t e de z e r o , sincrona.

A s s i m como n a p r i m i t i v a " e n v i a " , não h i espera no


e uma c o m u n i c a c ã o a s s i n e r e n a . Se j & h o u v e r alguma
mensagem no p o r t o , e l a será copiada no "buffer" passado
c o m e parâmetra e o c o n t r o l e r e t o r n a d o ao processo c h a m a d o r .
Caso n ã o h a j a nenhuma menaagem, o controle do processador
voltari ao p r o c e s s o chamador imediatamente, senda essa
s i t u a ~ a ai n d i c a d a p e l o c b d i g o d e r e t o r n o d a p r i m i t i v a .

Se a c o m u n i c a ~ % o , por o u t r o l a d o , for do
kipo sincrona, o processo chamador ficará no estado
"bloqueado" ate que c h e g u e a l g u m a mensagem ou ata que
expire seu tempo de espera. Ao ser desbloqueado, o
p r o c e s s o p o d e r á s a b e r q u a l d a s d u a s ç i k u a ~ í 3 e so c o r r e u pelo
rbdigo de retorno da primitiva, d e forma análoga a o c a s o d a
"envia". Também a q u i , um v a l o r " i n f i n i t o " p a r a a tempo d e
espera i n d i c a que o p r o c e s s o ehamador d a p r i m i t i v a " r e c e b e "
58 será l i b e r a d o a p h s a r e e e p e ã o d a mensagem. Caso esta
n u n c a c h e g u e , o processo f i c a r ã b l o q u e a d a para s e m p r e .

Um porto de entrada ligado a vários pertos


d e s a í d a p e r m i t e q u e um p r o c e ç s o r e c e b a ( o u ao m e n o s e s t e j a
apto a r e c e b e r ) mensagens d e v&rios processos. Ocorre,
porém, que, n e s s e t i p o d e e s t r u t u r a , as mensagens o r i u n d a s
desses processos s s o d a mesmo t i p o . Melhor explicando,
quando virios processos clientes se comunicam com um
p r o c e s s o s e r v i d o r p a r a o b t e r um mesma s e r v i ~ o , uma l i g a ~ ã o
d e portos d o t i p o vários-para-um é ideal. Porcirn, quando 0%

s e r v i ~ o çs ã s d i f e r e n t e s , d e v e - s e e s p e r a r mensagens d e t i p o s
e t a m a n h o s tamhhm d i s t i n t o s .

Mensagens de tipos diferentes podem ser


enviadas par p r o c e s s o s que r e q u e r e m servicos distintos.
Esses s e r v i s o s podem ser e s p e c i f i c o ç para cada p r o c e s s o o u
podem atender grupos diferentes a partir de
formados
p r o c e s s o s q u e d e m a n d a m a mesmo ç e r v i ~ o . M e n s a g e n s d e t i p o s
d i f e r e n t e s pedem t e r t a m a n h o s d i f e r e n t e s . Assim, a Única
f o r m a d e s e u t i l i z a r a p e n a s uma c h a m a d a à p r i r n i t b v a recebe
em um e s q u e m a d e l i g a ~ ã od e p o r t o s d o t i p o v & r i o s - p a r a - u m 6
através da a l o c a ~ ã o de um " b u f f e r " cujo tamanho seja
s u f i c i e n t e p a r a r e c e b e r a mensagem de m a i o r tamanho dentre
as possiveis. Entretanto, a p e s a r de p o s s i v e l , e s t e não @

um esquema elegante para s e r usado em um sistema de


c o m u n i c a c ã o b a s e a d o em p o r t o s .

Um p r o c e s s o p o d e s e r dono de v á r i a s portos
de entrada e de s a í d a . Funcionalmente, cada tipo de
mensagem d e v e ser a s s a c i a d o a um p o r t o diferente. 19essa
forma, u m p r o c e s s o e s c r e v e mensagens d i f e r e n t e s em portos
de saída diferentes e l @ de um mesmo porto de entrada
apenas mensagens d e um mesmo t i p o , mesmo que e n v i a d a s p o r
processos diversos . Quando um processo desejar ler
mensagens de t i p o s d i f e r e n t e s , e l e dever5 f a z ê - l o atravk~
de p o r t o s d i s t i n t o s .

No PBRTBS-TF, em uma chamada & primitiva


"recebe" SB é p a s s i v e l s e e s p e c i f i c a r um Ú n i c o porto de
entrada. Em c s n s e q U @ n c i a , p a r a r e c e b e r mensagens a $ r a v & s
de mais de u m p o r t o , devem s e r f e i t a s m a i s de uma chamada à
referida primitiva. Se e s s a s chamadas f o r e m i n d e p e n d e n t e s
entre i ou seja, f o r e m f e i t a s em p o n t a s d i s t i n t o s do
processo, p o d e r ã o s e r empregadas d a f o r m a como d i s p o s t o n a
item EV.4.2.2. (que descreve a primitiva "recebe").
Contudo, se f o r e m chamadas em um mesma p o n t a d o p r o c e s s o ,
devem s e r i n c l u i d a s em uma e s t r u t u r a de "selecão". Essa
estrutura permite que m a i s d e uma chamada à primitiva
"recebe" seja r e a l i z a d a sem s u e a l g u m a d e l a s pravoque o
b l o q u e i a da p r o c e s s o . (Na forma s i m p l e s , caso h a j a c l á u s u l a
de tempo em alguma p r i m i t i v a e nas exista mensagem à
disposi~ão, o praceriso f i c a r á bloqueado retardando, ou
mesmo i m p e d i n d o , a execue3o das p r i m i t i v a s p o s t e r i o r e s . )

Algumas linguagens de pragrama~ão


concorrente, coma ADA (MENDES, 1984) e CONIC (SLOMAN,
KRAMER 8 M A G E , 1986) i n c o r p o r a m e s s a e s t r u t u r a d e s e l e - % a ,
como i l u s t r a d a n o e n e m p l s de SLOMAN, KRAMEW & MAGEE (198$>:
I i-ia

r e c e i v e s i g n a l f r o m clack
=) w i t k r e a d i n s d e
in value := readsensorOi
i f value > limbt $Aen b e
s t a t e := t r u e ;
s e n d r e a d i n g t o alarm;

or
r e c e i v e s i g n a l frem query r e p l y reading;

enci j

Figura EV.6 : Exemplo d e e s t r u t u r a d e s e l e ~ % o


b a s e a d a em e o n s t r u ~ ? ' ) e sd e l i n g u a g e m

No PORTOS-TF, esse tipo de estrutura foi


implementado atravks da c r i a ~ g o de tr@s primit ivas:
"selec", descrita a seguir, e "fim-selee" c1

" p o r t o - u l k ima-mensa em", d e s c r i t a s nosi p r á x i m n s i t e n s .

A primitiva "selec", quando evocada, l i g a um


"flag" do sistema o p e r a c i o n a 1 q u e i m p e d e com q u e uma
p r i m i t i v a "recebe" bloqueie a pracesão chamader. N a d a mais
& alterado na rotina original. Dessa m a n e i r a , p o d e - s e ter
a seguinte forma:

c;elec( );

e ( 1, rnenãl, tam-meníl, SEM-ESPERA ) ;

r e c e b e ( 2 , mens2, tam-mens2, SEM-ESPERA ) j

fim,selec( SEM-ESP

F i g u r a IV.7 : E x e m p l o d e e s t r u t u r a d e s e l e e ã o n o PORTOS-TF
A primitiva "fim-selec" é usada para
t e r m i n a r um b l o c o de s e l e ç ã o . Como p a r s m e t r o d e s s a r o t i n a ,
é passado a tempo m&ximo p e l o qual o proce~ço ficará
bloqueada e s p e r a n d o por uma mensagem. Quando f o r r e c e b i d a
uma mensagem em q u a l q u e r um d o s p o r t o s especificados nas
chamadas às p r i m i t i v a s " r e c e b e " do b l o c o de sele~ão, o
processo será desblequeado. Se o tempo de espera se
esgotar, então o p r o c e s s a tambkm s e r á liberado, mas ã

primitiva retornará o v a l o r que i n d i c a que a tempo de


espera s e esgotou. Caso h a j a alguma mensagem disponivel
antes do i n i c i o da execueão do b l o c o de s e l e q ã o , então o
p r o c e s s o não c h e g a r i a f i c a r b l o q u e a d o .

Quando um processo deixa uma região de


sele~ão, fundamental c o n h e c e r - s e a r a z ã o p e l a qual e l e o
fez. P e l o c ó d i g o de r e t o r n o da p r i m i t i v a " f i m - s e l e c " pode
s e s a b e r s e o tempo de e s p e r a s e e s g e t a u ou se uma mensagem
(pele menos uma) foi recebida. Caso t e n h a acorrido a
segunda h i p ó t e s e , 6 muito p r o v á v e l que o caminho p e l a qual
seguir& o processe dependa do p o r t a p a r onde chegou a
mensagem ( q u e i n d i r e t a m e n t e r e f l e t e o t i p o do s e r v i ç o a s e r
prestado). O p r o c e s s o pode o b t e r t a l i n f o r m a ~ ã oa t r a v @ s da
chamada da p r i m i t i v a " p o r t o - u l t i m a - m e n s a m .

Dessa forma, o c o n j u n t o "se1ec"-"f im-se1 ec"-


" p o r t o - u l t ima-mensagem" implementa, na forma d e p r i m i t i v a s
a e s t r u t u r a d e " r e g i ã o de s e l e c ã o " que, como mostrado no
item 2 V . 4 . 2 . 3 , 6 encontrado, em o u t r o s s i s t e m a s , n a forma
de c o n s t r u ~ õ e sd e linguagem.
IV.4.2.6.Responde:

A Ultima p r i m i t i v a de comunisacão, de nome


"responde", e s c r e v e em um p e r t o de e n t r a d a , c u j o número é
p a s s a d o como p a r a m e t r o , uma mensagem de r e s p o s t a a o Último
pedido recebido por a q u e l e p o r t o . Seu endereco 6 o
segundo parametro da f u n ~ ã o . O tamanho dessa resposta
tambem ãe c o n s t i t u i em um p a r â m e t r o da p r i m i t i v a .

Sá faz sentido essa primi%iva ser


assinerena. Logo a r o t i n a "responde" é sempre do t i p o n9n-
bloqueante.

Quando a resposta 6 e s c r i t a no porto, &


verificado s e o p r o c e s s o q u e e n v i o u a Última mensagem p a r a
a q u e l e p o r t o e s t i e s p e r a n d o por uma r e s p o s t a . Caso e s t e j a ,
então a mensagem s e r á e s p i a d a d i r e t a m e n t e no o "bu-F$er"
correspondente do processa e e s s e será liberado. Caso
cont r á r l o , nenhuma a ~ ã o será tomada. Há duas
i n t e r p r e t a ~ ? i e sp a r a o f a t o do p r o c e s s o r e m e t e n t e não estar
esperando uma resposta. A primeira hipótese que a
primitiva envia usada para remeter a mensagem era
assincrona (pariimetrs "tempo de e s p e r a " igual a zero).
Nesse caso, a arquiteturâ das processos comunicantes
provavelmente estará incorreta. A o u t r a h i p b t e s e 6 que o
p o r t o de s a i d a c o r r e l a t o e s t e j a l i g a d o a v á r i o s de e n t r a d a .
Nesse c a s o , s e a p r i m i t i v a " e n v i a " e r a da t i p o s i n g r o n a , a
que ocorreu é que um d o s outros processos ligados ao
remetente j6 envzou a r e s p o s t a . Esse esquema p e r m i t e o
acesso a s e r v i d o r e s m ú l t i p l o s de forma transparente ao
processo c l i e n t e .
Um programa faz use de varitiveis para
armazenar informacões que serão necessárias na sua
execu-ão. Ocorre, porém, que nem todas elas necessitam ou
têm como ficar na memária do inicio ao fim da e x e e u ~ ã o do
programa. slgumas são geradas em um determinado instante
da execuqão e utilizadas por algum tempo, após o qual %e
tornam desnecesãarias. Este 6 , normalmente, o caso de
elementos de estruturas de dadas como listas, árvores, etc
(WQRBWPTZ & S A W M I , 9984).

Essas estruturas não sSo e


criadas
utilizadas todas ao mesmo tempo. Dessa forma, pode-se
otimirar o uso da membria compartilhando-a entre tais
estruturas, pois as p o ã i ~ Q e ãde memária necessiriaç para
armazená-las sb precisam estar a elas atribuídas enquanto o
seu conteúdo for utilizado pelo processo.

Portanto, para reduzir o tamanho de sua área


de dados, o sistema operacional deve permitir a a l o c a ~ ã oa
desalsca~ão inâmica de memória. As primitivas que
implementam essas funcões %%o utilizadas na alocacão e
desalocacão dinâmica de estruturas como, o exemplo,
descritores de processo (vide capitulo 11%), "bu7fer-s" de
comunicação (vide capitule ZU), nás de &rvore (vide
capitulo V I ) , ete.

Esses "$laca%" de memeria que 5%) alocados


dinamicamente estão em uma área da mem6ria expecificamente
reservada para este fim. Na hora de se alocar um novo
bloco, deve-se escolher um dentre esses blocos livres.
Çegundo DEITEL (1984) e MADNICK & DONOVAN
11974), existem t r ê ç p o l i t i c a s b á s i c a s p a r a a s e l e ~ ã o de
qual b l o c o de memsria a l o c a r . Sãs e l a s :
. "first-fit": o que p r i m e i r o c o u b e r ;
. "best-fit": o que melhor c o u b e r e
. "worst-fit": o que p i o r c o u b e r .

Em todas elas, naturalmente, o bloco


e s c o l h i d o deve t e r tamanha i g u a l ou maior ao r e q u i s i t a d o .

A polit ica d e "first-fit" d i z que a p a r t i c ã o


a ser ocupada seri a p r i m e i r a c u j o tamanho f o r igual ou
superior ao desejado. A pelitica de "best-fito será
escslhida a particão c u j o tamanho melhor se ajuste ao
desejado, i s t o é, a de menor tamanha d e n t r e a s de tamanho
maior ou i g u a l ao d e s e j a d o . A terceira peitica, a de
"worst-fit", c a r a c t e r i z a - s e por e l e g e r a p a r t i ~ z od e maior
tamanho d e n t r e t o d a s .

Para a implementação das primitivas de


a l o c a ~ ã o e d e s a l o c a ~ ã odinamita de rnembria, o PORTOS-TF
adota um "buffer psol", que 6 ande ficam t o d a s a s áreas
dinsmicas. Esse " b u f $ e r " , i n i c i a l i r a d a com t o d a a s u a á r e a
disponbvel (figura V.la), ser6 dividido, por demanda, em
blocos (figuras V.1b e V.lc). Esse "poel" assume um
tamanho p r e d e f i n i d o s u e , p a r a algumas a p l i c a ~ õ e s ,pode s e r
insuficiente. Nesse c a s o , pode-se, ao i n s t a l a r o sistema
operacional, p a s s a r um p a r â m e t r o e s p e c i f i c a n d o um tamanho
s u p e r i o r ao o r i g i n a l .

Quando 6 chamada a p r i m i t i v a d e a l o e a ~ ã ode


membria, a e s c o l h a do b l o c o a s e r a l a c a d o é f e i t a d e a c o r d o
com a p e l i t i c a de " f i r s t - f i t " ( p r i m e i r o que c o u b e r ) . Essa
p o l l t i c a f o i adstada visando dois a s p e c t o s :
. tempo e
. Çragment a ~ ã o .

Figura V . l : Exemplo d e a l a e a ~ ã od e Areas de mem6ria

Como s e s a b e , a p o l i t i c a de " f i r s t - f i t " a


que decide mais r a p i d a m e n t e qual b l o c o s e r á o e6;colhido
(DEITEL, 1984). Alem d i s s o , e l a f a v o r e c e a u t i l i r a c % a de
blocos localizadas no i n i c i o do " b u C f e r p a o l " ( M A B N P C K d
BBNBVAN, 1974 > .

A p o l i t i c a de " b e s t - f i t " , alQm d e s e r mais


demorada p a r a a e s c o l h a d a b l o c o a a l o c a r , aumenta também a
f r a g m e n t a s ã o d o " b u f f e r p o o l " ( M A D N E C K & DBNQVAN, 1874).

A p a l i t i c a de " w o r s t - f à t " f o i p r e t e r i d a dão


56 p e l o tempo que l e v a p a r a a s e l e c ã o d o b l o c o a aloear,
mas tambem por d i v i d i r o s g r a n d e s b l o c o s . Se 6 verdade,
por um l a d o , s u e a o s e d i v i d i r um g r a n d e b l o c o , a l o c a n d o - ã e
uma p a r t e , a p a r t e r e s t a n t e t e r á a i n d a um tamanho g r a n d e o
suficiente para s e r Ú t i l (DEITEL, 1984) ( a o c o n t r á r i o da
p o l i t i c a de " b e s t - f i t " ) , também é v e r d a d e , por o u t r o l a d o ,
que, a p b s algum tempo, e s s e s b l o c o s poderiam s e r i n c a p a z e s
de acomodar algumas mensagens.

Essas h i p e t e s e s r e l a t i v a s a o s problemas de
fragment a ç s o s ã o muito d e p e n d e n t e s do e s t a d o corrente do
"buffer poel" e da s e q u ê n c i a d a s chamadas de alocasão e
d e s a l o c a ~ % o . E s s e p e r f i l é muito d i f í c i l d e s e r e s t i m a d o .
Portanto, apesar do item "fragmentaeão" ter sido
c o n s i d e r a d o , o f a t o r "tempo" f o i d e t e r m i n a n t e na e s c o l h a da
política de "first-fit" para a alocacão de blocos do
"buf6-r paol".

Vale a pena chamar a a t e n ~ a ode que não é


passável f a z e r a compactaeão d o s $ 1 8 ~ 0 5 p a i s , dentro do
"kardware padrão" adotado, nzo há como manter p o n t e i r o s e
e n d e r e ~ o sa t u a l i z a d o s . (MADNICK & D O N O V A N ( 1 9 7 4 ) abordam a
suestão da r e l o c a ~ ã ode b l o c a s de membria e o hardware
u t i l i z a d o nesse c a s o ) .

Como ilustra a figura ( V . 2 ) , c a d a um dos


b l o c o s do " b u q f e r p o a l " composta p o r :
. um cabegalho que contkrn o tamanho do bloco e 8

e s t a d o do b l o c o ( d i a p o n i v e l ou a l o g a d o ) e
. a á r e a de t r a b a l h o do b l o c o .

Uma vez e s c o l h i d o o bloco a ser àlocado,


este s e r á d i v i d o em d o i s . O p r i m e i r o p e d a ~ os e r á marcada
como " a l o c a d o " e t e r á o tamanho i g u a l a o requisitado. O
segundo p e d a ~ o c o n s t i t u i r & um novo b l o c o "disiponivel" e
ter2 um tamanho i g u a l ao a n t e r i a r d e r r e s c r i d o do trecho
a l o c a d o e de s e u p r ó p r i o c a b e c a l h o ( f i g u r a V . 3 a ) .
Figura V . % : Esquema d e um elemento do " b u f f e r p o s l "

LE : ESTADOS L z LIVRE

Figura V . 3 : Esquema d e desmembramento de b l o c o d e memária

Qcorre, per&m, que 5e a área do bloco


e s c o l h i d o p a r a a l o c a ~ ã of o r a p e n a s um pouco ( a l g u n s bytes)
maior do que a requisitada, duas s i t u a ~ 0 e s pedem çe
c a r a c t e r i z a r , no sue d i z r e s p e i t o à a r e a r e s t a n k e :
. ires i n s u f i c i e n t e p a r a um novo b l s e e e
. á r e a i n ú t i l p a r a um nove $1060.

No p r i m e i r o c a s o , a á r e a r e s t a n t e (isto e, a
d i f e r e n ~ ae n t r e a ires d i s p o n í v e l e a r e q u i s i t a d a ) pode s e r
tão pequena que nela não seja possível montar-se um
cabe6alhc-r. No s e g u n d o , a p e s a r d e s e r p o s i s í v e l c r i a r - s e um
novo bloco, este t e r á um t a m a n h o t a o d i m i n u t o q u e muito
di$icilmente conseguira s a t i s f a z e r algum o u t r o pedido de
alocaeão.

Para resolver esta questão, a POWTQS-TF


estabelece um t a m a n h o m í n i m a p a r a um $loca. Quando um
b l o c o é a l o c a d o , se e t a m a n h o d a i r e a r e s t a n t e f o r m a i o r o u
i g u a l a esse m í n i m o , e n t ã a o p r a c e d i m e n t o d e d e s m e m b r a m e n t o
d e s q r i t a a n t e r i o r m e n t e ser& e f e t u a d o . Caso c o n t r á r i a , não
h a v e r & d e s m e m b r a m ~ n t oe o b l o c o s e r & t o d o a l o c a d o , s o b r a n d o
entao uma folga (figura V.3b). (Na i m p l e m e n t a ~ ã o em
equipamentos do t i p o XBM-PG, o tamanho d e bloco mínimo
a d o t a d s ?si d e q u a t r o b y t e s .

Coma mencionado anterbormente, não é


pessivel cempactar-se as b l o c o s "disponiveis". Todavia,
s u a n d o um b l o c o é l i b e r a d o , e x a m i n a - s e seus adjacentes. Se
um d e l e s e u ambos e s t i v e r e m d i s p o n í v e i s , h a v e r á uma C u s a o
dos bloco-, diminuindo assim a f r a g m e n t a ~ ã o d o "buffer
pool" (figura V.4). Dessa f o r m a p o d e - s e a f i r m a r que não
e ~ i s t e md o i s b l o c o s d i s p o n í v e i s a d j a c e n t e s n o PORTOS-TF.

Figura V.4 : E s q u e m a d e f u s s a d e b l o c o s d e memária


Para a l o c a r - s e uma á r e a d e rnembria, deve-se
chamar a f u n ~ ã o d e a l s c a c ã o passando come parârnetrs o
tamanho da á r e a d e s e j a d a . S e r 4 r e t o r n a d o p e l a fun6ão um
p o n t e i r o para n i n í c i o d a á r e a l i v r e (imediatamente apás o
cabe-alho). Na d e s a l o c a ~ ã s ,e s t e p e n t e i r a deve s e r p a s s a d o
como parâmet r o . h r o t ina, e n t ãn, ret rocederi para s
cabeqalho, deerementando s p o n t e i r o no número de b y t e s que
e CQMPÕE, prornovenda em s e g u i d a a l i b e r a ~ ã ade b l o c o e s u a -
e v e n t u a l f u s ã o com b l o c o s a d j a c e n t e s .
As estruturas de dados empregadas em um
sistema operaciona1 (lista de d e % e r i t ~ r e sde processos,
1i s t , a d e kemporizaç6es, etc. ) s%o de grande import%ncia
para a f l e x i b i l i d a d e e desempenho d e s s e s i s t e m a .

Essas estruturas p o d e m ser o r g a n i z a d a s em


t a b e l a s (ou v e t s r e s ou, ainda, arranjes), listas simples,
c i r c u l a r e s , A r v o r e s , e t s . (HOROWITZ t3 S A H N I , 1884).

Tabelas são a f o r m a mais natural de se


manter e m a n u s e a r essas e s t r u t u r a s (figura VE.1). Isto
porque para se referenciar a qualquer uma delas sãs
adas indices. P a r a n a v e g a r a t r a v k s d e uma tabela,
isto , mover-se pelos registros para a f r e n t e ou para
t r i s , b a s t a i n c r e m e n t a r o u d e c r e m e n t a r um í n d i c e .

Figura UI.1 : Exempla d e t a b e l a


A desvantagem das tabelas está na sua
estrutura estática. Por t e r um tamanho prk-determinado s e u
emprego pode por um l a d o l i m i t a r o número de regiskros
armazenados e por o u t r o o c a s i o n a r o d e s p e r d i c i o de memória.

Uma outra forma de armazenar o s dados do


sistema o p e r a c i o n a 1 6 a t r a v @ s de l i s t a s encadeadas ( f i g u r a
V I .e>. Uma l i s t a e n c a d e a d a , ou ãimplesmente l i s t a , pode
começar com o tamanho z e r o e , à medida que vão surgindo
novys registros a serem g u a r d a d a s , novos n á s vão sendo
criadoç e i n c l u i d o s na l i s t a . Analoqãmente, quando uma
determinada i n f o r m a ~ ã a não é mais necessária, seu nó
c o r r e s p o n d e n t e @ r e t i r a d o da l i s t a e a i r e a por e l e ocupada
ef, liberada.

Figura V I . 2 : Exemplo de l i s t a encadeada

A s l i s t a s podem s e r :
. a b e r t a s e simplesmente e n c a d e a d a s ;
. a b e r t a s e duplamente e n c a d e a d a s ;
. c i r c u l a r e s e simplesmente encadeadas e
. c i r c u l a r e s e d u ~ l a m e n t ee n c a d e a d a s .

A escolha e n t r e l i s t a a b e r t a e l i s t a fechada
depende basicamente do p e r f i l da aplicàç~s. Quando o
acesso aos n o s da l i s t a @ rand6miso ( i s t o 6, não segue
nenhuma s e q t l ê n c i a ) ou s e q u e n c i a l f i n i t o ( i s t o é , cada nó
asessado após seu antecessar sucessivamente a t e o ÚItimo
nó), o usa de listas abertas é mais conveniente, por ser
mais simples de gerenciar. Por outro lado, se o acesso aos
nás da lista for seqdencial infinito (ou seja, cada ná e
acessado após seu antecessor sucessiva e indefinidamente,
onde o primeiro é aceçsado apbs o Mltimo), então seri
justificada a a d a ~ ã ade uma liçta circular, onde o último
elemento aponta para B primeiro.

a d o ~ ã ode listas duplamente encàdedadas


A
simplifica os algoritmos de busca com a finalidade de
inserção ou retirada do ná, j i que d e um nb s e sabe seu
antecessor e seu sucessor. Listas simplesmente encadeàdas
levam vantagem sobre as duplamente encadeadas por ocuparem
menos memória, além de necessitarem atualizar um menor
nkmera de ponteiros pois cada na só usa um, e não dois
ponteiras, para se ligar a seus adjacentes. Por outro
lado, na busca da p a s à ~ ã ode insercãa ou retirada de um n8,
deve ser sempre guardada a p o s i ~ ã odo nó antecessar, o que
torna o algoritmo um pouca mais complexo,

Uma
outra estrutura d e dados extremamente
importante é a "árvore" (figura V I . 3 ) . Segundo HOROWITZ &
SAMNI (1884), "árvore é um conjunto finito de um ou mais
nb% de tal natureza que: (i) existe um nó especialmente
designado, de nome a ; (ii) os nbs restantes estão
desdobrados em "nu conjuntos ("nu >- 8 ) separados Ti, etc.,
Tn, em que cada um dos referidos conjuntos se constitui em
uma árvore. T I , etc., Tn se denominam subiirvares da raiz."
Qs n á s que são as raizes das subárvores T I , etc., Tn são
chamados "filhos" da raiz da árvore. 13 nb da raiz da
árvore, por sua vez, 6 o "pai" das raizes das subarvores.
Filhas de um mesmo pai são "irmaos". Um nó de uma árvore
sue não possui filhos & chamado d e "folha".

"Altura" de uma árvore pode ser definida


como o número minimo de nás que se deve percorrer para ir
da raiz até uma folha qualquer, contando a raiz. e a falha.
F i g u r a VI.3 : Exemplo d e á r v o r e

Uma arvore notável e de grande aplica~ão


prática & a chamada " á r v o r e binária". Diz-se que uma
Arvore 6 b i n á r i a quando s u a r a i r tem, no máximo, dois
#ilhas, sendo cada um d e l e s r a i z d e uma árvore tarnbkm
binária (figura VI.4). Uma á r v o r e v a z i a tambBm é uma
árvore binária.

Em Adelson-Velsk ii
I?&%, & Landis
i n t r o d u z i r a m um n o v o c o n c e i t o d e á r v o r e : a "árvor@ b i n á r i a
balanceada". Define-se árvore binjria balanceada como
sendo uma á r v o r e b i n i r i a n ã o v a z i a o n d e c a d a f i l h a d e sua
raiz 6 r a i z d e uma á r v o r e b i n á r i a t a m b e m b a l a n c e a d a e a n d e
a d i f e r e n ~ aem m ó d u l o e n t r e a s a l t u r a s d a s subarvores da
direita e d a e s q u e r d a d a r a i z & menor o u i g u a l a um. R
á r v o r e v a z i a t a m b k m 6 uma á r v o r e b i n á r i a b a l a n c e a d a .
Figura V %. 4 : Exemplo de á r v o r e b i n á r i a

Arvores são e s t r u t u r a s mais complexas de


serem mantidas do sue l i s t a s . Come estas, as árvores
também s ã o e s t r u t u r a s d e tamanho f l e x i v e l , ao c o n t r a r i o d e
tabelas. Sua grande vantagem s o b r e l i s t a s e s t a no tempo de
busca, i n ç e r e ã a e r e t i r a d a d e um d e t e r m i n a d o n á . Pode-se
provar que para achar um elemento em uma lista, um
a l g o r i t m a Otbme 6 O ( n ) , ande n e ' a número d e e l e m e n t o s da
lista. J i p a r a uma á r v o r e b i n á r i a b a l a n c e a d a , um a l g a r i t m o
átime B 0(109 n ) .

V6.2. Op-ões de P r o j e t o :

H5 duas e s t r u t u r a s de d a d a s ( o u tipos de
e s t r u t u r a s ) que devem s e r comentadas p a r serem fundamentais
para a entendimento dos algoritmos e funcões que as
manuseiam. S%o e l a s : a s l i s t a s d e pracessoã e a e s t r u t u r a
da d e % c r i t o r d e p r o c e s s o (DF').
V I . 2 . i . " L i s t a s " do S i s t e m a O p e r a c i o n a l :

No PBRTOÇ-PF t o d a s a s t a b e l a s e l i s t a s foram
o r g a n i z a d a s de forma h i e r i r q u i c a . Para t a n t o f o i a d o t a d a a
estrutura em árvore b i n & r i a b a l a n c e a d a em conjunto com
1i s t a s circulares. A ut i l i z a ç ã o d e s s e t i p a de eçt rutura
tem d o i s o b j e t i v o s p r i n c i p a i s :
. r a p i d e z de a c e s s o a um d e t e r m i n a d o nb da e s t r u t u r a e
. d e g r a d a - ã o l e n t a com o aumento do número de
PrBCf25ejOS.

sabido que o gerenciamento de èirvores


envolve algoritmos mais t r a b a l h o s o s do que o s de filas
simples. Dessa forma, é de s e e s p e r a r que, p a r a um pequeno
número d e p r o c e s s o s , a adoção de e s t r u t u r a s em a r v o r e s e j a
piar do que em f i l a s simples. Por outro lado, como
algoritmos de busca, inser-as e retirada de arvores
b i n á r i a s b a l a n c e a d a s s ã o B(1og n ) , c o n t r a a1 o r i t m o s O(n)
para listas simples, a o r g a n i z a ~ ã o das estruturas do
s i s t e m a em á r v o r e s f a z cam sue a d e g r a d a ç a o da s i s t e m a , com
o aumento da número d e e s t r u t u r a s , s e j a mais s u a v e .

A forma geral dessa estrutura citada


anteriormente e s t a r e p r e s e n t a d a na f i g u r a (V1.5). Nela,
cada nb da á r v o r e 6 d i v i d i d o em c i n c o campos:
. chave:
tem como fun$%o i d e n t i f i c a r o nó para sua
classbfica~ão;
. nivel:
i d e n t i f i c a o n í v e l do nó na á r v o r e . ?i. sempre uma
unidade maior do que o maior n í v e l d e n t r e a s dos
filhos. E usado n a balaneeamento d a Arvore;
. p o n t e i r o para l i s t a c i r c u l a r :
a p o n t a p a r a uma l i s t a c i r c u l a r que cont@m o s
e l e m e n t o s com a mesma c h a v e .
. p o n t e i r o p a r a o f i l h o da e s q u e r d a :
a p o n t a p a r a a s u b á r v o r e da e s q u e r d a e
. ponteiro para o filho da direita:
aponta para a sub&rvore da direita

DIREITA

Figura U E . 5 : Estrutura de um no das árvores


empregadas na BBRTOÇ-TF

Na arvore, a chave do filho da esquerda &


sempre menor do que a de pai que, par sua vem, é menor do
que a chave do filho da direita. Elementos de mesma chave
çãa inseridos no final da lista circular associada àquele
nó da árvore.

Cada elemento da lista circular & composto


de dois campos:
. ponteiro para BP:
aponta para um ilescritor de Processos e
. prúxims:
ponteiro para a prhxima nQ da lista.

O fato dessa lista circular compor-se de nbs


ponteiros para neãcritores de Processos e não dos próprios
Descritores, que poderiam ser encadeados uns aos outras,
explica-se pelo f a t o d e se d e s e j a r fazer essa estrutura
s e n & r i s a , d e forma a t o r n a r t o d a s as r0tina.s de rnanipula~ãa
associadas a esse t i p o d e e s t r u t u r a comuns a todaç as
á r v e r e s empregadas n o sistema operaeianal.

Figura V I . 6 : E s t r u t u r a g e r a l d a s " l i s t a s " d o POWTBS-TF

Essa e s t r u t u r a d e s c r i t a f o i m o n t a d a com s
objetivo de atender a t r g s "listas" de sistema operacional
( v e r c a p i t u l o 111):
. a lista dos descràtores de processas;
. a l i s t a d a s p r o c e s s e s n o e s t a d o PRQNTQ e
. a l i s t a d e processos bloqueadas por tempa.

R d i s p o s i c ã o d e e l e m e n t o s d e mesma c h a v e em
uma lista circular 4 conveniente na case da "Lista dos
P r o c e s s o s P r o n t o s " , na a c a s i ã o da e s c a l o n a m e n t s .

Como &J necessária acessar-se com grande


freqUEneia a p r i m e i r a p o s i ~ ã o( a de menor c h a v e ) d e algumas
dessas "listas", a cada uma delas está assaciada um
descriter. E s t e d e s e r i t o r contém d o i s campas:
. p o n t e i r a p a r a a r a i z da á r v o r e e
. p o n t e i r o p a r a o p r i m e i r o nó d a á r v o r e .

A f i g u r a ( V I . 6 ) i l u s t r a a e s t r u t u r a completa
aqui exposta.

Q descritor de processos (DF') "é uma


estrutura de dados que eant&rn certas informa~ões
i m p a r t a n t e s s o b r e a p r o c e s s o " (DEITEL, 1984). NQ PORTOÇ-
TF, e s s a s informagges s ã o a s s e g u i n t e s ( v i d e c a p i t u l o 1 1 1 ) :
. ident i f i c a d o r do p r o c e s s o ;
.prioridade;
. e s t adui
.tamanha da f a t i a de tempo;
.tempo d e e s p e r a ;
. e n d e r e c o da r o t i n a de s e r v i ~ o ;
. e n d e r e ~ od a p i l h a e
. l i s t a dos p a r t o s .

i3 i d e n t i f i c a d o r do pr-ocesso, a p r i o r i d a d e , o
tamanho da f a t i a de tempo e a tempo de e s p e r a s ã o valeres
numéricos que variam de 1 a t é um v a l e r máximo. Esse v a l o r
mi~imo depende da máquana. Na imp lementa~go para
equipamentos do t i p o IBM-PC, por exemplo, o v a l e r máxima
d e s s e s campos 6 FFFFh, com e x c e ~ ã oda p r i o r i d a d e que 6 2 5 5 ,
decimal. 8s processos mais p r i o r i t á r i o % são as de
prioridade % s u a 1 a I. 0s de menor p r i o r i d a d e s a a o s que
tem o v a l o r 253 cama, p a r exemplo, o p r o c e s s o " o c i o s a " . O
estada doa p r o e e s ã o ã pode t e r d o i s valeres: "pronto" e
"bloqueado". 8 p r o c e s s o " r o d a n d o " mantém a i n d i c a q ã o de
"pronto" e m s e u DP p o i s n ã a n e c e s s i t a a l t e r a - l a , uma v e r
que s u a i d e n t i f i c a c ã o 6 f e i t a p e l a manutengão d o e n d e r e c s
d o BP c o r r e n t e e m uma v a r i á v e l d o s i s t e m a o p e r a c i o n a l . Um
t e m p o d e espera i g u a l a zero i n d i c a q u e o p r o c e s s a n ã o e s t á
bloqueada, e n q u a n t o q u e um t e m p o i g u a l ao v a l o r máximo
i n d i c a que ele s ó será l i b e r a d o p o r e v e n t o e n ã o p o r tempo.
Um o u t r o v a l o r q u a l q u e r i m p l i c a na c o n t a g e m a um t e m p o
mixime de bloqueio. Esse v a l o r 6 decrementado de uma
unidade a cada pulso do r e l ó ia. B campo " e n d e r e ~ o d a
r e t i n a d e s e r v i ~ a "t r a z o e n d e r e - a a b s o l u t o d a r o t i n a q u e
d e v e r á ser e x e c u t a a c a s o o p r o c e s s o s e j a d e s b l o q u e a
e s t o u r o d o tempo d e e s p e r a . Essa r e t i n a s e r i e ~ e c u t a d a
a n t e s d a p r o c e s s o retomar s u a e x e c u c g o . 0 e n d e r e w d o t a p o
d a p i l h a d o p r o c e s s o n o momento d a e s c a l o n a m e n t o %amb&m
uardado no B -

Q ú l t i m o e l e m e n t o d e DP é um p o n t e i r o para
uma l i s t a q u e c o n t k m a r e l a ~ ã od o s p o r t o s e m p r e g a d o s pelo
processe (vide c a p í t u l a ZU). Estaéuma lista linear e
simplesmente encadeada, e s m p o s t a p o r e l e m e n t o s que têm a
seguinte estrutura :
. ncdmcroj

.t i p o j
. l i s t a d o s p a r t o s aos q u a i s e s t á ligado;
. l i s t a d a s mensa e n s r e c e b i d a s ;
o d o " b u f f e r " d a mensa
esse " b u f f e r " e
.práwimo no.

O número d e p o r t o v a r i a d e I a t e um valor
máximo. s s e v a l o r máximo também & d e p e n d e n t e d a m i q u i n a .
Na i m p l e m e n k a ~ ã o p a r a e q u i p a m e n t o s d o t i p o I
exemplo, ele 6 i a 1 a FFFF"k 0 s e n t i d o d e um p a r t o p o d e
ser d a e n t r a a, e n q u a n t o qu s e u t i p o p o d e s e r
n f i á v e l " o u " n a o - c o n f i á v e l " ( v i d e c a p i t u l e VIL).
A l i s t a dos p o r t o s a o s q u a i s e s t á l i g a d o
uma l i s t a l i n e a r e simplesmente e n c a d e a d a . E l a contem, em
cada nó, o número de um p r o c e s s o e s e u r e s p e c t i v o p o r t o ao
qual a p o r t o em q u e s t ã o e s t á l i g a d o . E s s a l i s t a contém um
nó de c a b e c a l h o que, alkm de s i m p l i f i c a r o s a l g a r i t m o s de
inse~eão e retirada, armazena a i d e n t i f i c a q ã o do p o r t o
e x t e r n o s u e e n v i o u a Última mensagem ao p o r t e em q u e s t ã o .
t a ~ ainformaçgo 6 ut i 1 i z a d a p e l a p r i m i t i v a "responde" .

A lista de mensagens também é uma lista


l i n e a r e simplesmente e n c a d e a d a . "a csnt&m, em cada um de
seus elementos, o endereea e o tamanho de "buffer" do
sistema o p e r a e i o n a l onde e s t á armazenada uma mensagem dá
e n v i a d a p a r a o p o r t o mas a i n d a não consumida p a r e l e . Alam
dessas informa~ões, ele tambem armazena o identificador
d e s s e p o r t o de s a i d a .

8s campos enderece e tamanho do " b u f f e r " da


mensagem s e g u i n t e trazem o e n d e r e e o a b s o l u t o e o tamanha do
" b u f f e r " sue o p r o c e s s a dona de p o r t o a l o c o u p a r a r e c e b e r a
prbxima mensagem. U m e n d e r e c o n u l o i n d i c a que a processo
não está e s p e r a n d o nenhuma mensagem por a q u e l e porto de
entrada. U m e n d e r e ~ onão n u l o i m p l i c a , obrigatoriamente,
em uma l i s t a de mensagens v a z i a , p o i s s i g n i f i c a r i a um erro
a ~ r o c e s ~ ee s t a r aguardando uma mensagem quando já
e x i s t i s s e p e l o menos uma a s e r consumida.

íl ú l t i m o campo a p o n t a p a r a o prbxime n b da
lista.

Pela saract e r i s t ica evidente de


recursividade das árvores (vide sua própria d e f i n i c ã o ) , as
r o t i n a s r e l a t i v a s 45 á r v o r e ç e l i s t a s foram, em quase sua
-
a L .ri
- M w-m L
m . r i e r n Q!
m m m m s r
L E a w c
a
C
ri U
cu
m
3 O E t
14 2w ,d -83
i r r i s i C
.rl L
U m ai
d - r m l n o
m
G w
ini .ri E
a c @ -0
-&I
m
d
m -
r 6 0 0
Q c
C m d t u E .
L w rd .ri r
r a d c i - X ni
~n a - -O L
a O L .rl
m . m m e I L W
m U L O
0i -0 .ri m
~ C + O L
1 .ri .ri
ni o U O L
v - m L @
n a i o s . r l m
i b € . r , @ c
.ri O .ri d-r 'ri
g i 4 X t
$i L - O @ O L
e s s e n6 da á r v o r e s e r i a r e t i r a d o da e s t r u t u r a .

A i n s e r ~ ã ode e l e m e n t o s n a s & r v o r e s 4 f e i t a
de forma r e c u r s i v a . Para i n s e r i r um nova elemento em uma
arvore, compara-se a chave do elemento com a da r a i z da
árvore. Se 9 chave do elemento f o r menor do que a da r a i z
a r v o r e , e n t ã o e l e s e r á i n s e r i d o na subiirvore da e s q u e r d a .
Caso s e j a m a i o r , e l e o s e r & n a s u b á r v o r e da d i r e i t a . Caso
s e j a i g u a l , s e r á i n s e r i d o no ú l t i m o l u g a r da l i s t a c i r c u l a r
associada ao nó r a i z da á r v o r e . Não h á crit ica, nessa
rotina, de d u p l i c i d a d e de e l e m e n t o s . F o i f e i t a a o p ~ ã ode
deixar e s s e c o n t r o l e por c o n t a d a s r o t i n a s do núcleo que
irão u t i l i z a r a s árvores.

Caso se tenha decidido inserir o novo


e l e m e n t o em uma d a s s u b á r v o r e ç , o prosedimentã d e inserego
serti novamente chamado, da forma recursi.va, até ser
e n c o n t r a d o o ponto de i n s e r c ã o . Esse ponto pode s e r um nó
raiz de mesma chave de elemento a s e r i n s e r i d o ou um nb
r a i z vario. No p r i m e i r o c a s o , o c o r r e apenas a i n s e r ~ s ode
um novo nó na l i s t a c i r c u l a r a s s a c i a d a a e s s e raiz. No
segundo, é criada e i n s e r i d o n e s s e ponto um novo nó de
árvore. A l i s t a c i r c u l a r a s s o c i a d a a e s s e n8 t e r & como
Unica elemento a q u e l e que s e e s t á i n s e r i n d o .

8p85 Q r e t o r n o de uma chamada recursiva,


pode-se a f i r m a r que o elemento f o i i n s e r i d o na estrutura.
Contudo, e s s a i n s e r s ã o pode t e r causado o de%balanceamento
da Arvore. Portanto, o n i v e l da r a i z 6 a t u a l i z a d o e é
chamado o procedimento de balanceamento da arvore. Esse
procedimento s e r & comentado mais a d i a n t e .

Cabe s a l i e n t a r que um novo e l e m e n t o s á pode


ser i n s e r i d o ( 1 ) em uma l i s t a c i r c u l a r de um nó da árvor-e
j& existente ou ( 2 ) em uma f o l h a da árvore. Um novo
elemento jamais s e r á i n s e r i d o e n t r e d o i s n6s ( p a i e f i l h o )
d e uma a r v o r e .
0 procedimento de r e t i r a d a de um nó da
árvore @ similar a o de i n s e r ~ g ono que d i z respeito ao
p r o c e s s o r e c u r s i v o de p r o c u r a do nó. No entanto, existe
uma diferenca marsante entre os dois algoritrnos. Ma
r e t i r a d a , um nó pode s e r r e t i r a d o do "meio" da Arvore, i s t o
6, o nó r e t i r a d a pode t e r f i l h a s , enquanto que na i n s e r ~ a o
essa s i t u a - % o 6 i m p o s s í v e l de o c o r r e r . Na k i p b t e s e de s e
retirar um nó da meio da Arvore, o problema s e resume i
r e t i r a d a d a r a i z de uma & r v a r e , j á que s z o u s a d a s chamadas
reizursivas. Em seu lugar, & caleizado o elemento
imediatamente a n t e r i o r ( f i g u r a V i . 8 a ) ou p o s t e r i o r ( f i g u r a
V I . 8 b ) a e l e na á r v o r e . Essa e s c o l h a depende da a l t u r a d a s
subdrvores.

O elemento r e t i r a d o deve p e r t e n c e r à
s u b á r v o r e d e maior a l t u r a . Dessa forma, g a r a n t e - s e que a
i r v o r e não f i c a r & d e s b a l a n c e a d a . Pode-se fazer essa
a f i r m a t i v a p e l e f a t o d e q u e quando s e r e t i r a um nb de uma
á r v o r e e l a pode t e r s u a a l t u r a r e d u z i d a em, no m&ximo, uma
unidade. Se o elemento r e t i r a d o f o r da s u b á r v o r e de maior
altura, pode-se a f i r m a r que a d i f e r e n ~ ae n t r e a s alturas
das d u a s s u b á r v s r e s da r a i z c o n t i n u a r & menor ou i g u a l a um.
Essa mesma a f i r m a t i v a pode s e r f e i t a ne c a s e d a s s u b á r v o r e s
terem a mesma altura. Nesse caso a escolha de que
s u b á r v o r e s e r & r e t i r a d o o elemento 6 a r b i t r á r i a .

Pelo exposto, pode-SE g a r a n t i r que nFia &


neeessirio rebalancear-se a árvore cuja r a i z f o i r e t i r a d a .
Todavia, tanto a á r v o r e da qual f o i r e t i r a d o o elemento
substituto quanto a árvore original podem ter ficado
desbalanceadas e , portanto, necessitarem s e r rebalanceadas.
Figura VX.8 : Possibilidades de s u b s t i t u i ~ ã o
d e raiz d e árvore b i n s r i a
O núcleo do sistema aperacianal, na
realidade, nao chama d i r e t a m e n t e e s s a s r o t i n a s de i n s e r e a o
e r e t i r a d a , mas s i m r o t i n a s i n t e r m e d i á r i a s que a t u a l i z a m a s
$escritores das listas ap6s chamarem essas retinas de
i n s e r ~ ã ae r e t i r a d a .

A q u e s t ã o mais complexa na que s e r e f e r e a


árvores binárias balanceadas é a m a n u t e n ~ ã a do seu
balanceament o .

MOROWETZ & SAHNE (1984) sugerem um a l g o r i t m o


de i n s e r ~ % oem á r v o r e b i n i r i a balanceada que mantem o
balanceamenko. Ocorre que também na retirada de um
e l e m e n t o da i r v a r e , e s t a pode f i c a r d e s b a l a n c e a d a . Logo,
t a n t o n a i n s e r ~ ã oquanto n a r e t i r a d a , deve-se ident i f i c a r
s e houve desbalanceamento da á r v o r e e , em c a s o a f i r m a t i v o ,
e f e t u a r o novo ba%anceamenko.

No PORTOS-TF f o i a d o t a d o um a l g o r i t m o que
s e g u e a mesma i d k i a d e a p r e s e n t a d o por Horowitr & Ç a h n i .

sri8-mo d e alaneeamento d e Arvore

0 primeiro passo de algoritmo adstada


c o n s i s t e na i d e n t i f i c a g a o d a s i t u a ~ ã ode desbalanceamento.
Par d e P i n i ~ ã o , uma á r v o r e b i n á r i a e s t á balanceada se e
somente s e s e u s d o i s f i l h o s áão r a i z e s de a r v e r e s b i n á r i a s
tambhm b a l a n c e a d a s , e u j a s a l t u r a s nzo d i f e r e m , em mádulo,
em mais de uma u n i d a d e .

Pelo f a t o do algorikrna d e i n ç e r ~ ã oe do de
r e t i r a d a de n B s da á r v o r e serem r e c u r s i v o s , g a r a n t e - s e que,
a a uetornarem de uma chamada r e c u r í i v a , a árvore suja r a i z
f o i p a s s a d a como pariimetro e s t a r á b a l a n c e a d a . Essa zirvere
p a s s a d a como parâme'cra p o d e s e r a s u b á r v o r e da d i r e i t a s u a
da e s q u e r d a , dependendo d a v a l o r d a chave s o b r e a qual se
está efetuando a opera~ão. A causa de um eventual
desbalanceamento f i c a e n t ã o r e s t r i t a & d i f e r e n ~ ada a l t u r a
e n t r e a s duas s u b a r v o r e s .

Oe acordo com o e x p o s t o no item V%. 2 , o


campo " n i v e l " da r a i z de uma á r v o r e i n d i c a a a l t u r a dessa
árvore. O a l g o r i t m o de v e r i f i c a i z ã o d e balanceamento s e
vale d o s campas " n i v e l " dos f i l h o s d a r a i z da Arvore p a r a
d e t e r m i n a r s e a á r v o r e e s t á ou não b a l a n c e a d a .

No caso da árvore estar desbalanceada,


existem duas h i p ó t e s e s : e l a e s t a r desbalanceada à direita
(isto , a a l t u r a da Arvore da d i r e i t a s e r duas unidades
maior do que à da e s q u e r d a ) ou à e s q u e r d a ( i s t o e, a altura
da á r v o r e da e s q u e r d a s e r duas u n i d a d e s maior do que à da
direita). Como o balaneeamento & verificado a cada
i n s e r e ã a ou r e t i r a d a de um n6, a v a r i a c ã o máxima na a l t u r a
de uma d a s s u b á r v o r e s 6 de uma u n i d a d e . Logo, no a l g o r i t m o
adotado, a d i f e r e n ç a de a l t u r a e n t r e duas s u b á r v o r e s não
será nunca superior a duas unidades. Como o
desbalanceamento de uma & r v s r e em um sentido pode ser
tratado de forma s i m k t r i c a ao em outro, será abordado
apenas o c a s o em que a Arvore f i c a d e s b a l a n c e a d a à d i r e i t a .

Suponha-se, então, uma Arvore "R"


desbalancoada i d i r e i t a . E s t a á r v o r e p o s s u i uma s u b á r v o r e
A e s q u e r d a "E" e uma 5 d i r e i t a " 8 " . A subárvore "D", por
sua vez, tem uma s u b S r v o r e à e s q u e r d a "DE" e uma à d i r e i t a
"DD" t f i g u r a V I . 9 ) . P a r a haver desbalanceamento i d i r e i t a ,
"R", "D" e p e l a menos uma e n t r e as s u b á r v o r e s "DE" c "DD"
s ã o n e c e s s a r i a m e n t e não n u l a s . As demais podem o s e r .

Seja, então, " h + l " a a l t u r a da a r v o r e " R " .


Logo, como e s s a á r v o r e e s t á desbalanceada à direita, a
subArvore da d i r e i t a "D" t e r á uma a l t u r a " h " e a s u b % r v o r e
da e s q u e r d a " E " uma a l t u r a "h-2". Para r e d u z i r a d i f e r e n s a
entre as alturas das subárvores "O" e "E", su
aumentar a altura d e "E" em uma unidade, pais como a
d i f e r e n ~ ae n t r e a s a l t u r a s d e " D o e "E" 4 de duas unidades
esse a u m e n t o s e r & o s u f i c i e n t e .

Figura VE.9 : E s q u e m a d e uma A r v o r e b i n s r i a


desbalanceada à d i r e i t a

Nenhum n á d e "D" p o d e s e r t r a n s f e r i d o para


"E" p o r q u e t o d o s e l e s tem c h a v e maior q u e a r a i z " R " e
sua esquerda só p o d e m h a v e r e l e m e n t o s d e c h a v e s menores.
bege, a ú n i c a e p ~ ã o& c r i a r uma n e v a á r v o r e " R i " ande a
subirvare d a e s q u e r d a "El" será formada p e l a r a i z o r i g i n a l
"R" t e n d o "E" como s u b á r v o r e d a e s q u e r d a . Coma subárvore
da direita "EiD" s e r á a d o t a d a uma s u b z i r v e r e d e "D" cuja
escolha, d a mesma f o r m a q u e " R l " , depende ainda d e o u t r o s
f a t o r e s a serem a b o r d a d o s .

%e a a l t u r a d e "Da" f o r maior s u i g u a l à d e
"DE", eentzo "B" s e r & e s c o l h i d a semo a n o v a r a i z " W 1 " t e n d o
"El" como s u b á r v o r e d a e s q u e r d a e "DD" come subárvore da
direita. A subárvore "EIB", p o r s u a v e z , s e r á a s u b á r v a r e
"DE'" f i g u r a V I . 10a) .
Figura V T . i @ : O p ~ 8 e sd e b a l a n c e a m e n t o
d a árvore d a Çigura U P . 9
Se a a l t u r a de " U D " f o r maior do que a de
"DE", e n t ã o a a l t u r a de " E l " p a s s a r i a s e r "h-1" j á q u e , da
mesma forma que " E " , a a l t u r a de "DE" também 15 "h-2" , p a i s
6 menat- d e que a de "BB" e "D" é uma árvore balanceada.
Como a a l t u r a de "DD" c o n t i n u a a mesma, então seu valor
permanece sendo "h-i". Nesse caso, a árvore "Rl"
b a l a n c e a d a de a l t u r a " h " .

Se a a l t u r a d e "DD" f o r igual i de "DE",


entâo a altura de "El" p a s s a r á a ser "h" já que "E"
continuará com a l t u r a "h-E" e "DE" com a l t u r a " h - i " , pois
não tiveram suas e s t r u t u r a s a l t e r a d a s . Cama a a l t u r a de
"DD" tambkm não s e modbSiceu, e n t z o c o n t i n u a sendo "h-i".
Nesse c a s o , a a r v o r e "81" é b a l a n c e a d a de a l t u r a " h + 1 " .

Parém, se a altura d e "a-" f o r maior do sue


a de " D D " , e n t ã o a nova r a i z "RI" e s c o l h i d a s e r á " D E " tendo
"El" coma subzirvore da e s q u e r d a e "B" come subárvore da
direita. A s u b á r v o r e "EID", nesse caso, s e r á a s u b i r v a r e
da e s q u e r d a de "DE". A nova s u b á r v o r e d a e s q u e r d a de "a"
passará e n t ã o a s e r a a n t i g a s u b s r v o r e d a d i r e i t a de "DE"
(Qigura VI.1Bb).

A a l t u r a de " E I " , e n t ã o p a s s a r á a ser "h-Y"


J á que a a l t u r a de " E " é "h-2" e a de " E L D " é "h-2" ou "h-
9" por ser i n f e r i o r a "DE", mas não mais do que duas
u n i d a d e s , uma vez que "DE" 6 uma á r v o r e b a l a n c e a d a . Como a
a l t u r a de " D D " , não mudou, c o n t i n u a sendo " h - 2 " , p a i s e r a
menor d u a s u n i d a d e s do que " D " . A s u b á r v o r e da d i r e i t a de
"DE" t i n h a a l t u r a "h-2" ou "h-3" . Lago, a a l t u r a d e "D"
passa a s e r " h - i " . Nesse c a s a , a S r v e r e " R I " é balanceada
d e a l t u r a "h".
Um sistema de computasão é composta por
vjrios mádulos de hardware e software. Por mais bem
projekades e testadas que sejam, existe sempre a
pos5ibilidade de que venham a apresentar um mau
funcionament o . Segundo ANDERSON & LEE (1P82>, em
c o n c o r d S n c i a rem MELLIAR-SMITH 8 RANDELL ( 1 9 7 7 ) , um s i s t e m a
consiste de u m c o n j u n t o de c o m p o n e n t e s que interagem de
acordo com um p r o j e t o . Componentes podem ser encarados
rumo sendo s i s t e m a s m e n o r e s , ou s u b s i s t e m a ç .

0 hardware, como q u a l q u e r e l e m e n t o fisico,


pede manifestar um comportamento e r r â n e e d e v i d a ao seu
d e s g a s t e (queima de componentes, mau c a n k a t o o u r o m p i r i e n k s
de l i g a ~ a e s , e t c . ) . Uma o u t r a c a u s a de f a l h a s no h a r d w a r e
e ' d e v i d a a seu p r a j e t o ( c o n s i d e r a - s e a implementaçao como
sendo também p r a j e t o , mesmo que de b a i x o n á v e l pois, da
mesma Torrna sue o projeto funcional, requer tomadas
d e c i s o e s (RANBELL, 1975)). O software, p o r sua vez, pode
apenas apresentar um c o m p o r t a m e n t o inadequado devido a
erros de projeto, uma v e r que é um c o m p o n e n t e l B g à c o da
%;éstema.

Termas some "falha" e "erro" estão senda


usados a t k a q u i sem nenhum r i g o r t e r m i n o l 0 g i c o pois, par
enquanto, os sentidos com os q u a i s 5 % empregadas no
c o t i d i a n o são s u f i c i e n t e 5 p a r a i n t r o d u z i r e a s s u n t a . Esses
termos serão, contudo, d e f i n i d o s farmalmente p o s t e r i o r m e n t e
neste c a p i t u l o .

Pradieionâlmente, falhas em componentes


C í s i c o s , devido ao des a s t a , têm s i d o e s t u d a d a s e t é c n i c a s
com o p r o p b s i t o d e e v i t á - 1 a ç ou t o l e r $ - - l a s p r o p o s t a s . Mais
recentemente, contudo, o e s t u d o d e f a l h a s de p r o j e t a , em
e%peci a 1 de sof t ware, vêm ganhan o aten-ão c r e s c e n t e
(AVIfIINPS o u t r o s , i9 o$ j e t i v e d e s s e t r a b a l h o
c o n c e n t r a r e s f o r - o s no e s t u d o de f a l h a s de s o f t w a r e . Não
o b s t a n t e , c o n s i d e r a ~ õ e sr e l a t i v a s a Calhas de hardware não
s e r s a d e s p r e z a d a s , mems porque, em v á r i a s % i t u a ~ 8 @ 5f a, l h a s
e s o f t w a r e não s e encontram d i s j u n t a s
p o r t a n t o , existem v á r i a s t é c n i c a s que valem t a n t a para
quanto para o u t r o t i p o .

O prejuizo ocasionada por uma f a l h a em


sistema d e som uta-%o v a r i a enormemente, de acorde com
t i p o de sua a p l i c a e g o .

Uma Calha pode s e r imper-ceptival. Caso


s e j a no s e n t i d o de não a f e t a r o r e s u l t a d o f i n a l
processamento, e n t ã o n% ser& necessário dar-lhe
importância pois, a menos e uma eventual d e g r a d a ~ ã o em
termos de tempo, e l a não t r a r a randes problemas ao
sistema. Ocorre, por&m, que a1 umas f a l h a s podem l e v a r a
r e s u l t ados e r r a o6 sem que i s s o s e j a p e r c e p t i v e l . Nesses
c a s o s , a s çan%eqU@nciaspodem s e r d e s a s t r o s a s .

Uma f a l h a pode, a i n d a , provocar a parada do


sistema d e computa~5o. 8 t r a n s t o r n a causado por e s s e t i p e
de falha pode ser, simplesmente, uma. perda de tempo
provocada pela e s p e r a a t & o c o n s e r t o do s i s t e m a ou pela
reaxecucão de um pracessamento perdido uands da ocor-rencia
da $ a l k a . xistam, cantudo, s i t u a ~ õ e sonde o s i s t e m a não
pode s e r c o n s e r t a d o , como em naves e s p a c i a i s , aeronaves em
voo, n a v i o s em a l t o mar, e t s . m s i s t e m a s de tempo-real,
por exemplo, a i n t e r r u g $ ã o do pracessamento do s i s t e m a pede
l e v a r a danos i r r e p a r á v e i s .

Observa-se com isso que,


a p l i c a ~ ã o do sistema de computa~ão, 6 de fundamental
i m p o r t â n c i a s u a c a p a c i d a d e em l i d a r com s i k u a ~ õ e sde f a l h a .
Este capitulo destina-se ao estudo de técnicas de
tolerância a falhas. Nele serão apresentadas algumas
d e f i n i g õ e s de t e r m o s e c o n c e i t o s empregados n e s s a á r e a . Em
seguida, serão estudadas algumas t k c n i c a s e mecanismos
propoatoã para t o l e r â n c i a a f a l h a s . Por fim, s e r á d e s c r i t o
s mecanismo a d o t a d o no PORTOS-TF.

A questgo da terminologia na Grea de


sistemas tolerantes a f a l h a s tem merecido a atenego de
a l g u n s a u t o r e s (MELLIAR-SMITH & R A N B E L L , 2977j ANDEWÇON &
LEE, 2.982; L A P R I E , 1985). Alegunr; t e r m a s enipregadsil n e s s a
área s ã o empregados no c o t i d i a n o com s e n t i d o muito prbximo
do proposto por esses autores. Mesmo assim, convém
apresentar uma d e f i n i c ã o Cormal dos t e r m o s mais comumente
encontradas na l i t e r a t u r a e c i t a d o s n e s s e trabalho, para
que se possa d i s c u t i r tecnicamente i d é i a s e propostas em
cima de termas amplamente a c e i t o s pelos estudiosos do
aciaun t o .

No estudo de q u a l q u e r ramo da ciência san


empregados termos q u e não s ã o de âmbito e s p e c í f i c o e 0s

t e x t o s de t o l e r s n c i a a f a l h a s não fogem a regra. Algumas


expressães se aplicam a várias outras &reas da
conhecimento, mas como s ã o fundamentais p a r a a d e f i n i e ã o e
o e s c l a r e c i m e n t o de o u t r a s e s p e c i f i c a s do tema " t o l e r â n c i a
a falhas", serão apresentadas a seguir.

O ponto de partida para s estudo de


mecanismos de t o l e r â n c i a a f a l h a s 6 a c a r s c t e r i m a e ã o de de
universo observável. Esse universo c a r a c t e r i z a - s e p o r um
sistema. Segundo ANBEWSON & LEE (1982), "qual q u e r
mecanismo identific&vel que mantenha um padrão de
compsrtamento em uma i n t e r f a c e com s e u ambiente pode ser
c o n s i d e r a d o corno um s i s t e m a " . Ainda segundo e s s e s a u t o r e s ,
"um sistema c o n s i s t e de um c o n j u n t o de componentes que
interagem sob o c o n t r o l e de um p r o j e t o . U m componente @

simp9esmente um out r o s i s t e m a " . Essa d e f i n i c ã o de


componente s u g e r e uma h i e r a r q u i a de m6dulss, onde s i s t e m a s
s ã o compostas de s u b - s i s t e m a s ( o u c o m ~ o n & n t e ~do
, p o n t o de
v i s t a do nável h i e r i r q u i e s do s i s t e m a ) . Uma i n t e r f a c e é o
local onde ocorrem a s interacões entre dois sistemas.
Desta forma, o b s e r v a - s e sue tamk%m a ambiente & um s i s t e m a .

Um sistema d i t a "at6mico" 6 aquele sujos


detalhes internos não sgo da interesse do estudo em
quest %o. Por exemplo, no projeto de um computador
tolerante a falhas, mecanismos devem s e r s u p r i d o s d @ forma
a e v i t a r que um c i r c u i t o i n t e g r a d o a o queimar f a ~ acom que
o computador deixe de operar. Nas interessa aos
p r o j e t i s t a s do computador (mesmo porque e l e s g e r a l m e n t e não
podem) e v i t a r ou mascarar a queima do c i r c u i t o integrado.
Dessa forma, e s t e c i r c u i t o i n t e g r a d a , que 6 um componente",
c o n ç t i t u i - s e em um " s i s t e m a atomico" p a r a o s p r o j e t i s t a s do
computador. Esse conceito de s i ç t e m a s a t 6 m i c o s muito
importante na e s c o l h a da n i v e l em que s e p r e t e n d e tolerar
falhas. OB componentes desse nível devem, pois, ser
c o n s i d e r a d o s a t 6 m i c o s , no s e n t i d o o r a d e f i n i d o .

As m a n i f e s t a ~ õ e se x t e r n a s de u m s i s t e m a s ã o
canseqgencia de sua a t i v i d a d e i n t e r n a . Se a s i s t e m a não é
atâmico, então essa atividade pode ser investigada e
manipulada. Dessa forma, @ poãsivel inserir mecanismos
c a p a z e s de e v i t a r que f a l h a s em componentes impliquem em um
comportament o inadequado d a s i s t e m a .
V P I . 2 . ê . Termos speci+'icos:

Alguns termos vem sendo empregadas nesse


t e x t o sem nenhum r i g o r e i e n t i f i c o , como por exemplo " f a l h a "
e "erro". Apesar de s e u s s i g n i f i c a d o s não serem t o t a l m e n t e
estranhes aos leigos, é necessário formalazar-se uma
definicão d e s t e s e de mais a l g u n s o u t r o s p a r a que s e p a s s a
efetuar um estudo que não deixe margem a más
interpreta~ães.

Há três termos muito l i g a d o s 21 q u e s t g o de


mau funcionamento de s i s t e m a s . Çãe e l e s : falta, Talha e
erro. D i v e r s a s t e x t o s p r o p õ e s def i n i ~ õ e sp a r a e l e s , como
RANBELL, L E E & TRELEAVEN ( 1 9 7 8 ) , h N B E R S B N & K N I G H T ( 1 9 8 1 ) ,
ANBERSON 8 LEE ( 1 9 8 2 ) e L A P R P E ( 1 9 8 5 ) . A s d e f i n i ~ B e s ora
a p r e s e n t a d a s s % s b a s e a d a s n a s propost a s por MELLI AR--SM%TH &
RANBELL (15'77):

.uma falha acorre em um sistema quando seu


comportamento e ~ t e r n n não ti B prevista em sua
espeeif isa-ão.

um s i s t e m a a p r e s e n t a um e r r o quando, a menos que s e j a


tomada uma a t i t u d e c o r r e t i v a , poder& o c o r r e r uma
f a l h a e u j a s c a u s a s s ã o a n t e r i o r e s ao a.parecimento
do erro (mesmo que este não tenha sido
detectado).

.uma f a l t a & um d e f e i t o que l e v a a um e r r o no s i s t e m a

Quando um componente a p r e s e n t a uma falta,


esta poderá f a z e r com que e l e falhe. Quando o estado
e x t e r n o de um ou mais componentes de um s i s t e m a tem que s e r
modificado p a r a q u e o e l e e s t e j a em um e s t á d o v & l i . d e , isto
6, de a c o r d a com a s e s p e c i f i c a e 8 e s , d i z - s e s u e há um e r r o
no sistema. Os e s t a d o s d e s s e s componentes s ã o e r r a s de
sistema. O estado de um d e s s e s componentes pode ser
r e s u l t a d o d e uma f a l h a do componente causada por uma Calta
interna a e l e . Mas nem sempre e s s e e s t a d o , que c o n s t i t u i
um e r r o p a r a o s i s t e m a r e p r e s e n t a uma f a l h a de componente.
Nesse c a s o , a Palha é da p r o j e t o . Conclui-se, p a i s , que um
sistema e n t r a em um e s t a d o de e r r o sempre sue houver uma
falha em um s u mais d e s e u s componentes ou no p r o j e t o .
Esse e r r a pode l e v a r à f a l h a do s i s t e m a . Assim, como
e n c o n t r a d o em ANDERSON R L E E ( 1 9 8 2 ) "uma f a l t a é a c a u s a de
um e r r o e um e r r a 6 a c a u s a de uma f a l h a " .

Qualquer sistema em operagzo tem a


probabilidade ( t e b r i c - a ou v e r i f i c a d a na p r á t i c a a t r a v é s de
observações) de não ã e comportar conforme especificado.
Existe uma s k r i e de t e r m o s , s u e tem s i d o definidos por
v i r i o s a u t o r e s (RANBELL, LEE & TRELEAVEN, 1978; LRPWIE,
1785) que s ã o empregados na a v a l i a c ã o d e s s a p r o b a b i l i d a d e .
A s e g u i r s e r ã o a p r e s e n t a d a s algumas d e f i n i ~ õ e s :

eonfiabilidade (do inglgs " r e l i a b i l i k y " ) é a medida


do tempo c a n t á n u s em que o s i s t e m a s e mantkm em
a p e r a c ã o atendendo à s u a e s p e e i f i e a ~ ã a , d e s d e o
i n i c i o d e sua u t i l i z a ~ ã o .

.dispeni$ilidade (do ingiBs "availability") é a


porcentagem da tempo t o t a l em que o s i s t e m a o p e r a
d e a c o r d o com s u a e s p e c i f i c a ç ã s .

F ( d e i n g l ê s "Mean Time Between Failures"), ou


Tempo Médio E n t r e F a l h a s , & o valor média dos
i n t e r v a l o s de tempo no5 q u a i s o s i s t e m a permanece
em o ~ e r a c % o
seguindo sua e s p e c i f i c a ~ ã o .

(do i n s l c s i "Mean Time To Wepair"), ou Tempo


Médio de Reparo, & a v a l o r média d a s intervalos
d e tempo nos q u a i s a s i a t e m a não o p e r a d e acordo
com s u a e s p e c i f i c a ~ ã o .
A disponibilidade de um sistema indica o
quanto se pode contar com ele: por exemplo, sistemas com
disponibilidade perto de 180% (cem por cento) estao quase
sempre em operacão adequada, enquanto que, à medida que
esse valor diminui, fica cada vez mais difisil poder
utilizar o sistema para os fins que foi projetado. A
dispenibilidade pede ainda ser calculada pela seguinte
expresbjão:

Quanto maior o tempo médio entre falhas de


um sistema maior sua disponibilidade. Ao contrário, quanto
maior f o r Q tempo mkdio de reparo, i s t o 4, quanta mais
tempo levar para um sistema ser "consertado", menos
disponível ele ser&.

Sistemas altamente disponíveis (isto & , com


disponibilidade prbxima de i @ @ %são) bastante aceitáveis,
mas existem alguns casos ande uma interrup~ao em sua
o p e r a ~ ã o pode implicar em grandes perdas. Um sistema de
distribuicão de energia elktriça de uma cidade deve
apresentar uma disponibilidade muito elevada, mas casa haja
uma falta de luz por um pequena período de temps (MTTR
baixa) este será tolerado. J& no caso de uma sonda
espacial, como citada em POWEkb & BESWARTE (198%), uma
interrup~ãono funcienamenta de um dos sistemas de controle
d a sonda pode significar o PEm da missão, implicando na
perda de virias milhões de dolares. Nesses casos não basta
que o sistema seja altamente disponível. Ele deve ser
muito ssnfiável. Para aumentar a confiabilidade de um
sistema suas falhas devem ser tratadas de forma a evitar a
ocorrSncia de erres. A seguir serão estudados os tipos de
tratamentos de faltas, erros e Çalkas.
LOQUES & K R A M E R (1986) a p r e s e n t a m a s e g u i n t e
c l a s s i f i c a ~ ã od e s i s t e m a s q u a n t o à i n f l u ê n c i a q u e uma f a l h a
em um d e s e u s m ó d u l o s tem s o b r e a c o n f i a b i l i d a d e g l o b a l :

aixa Dependgncia a Falhas: O projeto desse tipo de


sistemas garante que, mesmo que um de seus
módulos a p r e s e n t e uma f a l h a , a s i s t e m a csms um
tode preservar& sua confiabilidade, mesmo que
p a s s e a o p e r a r c o m um d e s e m p e n h o d e g r a d a d o .

Alta D e p e n d ê n c i a a F a l h a s : Nessa c l a s s e d e s i s t e m a s ,
a confiabilidade como um t o d o nao se rnant&m
quando ocorre uma f a l h a em um módulo. Dessa
forma, se um d o s m h d u l o s d o sistema falha, o
sistema i n t e i r o t a m b e m 7 a l h a .

V E I . 3 . G l a s s i f i c a ~ ã od a s F a l h a s :

Um sistema p o d e f a l h a r d e v á r i a s maneiras.
D e p e n d e n d o d o m o d o coma n ã o o b e d e c e à s u a e s p e s i f i c a $ % o , s
sistema p o d e c a u s a r d a n a s d i v e r s o s . A forma de t r a t a m e n t o
de falhas de um componente ou d e um sistema 6 muito
dependente do tipo da falha. CRZSTPAN t3 outras (1985),
propuseram a s e g u i n t e c l a s a i f á c a q ã o de f a l t a s :

. f a l h a s p o r amissãoj
.f a I h a s d e tempo e
.ialhas bizantinas.

Quando um componente nunca responde a um


p e d i d o o u toma a l g u m a a ç z o , diz-se t r a t a r d e uma f a l h a p o r
omisaão. Este 6 o caso, por exemplo, em um ~isterfla
d i s t r i b u í d a , em q u e u m p r o c e s s o c l i e n t e q u e f a z um p e d i d o a
um p r o c e s s o s e r v i d o r q u e e ã t i em uma e s t a ~ ã oq u e n ã o está
ligada. Caso nãa h a j a n e n h u m a t e m p o r i z a ~ ã a , s c l i e n t e i r á
esperar eternamente pela resposta. Esse t i p o de falha
kambhm 6 conhecido como f a l h a do t i p o " f a i l - s t o p " (POWELL,
1'?'8CJ>.

Bcorrem s i t u a ~ Q e s em que, apesar do


componente f o r n e c e r o s e r v i ~ oda forma como eapecifieado,
isto é f e i t o f e r a do i n t e r v a l o de tempo desejado. Uma
eventual sobrecarga do meia de comunicasão ou uma falha
intermitente pode causar um atrasa intolerável em um
sistema. De forma inversa, um r e l ó g i o c u j a freqUência
esteja acelerada em r e l ã ~ ã oa o s demais do sistema pode
precipitar, p o r exemplo, a e x p i r a ~ ã od e um tempo d e e s p e r a
fazendo que o p r o c e s s o que aguardava o servica inicie,
impropriamente, um procedimento de t r a t a m e n t o de f a l h a . A
e s s e t i p o de f a l h a s , dS-se o nome de f a l h a s de tempo.

O t e r c e i r o e de mais d i $ % c i l t r a t a m e n t o t i p o
se refere a falhas bizantinas. Nesse grupo e ç t a o a s f a l h a s
que +ornecem s e r v i ~ o s dentro do intervalo de tempo
d e t e r m i n a d o , mas com uma forma i n d e v i d a . U m a l g o r i t m o que,
a p a r t i r de uma e n t r a d a v % l i d a a p r e s e n t e come r e s u l t a d a uma
ãaida i n v á l i d a é d i t a e x i b i r uma f a l h a b i z a n t i n a . Falhas
b i z a n t i n a s tgm a s mais d i v e r s a s o r i g e n s . Podem s e r d e v i d o s
desde f a l t a s em componentes de hardware a t e int erferzneia
eletromagnktica, passando por e r r o s d e projeto. Falhas
b i z a n t i n a s são a forma mais g e r a l de f a l h a s .

Q termo " b i z a n t i n a " tem a v e r com a a n a l e g i a


relativa ao problema de e o o r d e n a e s o de g e n e r a i s b i z a n t i n o s
no comande de v á r i a s d i v i s ã e s acampadas a o r e d o r de uma
cidade inimiga (MALTER, KIECKHAFER & FINN, $985). 85
generais deveriam tamar d e e i s g e s d e a t a c a r ou recuar de
acordo com à n f o r m a ~ õ e s $orneci d a s pelos demais. Coma
alguns d e l e s eram k r a i d o r e s , pediam Çornecer infarma~ões
d i f e r e n t e s , c e r t a s ou e r r a d a s , p a r a g e n e r a i s d i f e r e n t e s . O
problema consiste, então, em c o n s e g u i r tomar a s d e c i s õ e s
c o r r e t a s a p a r t i r da s u p o s i ~ ã od e que algumas d a s mensagens
recebidas poderiam e s t a r e r r a d a s de forma completamente
W agrupa a s f a l h a s por omissão e
falhas de tempo em uma mesma c l a s s e a qual denomina f a l h a s
"no dominis do tempo", enquanto as falhas bitantinas
constituem f a l h a s "no domínio d s v a l o r " .

amo v i s t o anteriormente, a existência de


f a l t a s em componentes ou no p r o j e t o podem c a u s a r e r r o s no
s i s t e m a que podem l e v a r a sua f a l h a . Dessa forma, + a l t a s
erros e f a l h a s devem s e r t r a t a d a s d e forma a aumentar a
c o n f i a b i l idade do s i s t e m a .

Há duas formas t r a d i c i o n a i s d e se c o n s t r u i r
sistemas altamente sonfiáveis (ANB
prevencão d e f a l t a s ou t o l e r â n c i a a faltas. A primeira
e s t r a t é g i a c o n s i s t e g n g a n t i r que o ~ i ~ t e mnão
a contkm nem
c o n t e r á f a l t a a1 uma. Já em t é c n i c a s de t o l e r â n c i a a
f a l t a s ou, como & mais comum e n c o n t r a r , t o l e r â n c i a a
falhas, assume que podem haver f a l t a s no i s t e m a , ou s e j a ,
falhas nos componentes ou no p r o j e t o .

Em procedimentos d e pr@ven$ão de faltas,


d o i s pontos devem s e r observados: e v i t a r , em um p r i m e i r a
p a s s o , a i n t r e d u c ã o d e f a l t a s e , em uma e t a p a p o s t e r i o r ,
remover a s f a l t a s que porventura não tenham s i d o evitadas
na primeira etapa. A u t i l i z a ~ ã ode componentes da maior
qualidade, l a b a r a ~ ã o das t é c n i c a s da intereonexão de
elementos e cuidados com o encapaulamento d o hardware com a
v i t a r i n t e r f e r ê n c i a e l e t romagnkt i c a
bem como a a p l i c a - s e
1, de
e desenvolvimento de p r o j e t o (ANDE
m que sejam diminuídas as f a l t a s do s i s t e m a .
Na área de en e n h a r i a de aoftware, técnicas de
especificacSo formal tgm sido tambám empregada%. Pode-se
citar como exemplo a especifica~ãoformal de protocolos.
Posteriorment e , atravas de procedimentos de teste e
validaeão, o sistema é depurado ainda mais.

Bcorre, porkm, que, por mais cuidado que se


tenha no projeto, implementa~ãoe teste de um sistema, isso
não garante a eliminacão total da exist@ncia de Saltas. Em
RANBELL, LEE & TRELEAVEN (187'8), em uma c i t a ~ ã a de
Avizienis, 15 mencionado que "falhas ocasionais do sistema
são aceitáveis çoms um mal necess&rio, e a manutenc%o
manual é empregada para sua c o r r e ~ ã o " . Logo a seguir,
neste mesmo texto, os autores sustentam que " h & diversas
situaeBes nas quais a prevencão de faltas claramente não i3
suficiente". Segundo ANBEWSON & LEE (1982), tecnicas de
tolerância a falhas " s ã o necessárias porque sistemas
complexos certamente contkm faltas residuais apesar da
a p l i e a ~ ã oextensiva de preveneão a Caltas". Nos casos ande
ngo possa haver reparos ou onde o tempo gasto nessa
atividade seja proibitivo, deve-se poder conviver com as
faltas de forma a manter alta a confiabilidade do sistema.

Mecaniãmos de tolerância a Calhas não


precisam necessariamente diagnosticar a causa da falha, nem
mesmo decidir se ela foi devida ao Aardware ou ao sofkware
(RANDELL, 3.5'75 ) .

rincápios de Sistemas Tolerantes a Falhas:

A maioria dos projetas existentes de


sistemas tolerantes a falhas partem de tr@s asçert ivas
(WANBELL, LEE & TWELEAVEM, 1978; LOQUES & I<WAMPR, 198á):

. q u e o projeto est& correto, isto 6 , que não há nenhum


algaritmo errado, seja na especifieac3o ou na
implementaeão. Um módulo só poderá entrar em
f a l h a por o u t r a s r ã r ã e s , esmo f a l h a s de k a r d w a r e ,
p a r exemplo.

.que o e r r o c o n f i n a d o na mhdula, i s t o é, s e houver


f a l k a em um mbdulo e s s a f a l h a não s e r á propagada,
v i a mensagens, p a r a o s d e m a i s .

6 c o n f i & v e l , ou s e j a ,
que a s u b s i s t e m a de c o m u n i c a ~ % o
que não há como uma mensagem ser recebida
degenerada em um mbdulo. Caso ocorra a
degeneraqão da mensagem d u r a n t e s u a t r a n s m i s s ã o ,
s subsistema de eamunica~ão s e r á capar de
restaurá-la ou d e s c a r t s - l a t o t a l m e n t e .

Neste momento, c a b e uma melhor d e f i n i ~ ã sdo


que s e e t j chamando d e "mc3dulo". M6dule é um componente d e
software independente ( p r o c e s s a ) que s e comunica com os
demais através de interfaces bem definidas. Essa
independência entre os mbdulos p e r m i t e a aplicaqao de
técnicas de tolersnciã a falhas que garantam a
ronfiabilidade de s i s t e m a . Não há dadas compartilhados
pelos módulos . A eomunicaqão entre eles se dá
e%slusivamente por t roca de mensagens. Todas as
r e f e r & n c i a s são locais. Um sistema carnposto pela
intereonexão de módulos, l i g a n d o - s e p o r t o s de entrada a
portas de saida (vide capitula EU). Essa eonfigurag%o
ica t o r n a p a s s i v e l a r e c e n f i g u r a ~ ã odinâmica do s i s t e m a
sem que o s m6dulos s e apercebam d i s s o . C o n f i g u r a ~ ã o , ou
recon-k'igura~ão, dinSmica 6 a c a p a c i d a d e de se mudar a
c o n f i g u r a ~ ã ode s i s t e m a ( c r i a r e e l i m i n a r p r o c e s s o s , ligar
e d e s l i g a r p o r t o s ) com e l e em e x e e u c ã o .

A p r i m e i r a d a s h i p ó t e s e s d e s c r i t a s pode ser
alcancada atravtis da uso de t k c n i c a s e Serramentas de
engenharia de s o f t w a r e . P r o v a s f o r m a i s tambem podem ser
f e i t a s , embora i s s o s e j a multo c u s t o s a . A segunda h i p b t e s e
depende dos mecanistiios de deteccãa de erros de cada
eãta-ão. O b a i x o c u s t o do kardware p e r m i t e a duplicaeão
dos p r o c e s s a d o r e s que, então, t r a b a l h a m em um esquema de
verifieacZo mMtua. Cem rela~ãa terceira hipótes,
protocolos de comunicação bem definidos e retas
alternativas implementam um subãistema de camunica~ãa
confiável.

Apesar de desejáveis, as duas primeiras


h i p b t e s e s nem sempre podem s e r a t e n d i d a s . Existem t é c n i c a s
de tolerância a falhas que não assumem essas duas
kipbteses. objet ivo d e s t e t r a b a l h o r e l a c i o n a r algumas
das t k c n i c a s que lidam com e r r a s de p r o j e t o impedindo ou,
p e l o menos, l i m i t a n d o s u a propagação p a r a o u t r o s mhdulos do
sistema.

Já a terceira pode ser mais facilmente


aleancada, uma vez que ( i ) s e o s p r o c e s s o s comunicantes s e
encontram na mesma e s t a ~ ã o , e n t ã o não poderá haver falhas
na comunicaeão ( c a s o ocorram, serão devidas a f a l h a s no
hardware da e s t a c ã o que c e r t a m e n t e i m p l i c a r a o em falhas
internas no processamento dos mbdulos, censtituindo-se,
assim, em prablemas r e f e r e n t e s ao confinamenta do e r r o ) e
(2) s e e s t z o em e s t a ç ã e s d i f e r e n t e s , então, a carnunáca~ão
entre eles poderá s e r f e i t a atrav6a de protocolos que
imbutem técnicas de detec~aa e correçh de erros de
camunisacao. Essa é uma á r e a muito i n t e r e s s a n t e e vasta
mas f o g e ao escopo d e s t e t r a b a l h o .

Uma o u t r a abordagem quanta à e s t r u t u r a ~ ã od e


sistemas t o l e r a n t e s a f a l h a s 6 a apresentada par MELLIAR-
SMPTH & RANDELL (1977). Esses autores sugerem quatro
e t a p a s que, cumpridas em c o n j u n t a , garantem a t o l e r â n c i a a
falhas;:

. d e t e c e ã o do e r r o ;
. d e l i m i t a ç ã o do dano causado p e l o e r r e ;
. r e c u p e r a ~ ã odo e r r o e
O primeiro passo em uma estrutura de
tolerância a f a l h s s 4 a d e t e c c ã o do erro. Isso ocorre
através de algum teste de c o n d i ~ ã a numerica ou do
esgotamento de uma c l á u s u l a de tempo. h s e g u i d a deve s e u
determinada a extensão d o s danos c a u s a d o s p e l e erro ao
sistema. Nesse p o n t o , B e r r o deve s e r r e c u p e r a d o . Essa
recuperacão s e dá, normalmente, a t r a v e s da r e s t a u r a ~ ã ode
um e s t a d o c o r r e t o a n t e r i o r ao e r r o ou p e l a i d a a um estado
prevaamente d e f i n i d o para e s s a s i t u a ~ s o . Uma v e r e s t a n d o
novamente o s i s t e m a em um estado sorreks, resta agora
evitar que a f a l t a c u j o e f e i t o levou a s i s t e m a ao estado
erreneo o c o r r a novamente, l o g o em s e g u i d a . Isso 4, em
geral, a l e a n ~ a d oa t r a v é s da r e p a r a ~ % o
do módulo C a l t o s o e
da r e e o n f i g u r a e ã o do s i s t e m a .

V I I . 6 . Técnicas d e T a l e r â n c i a a F a l h a s :

Segundo C A M P B E L L , ANDERSCIN & WANDELL ( 1 9 8 3 ) ,


um s i s t e m a t o l e r a n t e a f a l h a s é c s n f i á v e l na medida em que
f o r n e c e s e r v i ~ o sque atendem à s s u a s e x p e c i f i c a c a e s , mesmo
que ocorram Talhas internas ou que contenham erros
intrinsecos. De a c o r d o sem LOQUES, K R A M E R 8 A N E D B ( 1 9 8 8 ) ,
t o d a s a s t é c n i c a s que p r o v ~ mt o l e r â n c i a a Calhas baseiam-se
em alguma forma de r e d u n d a n c i a . Em termos de redundancia
de s a f t w a r e , nao b a s t a haver r e p l i c a c ã o d a s programas, mas
tamkdm redundancia ne projeto (RANBELL, 1975). Essa
r e d u n d â n c i a pode s e r c l a s s i f i c a d a , de $arma g e r a l , em duas
categorias:

. r e d u n d â n c i a temporal e
. r e d u n d â n c i a de r e c u r s o s .

A p r i m e i r a d e l a s b a s e i a - s e na r e p e t i ~ a o d a
atividade que f a l h o u . J& a segunda s e v a l e de um número
extra de r e c u r s o s desempenhando a mesma funcão de forma a
que, s e um f a l h a r , o s demais a i n d a s e r ã o c a p a z e s de p r e v e r
s s e r v i ~ oe s p e c i f i c a d o .

A deteceãe da ocorrência de uma falha


baseia-se na execuq.20 de algum t e s t e de conformidade ou
através da e x p i r a ~ ã ode alguma e l a u s u l a de tempo ( " t ime-
out") .

U I P . 6 . 1 . T é c n i c a s de edundsncia T e m p o r a l :

Ç i s t emas assincronos são c o m p ~ sot s de


e l e m e n t o s c u j e s f l u x o s de o p e r a ~ ã osZo independentes, mas
que podem e v e n t u a l m e n t e i n t e r a g i r e n t r e s i . F a l h a s em um
componente de um s i s t e m a a s s i n e r o n e podem c o n t a m i n a r a l g u n s
dos demais. Esse tema tem merecido a a t e n ~ ã o d ê alguns
a u t o r e s (BELLQN & ÇAUCIER, 198%; K Q K A W A & Ç W I N G A I , 15'8%).
A c a n t a m i n a ~ ã aa c o r r e p e l e f a t o dos componentes i n t e r a g i r e m
entre s i . Essa i n t e r a ~ ã a , c o n t u d o , não 6 t o t a l , z s t o 6 ,
n50 ocorre entre todos os componentes nem, tampouco,
d u r a n t e t o d o o tempo.

Um grupo de componentes pode i n t e r a g i r e n t r e


si mas não f a z ê - l o com o s d e m a i s . Dessa i d é i a surgiu o
c o n c e i t o de " a ~ ã oatBmica". Segundo ANDERÇBN & LEE (9981),
"a a t i v i d a d e de um grupo de componentes c o n s t i t u i uma -cão
atgmica s e não h á i n t e r a ç a e s e n t r e e s t e grupo e o r e s t o do
sistema d u r a n t e o tempo em que s e d e s e n v o l v e a a t i v i d a d e " .
O s i s t e m a a p r e s e n t a um e s t a d o bem d e f i n i d o na entrada de
uma aqão a t a m i c a e o u t r o na s u a s a i d a . Apesar d e haver
e s t a d o s i n t e r m e d i z i r i o s , e s t e s não precisam s e r c o n s i d e r a d a s
pelo s i s t e m a como um t o d a . A s t k c n i c a s de tslerSnçia a
f a l h a s b a s e a d a s na d e t e c c ã o e r e c u p e r a ~ ã sd e e r r o s atuam no
interior de a c ã e s a t h n i c a s r e s t a u r a n d o o e s t a d o em que se
encontrava o sub-sistema, a n t e s d e s t e i n i c i a r a ac%o, ou
eskabelecendo-lhe um novo estado consistente.
ãt 6micas da1 imitam a ropagaeão de erros causa
csmunica~ão entre processos e, portanto, provEam e
confinaments do erro.

A constru~ãode sistemas assincronos cujas


atividades estejam estruturadas em a ~ õ e satsmicas 4 de
fundamental importância na elaberaçao de t6cnieas de
tolerância a falhas nesses sistemas. CAMP RANUELL
õem dois principias para a estrutura-ão de
sistemas assincrones tolerantes a calhas:

2. As opera~ãesexecutadas por um sistema assincrono


tolerante a falhas devam ser implementadas atrav&s de
~~6662s
at0micas.

2. lado e qualquer procedimento de tolerância a falhas


deve estar l i ades a uma determinada acgo atomica e
deve envolver todos os seus com~enentas.

Sistemas são, via de re ra, estruturados de


forma hierárquica. Um sistema & Cormado de componentes,
que sao sistemas menores também formados da componentes, e
assim por diante, ate che ar-se ao nível de circuitos
eletrsnisos em um "ehip". Um sub-sistema, ou componente,
deve prover s e r v i ~ a s sonfiáveis ao sistema que compõe.
essa forma, procedimentos de toler2ntzi.a a falhas evocados
na recupera~ãode erros internos a uma a ~ ã oatsmica de um
componente devem ser transparentes para o sistema. Um
sistema tolerante a falhas pode ser analisado, e n t k , em
cada um das seus n á v e i s de abs ra"ã~ (RANDELL, b

m um sistema, durante a e x e e u ~ ã ode uma


a-ãa atomica, pode ser evocado B s e r v i ~ a e um componente
ue, por sua vez, é também estruturada em a-Bes atomicas.
A essas últimas chama-se de "a
E e s p e r a d o de t o d a s i s t e m a que e l e t e n h a um
camportamento que siga suas expecifica66es. Quando 6
detectado u m d e s v i o n o f l u x o n o r m a l do p r o c e % s a m e n t o , uma
das formas de c o r r i g i - l o 6 levantar (ou sinalizar) uma
exce~ão. E s s a e x c e q g o i n d i c a um c e m p o r t a m e n t o e K c e p c i o n a 1
do sistema. H5 v i i r i a s t i p o s d e e x c e ~ õ e sem um sistema.
Cada t i p o e s t á l i g a d a a uma c a u s a d i f e r e n t e . Pode-se c i t a r
como e x e m p l o s de s i t u a c 8 e ã e x c e p c i o n a i s a queda de f o r c a em
uma e s t a ~ a o , a v i o l a q . % a d o e s p a c e de memória d e s t i n a d a a um
procesrz,~ ou, ainda, q u a l q u e r o u t r a c o m p o r t a m e n t o que f u j a
i s c o n d i ~ B e sn o r m a i s de s p e r a G ã o d o s i s t e m a . L i g a d a a cada
tipo d e e x c e p ã o d e v e e x i s t i r uma r o t i n a d e tratamento
excec%e. Essa r o t i n a a c i o n a d a sempre que f o r l e v a n t a d a a
excesão a e l a associada. E l a t e m cama p r o p b s i t a e f e t u a r aã
opera~ões pertinentes, que variam de acordo com o
s i g n i f i c a d o da e x c e ~ ã a .

As t B c n i e a s de t o l e r s n c i a a f a l h a s baseadas
em r e c u p e r a ç : ã o de e s t a d o s u t i l i z a a m p l a m e n t e mecanismos de
excecão. CRIÇTJAN (L982) preocupa-se em d8stingUir a
d e f i n i ~ ã s de e x e e c õ e s como mecanismos de m a n i p u l a ~ ã a de
s i t u a ~ 8 e ç excepcionais e de e r r o d a q u e l a empregada por
alguns a u t o r e s como f a r m a de e f e t u a r p r o c e d b m e n t oç ext raç
durante a e x e c u c ã o d e um p r o c e d i m e n t o de a c o r d o com sua
especifi c a ~ ã o .

Cl q u a d r o d e a t i v i d a d e de um m ó d u l o t o l e r a n t e
a f a l h a s pode s e r i l u s t r a d o p e l a f i g u r a ( V I I . l ) , c o p i a d o de
CAMPBELL & RANBELL (1983):

O esquema d a f i g u r a ( U T I . 1 ) r e p r e s e n t a bem o
sue ocorre em um componente t o l e r a n t e a falhas de um
sistema eam vários niveis de abstra~ão. Cada nivel
desempenha uma 7 u n ~ ã o , de a c o r d o com sua especifica-:o.
Esse nivel fornece s e r v i ~ o sa o n í v e l superior mediante
s ~ l i c i t a ~ ãd a
este. Da mesma f o r m a , obtém s e r v i 6 0 5 do n i v e l
a b a i x o m e d i a n t e um p e d i d o a e l e .

Pedido do Resposta ao ~ i n a l i z a ~ ã o 5inalização


n í v e l n-I n í v e l n-I de exceçao
- de exceção
de interface de falha
para o para o

operaçao

( ~ o l e r â n c i aa f a l h a s
A T I V I D A D E NORMAL
por tratamento de

levantadas

Pedido ao Resposta do Sinalização Sinalização


n í v e l n+l n í v e l ncl de
-
exceçao de exceçao
-
de interface de falha
do n í v e l n+l d o n í v e l n+l
Figura V1E.I : Componente i d e a l t o l e r a n t e a f a l h a s

Quando ocorre alguma falha durante o


processamento normal, CJ componente l e v a n t a uma exceGãa.
Como forma de atendimento a e s s a exceeão, o componente
passa a e x e c u t a r um procedimento d i t o excepcional . Esse
procedimento tem por o b j e t i v o t e n t a r r e c u p e r a r a f a l h a
detectada que causou a excecão. Caso isso não seda
possivel por algum motivo, resta apenas ao componente
a v i s a r ao n í v e l imediatamente s u p e r i o r ao s e u . Esta, por
sua v e r , devera tomar a s p r o v i d ê n c i a s c a b i v e i s para t o l e r a r
a falha sinalizada pelo nivel i n f e r i o r . Caso não c o n s i
s i n a l i z a para o n i v e l s u s g e r i o r e assim por d i a n t e . Como
não h á i n f i n i t o s n i v e i s s u p e r i o r a s , observa-se, e n t ã o , que
e s s a c a d e i a d e s i n a l i z a ç & tem que t e r m i n a r em algum nivel
( o nbvel mais e l e v a

RANDELL (i6831 propzem a


ut i l i z a ~ ã o de uma "árv Quando o
imento de t r a t a m e n t o de e x c a c ã a d e um determinado
nivel não conseguir t r a t a r a f a l h a , e l e entao s i n a l i z a o
seu " p a i " e assim por d i a n t e , atB sue chegue à r a i z da
á r v o r e . Nessa r a i z 6 colocado um rocedimento bat izado por
e s s e s a u t o r e s como procedimento de " e x c e ~ ã ou n i v e r a a l " ,

Arvores d e e x e e ~ ã otem também o propbsbto de


1i d a r com e x c e ~ õ e s simultâneas. Quando ocorra o
levantamento de duas e x e c e ~ ã e s "irmãs", & de pranto
acionada o procedimento r e l a t i v o ao n B " p a i " .

Coma foi posisivel o b s e r v a r , sa uma a-ãa


at8mic.a não puder t r a t a r s u a s p r g p r i a s f a l h a s , ela
s i n a l i z a r uma e x c e ~ ã o . Uma acão atêmica que não csn
t e r m i n a r c a r r e t a m e n t e nem s i n a l i z a r uma xce-i?io não 4
tolerante a falhas.

Uma vez detectado um erro, providEncia~


devem s e r tamadas no s e n t i o d e c o n t g - l o e c o r r i g i - l a . Há
uas t k e n i c a s , eon e c i d a s na l i t e r a u r a , que s ã o empre
com e s t e prop6sitõ: "backward e r r o r recovery" a "farward
error recovery". Segundo CAMP
t é c n i c a de "backward e r r o r recover3" r e s t a u r a um e s t a d o do
s i s t e m a a n t e r i o r à manifestacão da f a l t a , Já a t é c n i c a de
"forward e r r o r recovery" se preocupa em i s o l a r ou c o r r i g i r
acificos e 4 executada no e s t a d o do sistema na
sua1 s e manifestou o e r r a .

Uma forma s i m p l e s de s e d e l i m i t a r o a l c a n c e
um e r r o é c o n s i d e r a r s u s p e i t o s t o d a s o s passos executados
dentro da ac%o atomica na qual foi detectado. Como
eonseqUência, o p r ~ c e ~ s a m e n teef e t u a d s a t é e n t ã o , d e n t r o da
acão atomira deve s e r d e s c o n ç i d e r a d o .

A thcnica de er-ror reeove


NDELL, LEE LEAVEN, 197 ANDELI-, 18
c o n s i s t e na r e k r a a ~ ã ode um ou mais processos, envolvidos
na acão atomica, a t e um e s t a d o a n t e r i o r ao e r r o .

xiãtem v á r i a s t é c n i c a s de recupera"o de
erro par r e t r o a c ã o ("backward errar recsvery"). Nessa
s e ~ $ i s , s e r ã o a p r e s e n t a d a s algumas d e l a s , a s a b e r : t 6 c n
a s s i v a ( " h e t stand-by" e "cold stand-by")
ao ("recovery

Técnicas de redundância passiva


caracterizam-se por a p r e s e n t a r um dos módulos redundantes
em a t i v i d a d e enquanto o s demais Cicam aguardando. Quando
a c o r r e uma Calha nesse mbdulo, e n t ã o um d e n t r e o 9 demais é
a t i v a d o de forma a s u b s t i t u i r o f a l t o s o . Essa s u b s t i t u i ~ ã o
a t r a v é s da r e p e t i ~ ã ode todo ou, p e l o menos, p a r t e
roeessamento realizado e l o módulo f a l t o s o . Dai parque
e s t a t é c n i c a s e e n c o n t r a na c l a s s e de r e d u n d â n c i a t e m p o r a l .
Tecnicas de redundzncia a t i v a , que estas na classe de
r e d u n d â n c i a de r e c u r s o s , s e r ã o d i s c u t i d a s o p o r t u n a m e n t e .

Em sistemas d i s t r i b u i d o s , as réplicas sao


especificadas para execução em estacãeç diferentes da
original, uma ver que uma f a l h a no hardware onde e s t a o
mhdulo o r i g i n a l pode l e v a r t o d a a e s t a ç ã o a s c o l a p s o . Essa
forma de r e d u n d ã n c i a r e s o l v e q u e s t ã e s de f a l h a s de tipo
"fail-step" ( v e r item V E P . 3 ) , ou s e j a , f a l h a s sue provocam
a interr-upcão da execuqão do módulo quando ocorridas
(LOQUES, f 988 ) .

H& duas t b c n i c a s de redundSncia p a s s i v a :

, "cold stand-$9" e
, "hot s t a n d - b r " .

"Cold s t a n d - b y " é um t i p o de r e d u n d â n c i a que


se aplica a s i s t e m a s de "baixa dependencia a falhas"
(LOQUES & MRAMER, 1 9 & 6 > . Nesse t i p o de r e d u n d z n c i a , uma ou
mais r é p l i c a s do mbdula s ã o e s p e c i f i c a d a s cem o o b j e t i v s de
s u b s t i t u i - l o c a s o e l e venha a f a l h a r .

LOQUES 8 K R A M E R ( 1 9 8 6 ) propãem a adocão de


duas e n t i d a d e s que c o n t r o l a m o funcionamento d e s s e s mádulss
redundantes, que s ã o o " ç ~ l e k c ~de
r s t ã t u s " e a " g e r e n t e de
canfiguracão". €I c o l e t a r de s t a t u ã tem a r e s p o n s a b i l i d a d e
de m o n i t a r a r c o n s t a n t e m e n t e o e s t a d o da módulo em a t i v i d a d e
e, em c a s a de f a l h a , i n f o r m a r o g e r e n t e de c o n - f i s u r a ~ ã o .
Este, por sua vez, deverá proceder a r e c o n f i g u r a ~ 2 o do
s i s t e m a a t r a v é s da a t i v a ç ã o de uma d a s r & p l i e a s , escolhida
de a c o r d o com uma p s l i t i c a p r e v i a m e n t e d e t e r m i n a d a .

O procedimento de a t i v a ~ a o da replica
escolhida consiste na cria~3a desta, na elita~ao
e s p e c i f i c a d a , e i m e d i a t a r e e o n f i g u r a q Z o do s i s t e m a de forma
a s u b s t i t u i r o mbdulo f a l t o s o p e l a replica. Nesit e
procedimento deve s e r c o n s i d e r a d o o tempo g a s t o , que não é
d e s p r e z i v e l e pude comprometer a s c a r a c t e r b s t i c a % de tempo-
r e a l da s i s t e m a . Uma forma de a c e l e r a r e s s e p r o c e s s o &
c r i a r a r é p l i c a mesmo a n t e s d e l a s e r p o s t a em e x e c u ~ ~ o .

h maior caracterbstica desse tipo de


redundância e s t a na não p r e s e r v a - % o do e s t a d o c o r r e n t e do
módulo em falha que f a z com que o mbdule t e n h a que ser
iniciada novamente. Essa r e s t r i c ã o t o r n a e s s e mecanismo
inviAve1 p a r a s i s t e m a s com " a l t a dependzncia a f a l h a s " .

Em s i s t e m a s de " a l t a dependgncia a f a l h a s " ,


o processamenta J A e f e t u a d o p e l o mddulo o r i g i n a l não pode
s e r perdido. Isso quer d i z e r , em o u t r a s p a l a v r a s , que,
mesmo quando um rnbdula f a l h a , algum e s t a d o a n t e r i o r 5 f a l h a
deve t e r s i d o c o n s e r v a d o . Para a t i n g i r e s t e objetivo,
adotada uma r e d u n d â n c i a do t i p e "hat stand-br". Nessa
tbcnica, a r é p l i c a , alem de s e r c r i a d a , f i c a também p r o n t a
p a r a e x e c u t a r , desde o i n s t a n t e da i n i c i a c ã o do s i s t e m a . A
réplica Cica como se e s t i v e s s e no e s t a d o "bloqueado". A
d i f e r e n ~ a deste p a r a um b l o q u e i o comum é que o e s t a d o do
mhdulo o r i g i n a l 6 c o p i a d a p a r a a r é p l i c a em p o n t o s chaves,
chamados p o n t o s d e checasem ( " c h e c k p o i n t s " ) . Controlando
cada r k p l i s a e x i s t e um g e r e n t e . Esses gerentes monitoram
os processos para detectarem eventuais f a l h a s e, então,
tomar as provid&ncias cabiveis avisando aos demais
gerentes .

Em caso de f a l h a do mbdulo original, a


r e p l i c a s e r 2 acionada. E l a , e n t ã o , i n i c a a r á s u a êxecupãa a
p a r t i r do Último " c h e c k p a i n t " . O tempo t r a n s c o r r i d o n e s s a
operacão é menor d o que o de a t i v a ç a o d e uma rkplica do
tipo "cold stand-by", p o i s o tempo g a s t o é equivalente
a p e n a s 4 d e t e c ~ ã oda f a l h a e à a t i v a ç ã o da r h p l i c a .

No caso de o c o r r e r uma f a l h a na rkplica


(camo, por exemplo, por mau -funcionamento de s u a e s t a c a o )
um procedimento de r e s t a u r a ~ ã oda tipo "cold stand-by"
poderi s e r adatada.

Quando o s i s t e m a prev@ a ocorrt?ncia de f a l h a


em mais de um módulo ao mesmo tempo, poderi trabalhar cem
v á r i a s rtiplicas simultaneamente. I s s o , parém, i m p l i c a r á em
um gerenciamento mais complexo e em um custo maior,
p r i n c i p a l m e n t e no c a s o de "hot s t a n d - b y " .

E interessante comentar uma ut i 1 b z a ~ ã o


comum, porém errada, dos termos "hot stand-by" e "cold
stand-by". E normal r e f e r i r - s e a " h e t s t a n d - b y " como sendo
uma a r q u á t e t u r a onde e x i s t e uma d u p l i c a t a do s i s t e m a at ivn
que é ativada sempre que f o r d e t e c t a d a uma falha neste
aisiterna. Essa a t i v a q ã o , contudo, e q u i v a l e a um r e i n i c i o d e
sistema, a p e n a s em o u t r a maquina. Em um esquema d o tipo
"cold stand-by", n ~ a m ~ o r t a m e n t ok semelhante ao j&
deçcrito, diferindo apenas pelo fato da r e p o s i ~ % oe
reinicia~ão ser feita manualmente com a auxilio de um
operador. Observa-se, então, pela sue f o i estudado nessa
eieeão, que o que se está referindo coma sendo uma
arsuitetura do tipo "hot s t a n d - b y " é na realidade uma
arquitetura do tipo "cold stand-by", enquanto que a
referida cama t a l nãa p a s s a de uma c o n f i s u r a ~ ã oonde está
d i s p o n ã v e l uma p e q a de r e p o s i ç ã o de a l m e x a r i f a d o .

. i .i . 1 . Çuport e p a r a Mecanismos d e "Hot Ç t a n

R r e s u p e r a ~ ã of a l h a s em mbdulos a p a r t i r de
t &cnicas de "I-iot s t and-by" pres6>upõe algumas
características e s p e c i a i s dos mecanismos d e e o m u n i c a ~ ã o e
s i n c r o n i z a ~ ã ae n t r e p r o c e s s o s . E s s a s c a r a e t e r i s t i c a s tem a
ver com a capacidade das estruturas de eamunicaqão
filtrarem mensagens duplicadas e reenviarem mensagens
perdidas. Ma c o m u n i c a ~ ã oe n t r e d o i s p r o s e s ã a s , pede f a l h a r
t a n t o o p r o d u t o r quanto a conãumidor d a mensagem.
Quando um p r o c e s s o que enviou uma mensagem
falha, ele 6 s u b s t i t u i d o por um r e s e r v a . Ao i n i c i a r s u a
operaGão, este processo repetira o envia da mensagem
efetuado pelo processo o r i g i n a l . n processo
Dessa forma,
consumidor da mensagem deve s e r capaz d e d i s t i n g u i r e n t r e
uma nova mensagem e uma retransmissãa. No caso de
trançacães do t i p o " p e d i d o - r e s p o s t a " , o censulnidor deve
ainda s e r capaz d e r e p r o d u z i r a r e s p o s t a . I s s o pode ser
obtido se a cençumidor a d o t a r come p r 6 t i c a a r e t e n c ã o da
última resposta enviada.

O sistema CONIC (LOQUES & KRAMER, 1986)


adota uma seqU&ncia de números para este fim. Cada
e n t i d a d e de comunicacão tem, a s s o c i a d a a e l a , uma v a r i á v e l
sue armazena a número c o r r e n t e da s e y l l ê n e i a . Inicialmente,
tanto o p r o c e s s o p r o d u t a r quanto o consumidor assumem um
mesmo v a l o r .

Na t r a n s m i s s ã o , o produkar increment a essa


v a r i á v e l e a g r e g a seu v a l o r ao p a c o t e da mensagem.

Quando a mensagem 6 r e c e b i d a , este valor é


comparado & sua refercncia. Caso seja uma unidade
superiar, e n t ã o t r a t a - s e de uma nova mensagem e a mensagem
será consumida normalmente. Caso s e j s i g u a l ou menor,
c o n s i s t e em uma r e t r a n s m i ~ s ã oque deve s e r d e ç c a r t a d a . Se,
contudo, seu valor for igual e f o r um pedido de uma
traníaçãe de t i p o "pedida-respost a " , a ú l t ima resposta
enviada, e que e s t á armazenada na consumidor, deve ser
retransmitida. V a l o r e s m a i o r e s de que o da r e f e r e n c i a do
receptar indicam transmissões perdidas. Isso só pode
a c o n t e c e r em t r a n s a c ã e s sem c a n f i r m a ~ ã o , o q u @ i m p l i c a que
o produtor não se importa se a mensagem foi ou não
recebida. Dessa forma, ao c o n c l u i r a r e e e p ~ ã o ,o p r o c e s s o
consumidor atualiza sua referencia tornando-a igual i
contida na mensagem. Se houver resposta, esta será
encaminhada com o valor atualizado da referência do
consumidor.

Quanda o p r o d u t o r r e c e b e a r e s p o s t a ( n a c a s o
de uma t r a n ã a ~ ã odo t i p o " p e d i d o - r e s p o s t a " ) e l e considera
aquelas c u j a r e f e r E n c ~ as e j a i g u a l à s u a . Respastas com
reier&ncia inferior à do p r o d u t o r s ã o descartadas como
sendo cápias, N%o h 5 coma a r e f e r e n c i a da resposta ser
malar do que a do p e d i d a .

Goma J á mencionada a n t e r i a r m e n t e , B emprego


da tkcnisa de "hot stand-by" e x i g e que a s duplicatas do
mádula estejam sempre em s i n t o n i a com o Último ponto de
checagem por ande passou e s t e mbdulo. Para g a r a n t i r e s s a
sintonia, é necessário que s e u e s t a d o s e j a copiado nas
r&plisaã. Essa c ó p i a é r e a l i z a d a a t r a v e s d e uma p r i m i t i v a
de s a l v a m e n t o . Essa p r i m i t i v a , quando chamada, envia o
estado do p r o c e s s o que a chamou p a r a t o d a s a s r é p l i c a s a
e l e associadas.

A chamada 5 primitiva de salvamento de


e s t a d o marca um ponto de checagem no p r o c e s ã n . Quando um
mádulo duplicata & ativado, e l e comeea s u a exeeu-ão a
p a r t i r do ú l t i m o ponto de checagem p a r ande passou o mádula
que f a l h o u . F i c a , assim, pendente a questão d a l o s a l i a a ~ ã o
dos p o n t o s de cheeagem em um p r o c e s s o , ou seja, em que
pontos deve ser evocada a primitiva de salvamento de
eat ado.

A r e c u p e r a q ã o de uma f a l h a 6 bem s u c e d i d a s e
o módulo, ao ser e x e c u t a d o após a r e c u p e r a q ã o , é c a p a r de
repetir t o d a s o s s e u s p a s s o s como foram a n t e s de falhar.
Enquanto o mbdulo 6 completamente e s t a n q u e , isto 6, não
interage com o s demais ou com o meia exterior, pode-se
verificar que, a menus, do consume de tempo, ele repetir&
sempre o s mesmos p a s s a s , a p r e s e n t a n d o a s mesmos r e s u l t a d o s ,
mesmo que não possua nenhum ponto de ckecagem. &
ocorreneia de entradas assingronas, contudo, promevem
v a r i a e õ e ç no f l u x o d e exeeucão d e um p r o c e s s o . Logo, p o d e -
ç e c o n c l u i r que a perda d e s ç a s e n t r a d a s pode i n v i a b i l i z a r a
recuperaGão do mbdulo. Bbserva-se, d e s s a forma, que a s
chamadas & primitiva de salvamento de estado estão
r e l a c i o n a d a s com a s p o n t o s de e n t r a d a a s s á n c r o n a s .

Suponha-se dois processos A e B que se


eamunicam a t r a v é s de p r i m i t i v a s do t i p o "pedido-resposta"
("request-reply"), como mostra a f i g u r a ( V E E . 2 ) . Sejam os
\

p o n t a s d e ehecagem P C ( A , B ) e PC(H,@). Çeja o ponto P ( A , i )


o p o n t e onde B p r o c e s s o A e n v i a um p e d i d a ao p r o c e s s o B e
f i c a aguardando s u a u e s p e s t a . 3 e j a s ponto P ( B , l ) o p o n t o
onde a p r o c e s s o B f i c a aguardando o p e d i d o do p r o c e s s o A.
Çeja, q i n a l m e n t e , o ponto P ( B , 2 ) a ponto onde o process.o
e n v i a a r e s p o s t a ao p r o c e s s o A

Figura V I % . % : Exemplo de u t i l i z a c ã o de p o n t o s d e checasem


Se h o u v e r uma f a l h a n o p r o c e s s o A a n t e s de
ambos come$arem a interagir, isto e, antes dos pontos
P ( A , i ) e P ( B , i ) , o p r e j u i n o o c a s i o n a d o por esta f a l k a , a p b s
a recuperação, s e r á a r e e x e e u ~ S ad o t r e c h o e n t r e P Ç ( A , @ ) e
P(A,i). Prejuizo análogo terá o p r o c e s s o em situa~ão
semelhante. Conclui-se, p o r t a n t o , q u e N%O é i m p e r a t i v o o
salvamento do estado dos processos nesse trecho de código.

O processo A ficara bloyueade enquanto o


processo B e s t i v e r e n t r e o s p o n t s a P ( B , i ) ePCB,E). Para
garantir-se q u e uma f a l h a o c o r r i d a e m B e n t r e esses dois
p o n t o s ser& i m p e r c e p t i v e l a A , d e v e - s e o b r i g a r que o p e d i d o
enviado a B provocar&, d e qualquer forma, uma r e s p o s t a a
ser r e c e b i d a p o r A . Assumindo-se a h i p ó t e s e da camunica$ãs
e n t r e processos ser t o t a l m e n t e e o n f i á v e l ( v e r item V%%.5),
garante-se q u e o p e d i d a e n v i a d o por A s e r á r e c e b i d o p o r B .
Da mesma f o r m a , a r e s p o s t a e l a b o r a d a p o r B ser& r e c e b i d a
por A. Se a p r o c e s s o B f a l h a r e n t r e oç p o n t o s P(B,1) e
P(B,2), então o processo s e r á ã u b s t i t u i d o p o r uma r k p l i c a
B'. Essa replica iniciari sua execucSo a partir de
PC(B,@), q u e Ç o i o u l t i m o p o n t o d e c k e s a g e m d o p r o c e s s o B,
e Ç i s a r á b l o q u e a d o em P ( B , I ) aguardando s pedido d e A. B
processo A, por sua ver, não receberii s u a resposta dentro
d o t e m p o m&ximo d e e s p e r a e s t i p u l a d o . Como r o n s e q t l ê n c i a , 5

pedido seri reenviado. B p r o c e s s o B' s e r á deçbloqueada,


ssnsumirà a mensagem e produzirá e enviará resposta,
desbloqueando o processo A. Observa-se, então, que at@
e s t e p o n t o n ã o h o u v e n e c e s s i d a d e d e se c r i a r um n o v o ponto
d e ehecagem.

B problema s u r g e quando o p r o c e s s a B falha


após enviar a r e s p o s t a ao p r o c e s s o A. Como pode ser
observado, o processo B' só f o i d e s b l o q u e a d o , d a n d o assim
continuidade a o proceçsamento, porque A reenviou o pedido.
Uma v e z d e posse d a resposta, a processo A sairá da ponto
P(A,2) e não mais r e e n v i a r á o pedido original. Assim
sendo, a menos que h a j a um novo ponto d e checasem apds
P(B,2), o p r o c e s s o H' f i c a r á bloqueado e t e r n a m e n t e neste
ponto. Case o processo A s e j a c í c l i c o , um nave pedido
d e % b l o q u e a r &B', mas o p e d i d o o r i g i n a l f i c a r a p e r d i d o para
ele. Dessa forma, LOQUES & KRAMER (1986) prapãern a
seguinte regra:

-Um ponto de checagem deve s e r e s t a b e l e c i d o a p ó s uma


mensagem s e r recebida e antes d o resultada ser
e n v i a d o . (Regra 1 )

Se o p r o c e ã s o A f a l h a r a p á s o ponto P(A,I),
será s u b s t i t u í d o por um A i que i n i c i a r r i no p o n t a PC(A,B).
Q pedido ser& então reenviado. Como o pedido será
repetido, então o p r s c e s s o B r e e n v i a r á a mesma resposta
dada a s p e d i d a o r i g i n a l ( e n v i a d a por A ) . A r e e u p e r a ~ ã os e
realizará a contento. O c o r r e , parém, que s e h -Falhar a p 9 s
uma nova t r a n s a ~ ã o" p e d i d o - r e s p o s t a " , posterior à realizada
em P ( A , 1 > , a p r i m e i r a n%a poder6 mais s e r r e c u p e r a d a p o i s a
segunda r e s p o s t a se sobrepbs primeira, na processo B.
Assim senda, LOQUES & KRAMER ( 1 9 6 ) propõem uma segunda
r e g r a que, juntamente com a p r i m e i r a , s ã o s u f i c i e n t e s p a r a
garantir a tolerância a falhas.

-Um p o n t o d e checagem deve s e r e s t a b e l e c i d n e n t r e d o i s


e n v i o s de mensagens a t r a v h s d e uma mesma e s t r u t u r a (coma um
p o r t o , p a r e x e m p l o ) . (Re

E i m p o r t a n t e s a l i e n t a r que e s t e r a c i o c i c i n o
só k? v á l i d o p a r a f a l h a s de t i p o " C a i l - s t o p " (ou f a l h a s de
omi$ir;S~>.

A transformacZo de um s i s t e m a n3a t o l e r a n t e
a falhas em um tolerante pode ser feita de forma
t r a n s p a r e n t e a p a r t i r das duas r e g r a s enunciadas acima. Em
um sistema que t e n h a como p r i m i t i v a s de comunica&% e
s i n c r o n i z a ~ Z oentre p r o c e s s a s a ã f u n ~ ã e s" e n v i a " ,
e "responda", como o PORTOS-TF (vide capitulo IV), ou
análogas, isto pode s e r conseguido a t r a v é s d a s seguintes
m e d i f i c a ~ 6 e án e s s a s p r i m i t i v a s :

à) E executado um s a l v a m e n t o d e e s t a d o em toda a
c o n c l u s ã o da p r i m i t i v a " r e c e b e " . Iatendendo a Regra 1)

2) E executado um s a l v a m e n t o d e e s t a d o em toda a
c o n c l u s ã o da p r i m i t i v a " e n v i a " . Catendends a Regra 2)

Como estas o p e r a ~ s e ss ã o executadas pelo


sistema operacional, o p r o c e ~ s oque aç evoca não toma
conhecimento desse fato. Isso facilita a elabora~so
destes, pois elimina do projetista a p r e o c u p a ~ ã o com
tolerância a falhas. Dessa forma, um mesma mbdulo pode s e r
usada em uma c o n f i g u r a c ã o r e d u n d a n t e p a r a t o l e r a r T a l h a s ou
i s o l a d a m e n t e , sem e s s e o b j e t i v o .

Como a salvamento de estado nessas


primitivas pode ser o p c i o n a l (podem coexistir chamadas com
s a l v a m e n t o do e s t a d o e chamadas sem s a l v a m e n t o ) , a decisão
de % e um mbdulo + a r &p a r t e ou não de uma estrutura
redundante f i c a r á em um n á v e l de c o n f i g u r a ~ ã odo sistema.
Fica, pais, a cargo um p r o c e s s o ou de um grupo d e
de
p r o c e s s a s c o n f i g u r a d o r e % do s i s t e m a a d e t e r m i n a c ã o do t i p o
d e comunicaeão que h a v e r á e n t r e a s e n t i d a d e s de c o m u n i c a ~ ã o
dos processas de o p e r a ~ ã o : s e c o n f b á v e l (ou seja, com
s a l v a m e n t o > ou nãs ( i s t o é , sem s a l v a m e n t o ) .

A e x i s t g n c i a e x p l i c i t a d e uma p r i m i t i v a de
salvamento d e c o n t e x t o não 6 n e c e s s á r i a , como f o i visto,
para a i m p l e m e n t a ~ ã ode um mecanismo d e "hat çtand-by".
Contudo, como ela deve existir pelo menos de forma
implicita, para ser usada pelas primitivas "envia" e
"recebe", pode ser interessante torná-la explicita. B
p r o j e t i s t a pode q u e r e r f a z e r uso d e s t a p r i m i t i v a p a r a , por
exemplo, e v i t a r a r e p e t i c ã o de um longo t r e c h o de c b d i g e no
caso de a t i v a ~ ã ode uma réplica. 0 sistema CONLC (LOQU
6 ) 4 um exemplo dos que seguem essa ideia.

Um programa é proceççado através da


execu~ão,passo a passo, de suas instru~ões. A verifica~ãa
da ocorrgncia de erros a cada instrueão ou masmo a cada
linha 4 impraticável, s e j a por motives de eCici@ncia, pelo
menos pela falta de uma visgo mais lobal do preces-amcnt a .
rama bem feito 6 estruturado em blocos ( l a ~ o ã ,
subrot inas, etc . 1 .

RANDELL (1895) propga a tocnica cunhecicia


como $ 1 0 ~ 0 5 no inglês, "reeaver
locks", na qual um conjunto de blocos de um
regados de algumas informaqses adicionais, funcionam como
uma estrutura de deteçqãa e recupera&ão de erros. Nesse
esquema, não h á nenhuma dependência quanta à forma de
estrutura~ão das blocos, escopo das variáveis ou Forma de
passagem de parâmetros. A Unica exigência 6 que a entrada
e saida de cada bloco de recupera-%o seja feita de forma

A ref~rgncia explácita a mecanismos de


tolerhcia a Calhas no prajeto das máduloã é, em muitos
casos, desson9ortáve1, pois int rodur uma preocupa~ãd
adicional na elabora-50 do mádulo. A incorpara~ão de
mecanismos de tolerintzia a falhas de forma transparente ao
projeto do mó ulo & uma caractarástica que vem sendo
buscada em trabalhos mais recentes CLOQU ANIDO,
) . Como p6de ser observado na item anterior, o
mecanismo de salvamento de estados usado na implementac%o
a técnica de "hot stand-$3" pode ser embutida de forma
transparente ao projetis os módulos.
tradicional acrescida de:

.um teste de aceitacao, onde é testada a existgncia de


um erra e
.nenhuma, uma au mais replicas de reserva.

A sintaxe de um bloco de recuperacão & a


seguinte (RANDELL, 1975):

(bloco de recuperaqãa) ::= enãure ( t e s t e de aceitaqão)


b y (alternativa 1)
else $5 (alternativa % >

else b y (alternativa n >

(teste de a c e i t a ~ ã o >: : = <express%o l6gica)

(alternativa 1) ::- (lista de comandos>

(alternativa i) : :== (vazia) au


(outra lista d e comandos>

Figura V I S . 3 : Sintaxe de um bloco de recupera~ão

(alternativa i>
A constitui-se da cbdige do
programa original, isto é , àquele que seria usado em uma
configuracão n%o tolerante a falhas. Quando o
proeessamento da programa atinge o bloco de resuperac%o ele
inicialmente executa a {alternativa 1). Ao terminar sua
e x e c u ~ Z o , será e><ecutado o (teste de aceitapão). Caso a
resultado de teste seja afirmativo, entzo é presumido que
nae houve falha na (alternativa 1 ) e , enkão, a programa
deixa o bloco de recupera~So. Contudo, se o teste
constatar que houve falha durante a e x e c u ~ ã o da
(alternativa i > , entza será recuperada o estado da processo
imediatamente a n t e r i o r a e n t r a d a no b l o c o de recupera~ão.
Em s e g u i d a , s e r i i n i c i a d a a e x e c u ~ a oda ( a l t e r n a t i v a 2 ) ) s e
houver. Caso nzo e x i s t a , e n t % o s e r á s i n a l i z a d o um erro
p a r a s e r t r a t a d o em um n i v e l s u p e r i o r ( s e h o u v e r ) . Daí a t é
a última alternativa, o comportamento 6 análoga a s 95
61ee;crito.

Um exemplo de um bloco de recupera~go


s i m p l e s é mostrado em RANDELL (19753:

8: ensut-e A T
ia9 AP: begin
( t e x t o de programa)
end
e l s e $3 AQ: be
( t e x t o de programa)
end

Figura V I I . 4 : h e m p l o d e um b l o c o d e r e c u p e r a % ã a s i m p l e s

Neste exemplo, a a l t e r n a t i v a AP & e x e c u t a d a


quando o p r o c e s s o e n t r a no b l o c o de r e c u p e r a c ã o h . Ao s e u
t&rmino, o t e s t e de a c e i t a e ã a AT s e r á e f e t u a d e . Caso e l e
não indique falha em AP, então o processo çai de A
normalmente. Caso c o n t r a r i o , B p r o c e ~ s ov o l t a ao estado
anterior à execu6aa d e A P e , então, i n i c i a a execução da
a1 t e r n a t i v a A Q . Ao f i n a l d e s t a , o t e s t e de a c e i t a c ã o A T é
novamente processado. Casa não t e n h a o c o r r i d o falha o
p r o c e s s o d e i x a a b l o c o de r e c u p e r a ç ã o normalmente. Caso o
teste de aceitaqão A T t e n h a i n d i c a d o uma falha em AQ,
então, o processo d e i x a r á o bloco d e recuperação A, mas
s e r & i n d i c a d o um e r r o .

Um b l o c o d e recuperaGão pode c o n t e r outros


b l o c o s d e r e c u p e r a ç ã o , ou s e j a , a s a l t e r n a t i v a s de um b l o c o
de r e c u p e r a c ã o podem c o n t e r oukros b l o c o s de recupera~ãa,
como n o e x e m p l o V L I . 5 , t r a n s c r i t a d e RANDELL ( 1 9 7 5 ) .

A: ensure AT
br in declare Y
(pragrama)
B : e n s u r e BT
b3 i n d e c l a r e LJ
(pregrama )
end
e l s e by BQ: b e g i n d e c l a r e V
<prtsgra~na)
end
e l s e by B R : $e án d e c l a r e W
(programa)
end
else error
<programa)
end
e l s e $9 A Q : b e g i n d e c l a r e Z
(programa)
C : e n s u r e CT
by
(pregrama)
end
e l s e $5 C Q : b e g i n
(programa)
end
else error
B : e n s u r e i3T
br BP: b e g i n
(pragrama)
end
else error
end
e l s e error

Figura UZL.5 : B l o c o d e r e c u p e r a ~ à om a i s c o m p l e x o
Como se pode notar, o mecanismo de blocos de
recupera~ão não tenta diagnosticar s erra. Ela
simplesmente detecta-o e ehaveia a e x e c u ~ z opara um mbdula
a1 ternat ivo. Esse mecanismo assume que as falhas ocorridas
são "devidas a inadequa~õesresiduais do projeto e que,
partanto, tais falhas ocorrem somente em circunstâncias
excepcionais" (RANDELL, 1975). Como o númera de
cirçunstânciaã que podem surgir em um componente de
software, mesma que seja bastante simples, é imenso, então,
mesma que a (alternativa I ) Talhe em uma determinada
sbtuagão, ela continuar& sendo a primeira a ser executada
nas vezes posteriores. 8 s erros detectados nos testes de
a c e i t a ~ ã o são inventariados para posterior an&l lse e
eventuais modifica~gesnos módulos.

f4 aplicabilidade de "blocos de recuperaG%oW


está diretamente ligada a criacão de alternativas e testes
de a c e i t a ~ ã aeficientes.

V I I . 6 . 1 . 3 . l . ê . i .As Alternativas:

Coma visto, a primeira alternativa ? i


sempre
a primeira a ser executada. Dessa forma, deve ser sempre a
mais eficiente e cujo resultado seja a mais práxime do
desejado. As demais alternativas, devem tentar cumprir a
especif i c a ~ ã o , mas atravkã de outro al goi-itmo,
presumivelmente menos eficiente, mas preferencialmente mais
simples. Essas outras alternativas, em muitos casas, podem
ate levar a resultados menos desejiveis que a primeira, mas
ainda assim aceit&veis para o prosseguimento do programa.
Q exemplo da -Figura ( V E E . 6 ) (retirada de RANBELL, 1975),
ilustra bem essa questão.

O bloco de resuperaqãa d o exemplo da figura


( V E E . B > tem como sbjetivo incluir um novo elemento em uma
seqUgncia. Mesmo que ~ S S Qnão seja passável, o programa
que contém o b l o c o a c e i t a p r o s s e g u i r s u a e x e c u ~ % do e s d e que
considere o estado f i n a l consistente. P e l o exempl i f i c a d o ,
um estada f i n a l c o n s i s t e n t e 6 compesto ( 1 ) da seqllenczia
inicial aumentada do e l e m e n t o , ( 2 ) da s e q l l % n c i a inicial
acompanhada de uma mensagem de a v i ã o de perda d e i t e m , (3)
de uma nova seqllgncia composta apenas pelo novo item
acompanhada de uma mensagem de a v i s o d e p e r d a d a seqllzncia
ou (4) da uma nova seqllência v a z i a acompanhada de urna
mensagem de a v i s o de p e r d a d a seqllGncia e do i t e m .

e n s u r e s e q u ê n e i a c o n s i s t e n t e (SI
b9 e s t e n d a Ç com ( à )
e l s e b y s a n c a t e n e a Ç ( c o n s t r u a sesU2ncia ( i ) )

else by aviso ("item perdido")


e l s e by S :- c o n s t r u a sesU@neia ( i ) ;
a v i s o ("seqUência p e r d i d a " )
e l s e by Ç : = e s v a z i e seqkiênciã (Ç);

aviso ( "seqU@nci a e í t em p e r d i d 0 5 " )

Figura V 1 I . B : U m b l o c s de r e c u p e r a c ã o com a l t e r n a t i v a s
que chegam a r e s u l t a d o s d i f e r e n t e s mas,
ainda assim, zeeitáveis.,
a p e s a r de menos d e s e j s v e i s

0 Teste d e A c e i t a ~ Z o :
VXI.6.1.3.l.2.2.

a teste de aceitada realizado apbç a


execucão de cada a l t e r n a t i v a tem como funqãe v e r i f i c a r s e o
processamente realizado p o r cada uma delas satisfez as
c s p e e i f i c a ~ õ e s do programa que evocou s bloco. Bessa
forma, e l e não pode ser e f e t u a d a s o b r e v a r i á v e i s l o c a i s ao
bloco de r e c u p e r a ~ ã o , mas s i m s o b r e v a r i á v e i s g l o b a i s ao
programa, mesma porque a 9 p r i m e i r a s s b fazem s e n t i d o quando
o programa e s t s d e n t r o do b l o c o d e r e c u p e r a ç ã o . O t e s t e de
aceitatiao deve estabelecer 5e os resultadeã de uma
alternativa estão dentro dos limites especi+icados no
programa. Como a s a l t e r n a t i v a s devem s e r funcionalmente
equivalentes, f i c a e v i d e n t e -que o t e s t e de a c e i t aç.20 deve
s e r Único p a r a q u a l q u e r uma d e l a s .

O t e s t e de a c e i t a s ã o não n e c e s s i t a garantir
a correG%o a b s o l u t a do b l o c o de r e e u p e r a ~ ã o . B projetista
deve d e c i d i r o qugo r i g o r o s a s e r i o t e s t e . Idealmente, o
teste v e r i f i c a r S s e o b l o c o de r e c u p e r a ~ ã oalcanCou todos
OS requisitos da e ã p e c i f i c a ~ % o
do programa que a chamou.
Contudo, por q u e s t s e s de c u s t a e complexidade, pede-se
aceitar um t e s t e alguma c o i s a menos r i g o r o s o do q u e i s s o .
O exemplo da f i g u r a ( V I Z . 7 ) ( R A N D E L L , 1975) i l u s t r a e s s a
situa~ão. Nele, a ordenaGãa de um v e t o r "S" é feita
a t r a v k á de um b l o c o de r e c u p e r a - % o . Ao i n v & s d a t e s t e de
aeeita~zo verificar se, de Çõto, o s e l e m e n t o s da vetor
esP%o em ordem ( v e r i f i c a n d o s e Q p o s t e r i o r 6 sempre maior
ou i g u a l ao a n t e r i o r ) , e l e simplesmente v e r i f i c a s e a soma
dos elementos do vetor ordenado & igual % soma das
e l e m e n t o s do v e t o - o r i g i n a l .

F i g u r a V11.9 : U m programa de o r d e n a ~ % tao l e r a n t e a f a l h a s

U teste de a s e i t a ~ ã opode tambkm eanter


erros. Espera-se, contudo, que e l e s sejam muito menos
fresilentes que o s e n c o n t r a d a s nos b l o c o s de reeupera~%o,
uma vem que s % o bem mais s i m p l e s q u e e l e s . 0s e r r o s nos
testes de a c e i t a ~ ã opodem s e r r e c u p e r a d o s nos blecos de
reeuperaç.%a que os englobam (vide fàgura V1I.5), se
existirem. Da mesma forma que e r r o s n a s a l t e r n a t i v a s , os
erros nos teatea de aceitaeão sãs inventariados para
analise posterior.
Qualquer variável não-local ao bloco de
recupera-ão que t i v e r s i d o a l t e r a d a por e l e deve t e r seu
valer o r i g i n a l s a l v o p a r a que, caso B teste d e aceitação
constate a o c o r r ê n c i a de uma f a l h a , e l e valor possa ser
restaurado.

V 1 2 . 6 . 1 . 3 . 1 . 2 . 3 . Restauracão d o Estado I n i c i a l :

A r e s t a u r a c ã o do e s t a d o o r i g i n a l d e p r o c e s s o
antes de i n i c i a r a e x e c u ~ ã ode uma a l t e r n a t i v a s ó pode s e r
conseguida s e o s v a l o r e s o r i g i n a i s das v a r i a v e i s estiverem
salvos em algum lugar. Esse salvamento -Feito
automat i s a m e n t e , de forma implicita sendo, assim,
t r a n s p a r e n t e a o p r o j e t i s t a do p r o c e s s o . b a g a , o mecanismo
de b l o c o s de r e c u p e r a ~ ã odeve implernentar, de alguma forma,
o s a l v a m e n t o e a r e s t a u r a s ã o de e s t a d o s dos p r o c e s s o s .

A i d é i a mais i m e d i a t a p a r a o s a l v a m e n t o d a s
variAvei5 que compõem um e s t a d o i n i c i a l de um bloco de
recuperaçãe 6 salvar tadas as variáveis do prase%so.
Apesar de s u f i c i e n t e , e s t e procedimento nao % n e c e s s á r i a e ,
portanto, não deve s e r a d o t a d o p a r s e r muito i n e f i c i e n k e .
E x e c u t a r de forma i n v e r s a , uma a uma, todas a s i n s t r u ~ 6 e s
executadas na a l t e r n a t iva sue falhou tamb&m seria
imprat i c a v e l .

Na r e s t a u r a ç ã o de e s t a d o d e um p r o c e s s o as
variiveis l o c a i s ao b l o c o de r e e u p e r a ~ S onão p r e c i s a m ser
consideradas. B escopo d e s t a s v a r i s v e i s 6 i n t e r n o a cada
uma d a s a l t e r n a t i v a s e , p o r t a n t o , não +arem p a r t e do e s t a d o
original do p r o c e s s o . 0 mecanismo de s a l v a c z o do estado
deve, então, concentrar-se nas v a r i i v e i s globais. Uma
variável c u j o v a l o r não f o i a l t e r a d o p e l a a l t e r n a t i v a que
está sendo desfeita não necessita receber seu valor
imediato, p o i s j á o cont6m. n e s s a forma, v e r i f i c a - s e ser
imperãt i v o apenas o salvamento d a s vari&veis sue Qarem
alteradas pela a1 ternat iva. Mesmo assim, basta
valor anterior à primeira altera~ão,pai- o novo valor J & é
interno à alternativa e, portanto, deverá ser desprezado
caso ela falhe.

bb (1975) prop6e um mecanismo de


salvamento de variáveis não lacais imediatamente antes
sua primeira alteracão ao qual batiaou de
recursivo" (do in les, "recursive cache"). Esse mecanismo,
composto parcialmente de hardware, é dividido em regises,
uma para cada nivel e recupera~5a (para o caso de blocos
de reeuperaeão aninhados). Se um teste de aceita~ãoindica
que ã alternativa $alhout então os valores salvos no
"caehe" s%o restaurados a s variáveis a a região 6
descartada por inteiro. Porém, se o bloco de recuperaç%s
termina- sat isfatoriamente, então parte de suas entradas
serão descartadas, mas aquelas relativas a variáveis não
locais ao bloco de reeupera~ãodo nível superior serão
consolidadas com aquelas da região suhjacante.

O "averhead" de tempo causado pelo mecanismo


de "cacha" de recursivo é linearmente proporcional ao
número de variáveis não locais que sãs modificadas. Apesar
de ewiitir, ele é certamente muito menor do que um devido a
operações explicitas de salvamento e recupera~ãs.

No mecanisma de blocos de recuperacão


apresentado, o conceito de evolucão no processamento do
sistema tem levado em conta apenas altera~õesefetuadas em
variáveis. Desta forma, para restaurar um estado, basta
recuperar o valor das variáveis quando nesse esta
ecanismos de "câche" reeursiva, por exemplo, podem ser
aplicados com esse fim.
Ocorre, porém, que um p r o c e s s o e v o l u i de
o u t r a s m a n e i r a s como, por exemplo, imprimindo c a r a c t e r e s em
uma i m p r e s s o r a , a d q u i r i n d o dados em tempo-real de um s e n s o r
ou, ainda, enviando au recebendo mensagens de outros
processes. D e s f a z e r t a i s a c ã e s é uma t a r e f a m u i t o d i f i c i l
ou mesmo i m p o s s i v e l , em a l g u n s c a s o s . Apesar d i s t o , e l e s
devem ser desfeitos a fim de n%o comprometerem a
recuperabilidade de estados inerente as mecanismo de
"cache" r e c u r s i v o .

Pode-se o b s e r v a r que t o d a s e s s a s formas de


avance no processamento resumem-se a interacses entre
processos. Em a l g u n s c a s o s , não 9 e t r a t a m de programas,
mas s i m p r o c e s s o s m e c â n i c a s , humanos, naturais, etc. Em
o u t r o s , c o n t u d o , s ã o p r o c e ~ ~c ~
om~ ~ u t a c i a n a ique
s interagem
entre si, cada qual e s t r u t u r a d o em b l o c o s d e recuperaczs
prbprior;.

abserve-se a situaqão de dois ou mais


p r o c e s s o s que trocam à n f o r m a ~ õ e se n t r e s i . Estejam esses
p r o c e s s o s e s t r u t u r a d o s em b l o c o s d e r e c u p e r a ~ g a , que podem
e s t a r aninhadas. Çuponha-se que, d u r a n t e a e x e c u ~ ã ode uma
alternativa, o pracessos receba e destrua uma mensagem
e n v i a d a por o u t r o p r o c e s s o . Se, ao f i n a l de s u a exeeu$%o,
o teste de aceitacão invalidar essa alternat lva,
provavelmente o u t r a s e r á a c i o n a d a e , e n t ã o , a mensagem t e r %
que s e r r e e n v i a d a p e l o p r o c e s s o emissor. Bcorre, porkrn,
que este processo já estar5 mais adiante em seu
processamento. Logo, p a r a r e p e t i r o e n v i o da mensagem, e l e
também ter& que s e r r e t r o a g i d e . Outra s i t u a c z o onde a
recuperaGki do e s t a d o a n t e r i o r de um p r o c e s s a o c a s i o n a a
r e t r o a ~ ã ode o u t r o s é quando o t e s t e de a c e i t a c ã o invalida
uma a l t e r n a t i v a na qual houve a emissgo de mensagens para
outros processos. E s s e s o u t r o s p r o c e s s o s tambkm devem s e r
retraagidas de forma a receberem novamente a mensagem
(provavelmente corrcta, dessa vez) para cantinuarem seu
processamento a p a r t i r d e dados c o r r e t o s . Ele uma forma
geral, quando um p r o c e s s o v o l t a a um ponto de r e c u p e r a ~ ã o ,
e l e f o r c a r a que t o d o s a q u e l e s com o s q u a i s t e n h a i n t e r a g i d o
d e n t r o de b l o c o de r e c u p e r a c ã o em q u e s t ã o também r e t o r n e m a
seus pontes de r e c u p e r a ~ ã aimediatamente anteriores 5s
t r a n s a ~ õ e s.i

Em a l g u n s c a s o s , dependende d a forma som que


estejam estabelecidos os pontos de recupera~ão e as
t r a n s a ~ õ e s e n t r e os processos, a r e t r s a ~ % as u c e s s i v a de
varies p r o c e s s e s pode a c o r r e r em c a s c a t a , f a z e n d o com que
todos o s p r o c e s s o s e n v a l v i d o s r e t a r n e m ao da bloco
de r e c u p e r a c ã o mais e x t e r n a . Esse e f e i t o conhecido na
l i t e r a t u r a como " e f e i t o dominó" (WANBELL, $975; LOQUES &
KRAMERj i986), em a n a l o g i a a s e f e i t o observada quando s e
d e r r u b a s p r i m e i r a de uma c a r r e i r a d e dominás d i s p a s t a s um
atrás do o u t r o .

Na figura (VZI.8) é ilustrada um exemplo


(transcrita d e RANBELL ( 1 9 9 5 ) ) de s s n f i g u r a - % o onde pode
o c o r r e r o e f e i t o dominó. Nesse exemplo, o s p r a c e s s o s 1 , 2
e 3 e s t ã o no q u a r t o b l o c o de r e c u p e r a ~ % o , d e n t r e de uma
estrutura hierárquica, soma a i l u s t r a d a na f i g u r a ( V I I . 5 ) .
Case o processe 3 Ç a l h e , pede-se o b s e r v a r que t o d o s eles
r e t o r n a r ã o ao ponto i .

Figura V I 1 .8 : E s t r u t u r a i l u s t r a t i v a d a " e f e i t o daminá"


Segundo R A N D E L L ( 1 8 9 % ) , a combinaeão de d u a s
c i r c u n s t â n c i a s p e r m i t e a o c o r r ê n c i a do e f e i t o dominá:

1) A estrutura dos blocos recupera-ão dos vários


p r o c e s s o s comunicantes não k coordenada, nem l e v a em
considera~ão as interdepend&ncias causadas pelas
i n t e r a ~ õ e .s

2 ) 13s p r o c e s s o s s ã o s i m & t r i c o s em r e l a s ã o à p r o p a g a ~ ã o
de e r r o s , i s t o 6, q u a l q u e r um dos membros do p a r que
eçt9 se comunicando pode provocar a r e t r o a ~ ã o do
out r o .

A remoGão de qualquer- uma dessas


circunstâncias elimina a posãibilidade d a o c o r r @ n e i a do
e f e i t o dominó.

RANBELL C1975) propõe um esquema de


coordenaeão no arranjo dos blocos de recupera~ão de
p r o c e s s o s comunicantes. a fim de e v i t a r o e f e i t o dominb. A
e ã ç e esquema f o i dado o nome de " c o n v e r s a ~ ~ e " .

Uma c o n v e r s a q ã o fi uma e s t r u t u r a a n á l o g a a u m
bloco d e recuperaeão, d i f e r i n d o apenas p e l a f a t o de ser
r e l a t i v a a d o i s ou mais p r o c e s s o s , ao c o n t r & r i o do b l o c o d e
reeuperacãs que pertence a apenas um processa. Uma
conversaGão estabelece o ponto para o qual todos os
processoá nela envolvidos deverão s e r retroagidos caso
o c o r r a um e r r o em um ou mais d e l e s . H& duas normas p a r a a
u t i l i z a c ã o c a r r e t a d e uma c o n v e r s a ~ ã o :

i> 0 s p r o c c s ç o s devem e n t r a r na c o n v e r s a c ã o a n t e s de
t roearem qual quer i n f o r m a ~ ã o.

2) Bã p r o c e s s o s devem d e i x a r a conversãcgo todos ao


mesmo tempo.
A figura ( V I I . Y ) , tambkm e x t r a i d a de WANBELL
), i l u s t r a duas conversaqães e n t r e t r e s p r o c e s s o s .

F i g u r a VEI.9 : T r a n s a ~ B ee~n t r e p r o c e s s o s
a t r a v é s d e conversaGões

Cama pode s e r observado na f i g u r a (VII.9),


as processas não necessitam entrar simultaneamente na
cenversa6ãa. C a n v e r s a ~ o e spedem s e r a n i n h a d a s , a s s i m cama
blocos d e reeupera%ao e , assim comu e l e s , nãu podem se
interceptar. 8 esquema de conversaGão @ válido para
qualquer t i p o d e mecanismo d e c o m u n i c a ~ ã oempregade, seja
baseado e m v a r i á v e i s c o m p a r t i l h a d a s , s e j a b a s e a d o em t r o c a
d e m@rlSãgen%.
. "Forward r r e r Reeavery":

Gomo visto anteriormente, na thcnica de


"backward e r r o r r e c o v e r y " a s p r o c e s s o s f a l t o s o s s ã o l e v a d o s
a um e s t a d o a n t e r i o r a o e r r o p a r a , em s e g u i d a , prosseguir
seus p r o c e s s a m e n t s a t r a v e s de caminhos alternativos. Em
c o n t r a s t e com e s s a p r o p o s i ~ ã o , e x i s t e a t k c n i e a de "forward
e r r o r r e c o v e r y " ( M A N B E L L , L E E & TRELEAVEN, 1978; CAMPBELL &
RANDULL, 1983) que t e n t a f a z e r uso do e s t a d o no qual foi
detectado o e r r o .

A técnica de "Corward error- recsverr"


consiste na e x e c u ~ g ode um c e r t o c o n j u n t o de procedimentos
que têm o p r o p ó s i t o de t r a t a r o e r r o e que s ã o a c i o n a d o s a
part i r d a sua d e t e c g ã o . A s s i m sendo, um sistema, cuja
toleriincia a f a l h z s é baseada em "forward e r r o r r e c o v e r y " ,
& projetado e implementado juntamente com procedimentos
e s p e c á f i c o s p a r a o t r a t a m e n t o de cada t i p e de e r r o . Quanda
um desses e r r a s o c o r r e o procedimento a ele relativa 6
executado.

Segundo R A N D E L L , L E E & P R E L E A V E N (1978)) h á


duas formas d e s e implementar mecanismos d e t o l e r â n c i a a
Calhas b a s e a d o s em "forward e r r a r r-ecovery":

f4 primeira forma c o n s x s t e na g e r a ~ ã a de
informac8es s u p l e m e n t a r e s c a p a r e s de c o r r i g i r o e f e i t o de
alguma informa~So err6nea produzida e já consumida par
outros rnbdulos do s i s t e m a . Essa informacão suplementzir-
ped@ s e r praduzàda p e l o p r ó p r i o componente fa1ko-z-o ou par
outro, em seu beneficio. Esse t i p o de mecanismo & de
grande valia em situaqões onde não se pode utilizar
mecanismos de "backward er-ror recavery" por não ser
p o s s i v e l s a l v a r - s e e s t a d o s a n t e r i o r e s do s i s t e m a .
Outra forma de se implementar mecanismoa de
tolersncia a falhas do tipo "forward error recovery*' 6
atravhs de mecanismos de exceeão (item VãP.S.1.2 e
CREÇTIAN, 1982). Neste tipo de implementacão toda a ver
que for detectado um erro, a excecão a ele relativa será
levantada (ou sinalizada). Mediante essa sinaliza~%o, a
rotina de tratamento da e x c e ~ ã oserá executada e o erro
reparado.

"Forward error recovery" aplica-se bem ao


tratamento de erros previçiveis e bem conhecidos, como os
causados por falhas de componentes ou nas i n t e r a ~ õ e s entre
eles, Em eompara~%s à tkcnica de "baçkward error
recoverr", ela é mais simples (pais não desfaz o que ,já foi
feito e refaz de outra forma) e , portanto, mais rápida.

Ocorre, todavia, que, ao contr&ris da


técnica de "baçkward error recovery", onde as etapas de
delimita~so do dano e repara estão bem distintas da
continua620 do s e r v i ~ o , em "forward error reeovery" essas
q u e s t k s estão misturadas (RANDELL, LEE & TRELEAVEN, I B S B ) .
A l e m disso, enquanto na primeira a delimita~ao da dano
causado pelo erro 6 feita independentemente da causa do
erro, na segunda existe uma grande ligacão som a
identifisaeão da falta ou, pelo menos, com o conhecimento
de todas as suas conáeqU$neias. Assim sendo, conclui-se
que mecanismos de "forward error recovery" não se adequam
ao tratamento de falhas imprevisiveis, cama Falhas d e
projeto, por exemplo. Para esse tipo de faihaã 6
preferível a adoeào de mecanismos de "backward error
recovery" .

htentativa de se prever erros de projeto,


atravks, por exemplo, de diagnose automatizada, consiste em
total desperdicia de e s f o r ~ a spois, como bem citado em
MELLIAR-BMITM 13 RANBELL (1977), quando o tipo e a
l o c a l i z a c ã o de uma f a l h a de p r o j e t o puder s e r p r e v i s t a e s t a
d e v e r & s e r removida a o i n v & s de t o l e r a d a .

Como o b s e r v a d o em CAMPBELL & R A N D E L L ( % 9 8 3 ) ,


"ferward" e "backward error recevery" eomplementarn-se
mutuamente. Enquanto a primeira permite o tratamento
ef i e i e n t e de falhas esperadas, a segunda prove uma
estratrigia g e r a l de t r a t a m e n t o d e e r r a s que 8 projetiska
não p e d e ou nao q u i s a n t e v e r .

Como mencionado na item anterior


( V I % . 6 . % . 3 . 2 )mecanismos
, de "forward e r r o r r e e o v e r y " podem
ser implementados a t r a v é s d a u t i l i z a ~ ã sd e mecanismos de
exce~ãca. B exemplo da figura (VEE.i@), extraído de
CAMPBELL & WAMDELL (1983)) i l u s t r a de que Corma i s t o pode
ser alcan~ado:

falha-de-motor : rotina-de-tratamento-de-exce6Zo
besin
e v i t a r - e s t o1
abaixar,+ laps
es~olher-camps-de-poucieQdeE!~merg~ncia
chavear-tanques-de-cambustivel
chavear-magnet o s

Figura V I I . 1 @ : P r a s e d i m e n t a de ernergancia
para aviões leves

Nesse exemplo, a estratagia de "farward


errar recovery" tenta c o n t e r o dano a s motor do avi%o,
t e n t a n d o a t e r r i z a - l o de forma s e g u r a . E s s e ~ r o c e d i m e n t oé
chamado a t r a v 6 ã d o levantamento d a e x c e c ã o c o r r e s p o n d e n t e .
(46 garante operacão c o r r e t a %)

bloco-primArio : componente-do-sistema
inicia-caçhe
h a b i l i t a ( o u t r a s - e x c e ~ õ e s , a1 t e r n a é i v a - 1 )

e x e c u t a - a 1 g s r i t mo-primárib~
se ,%o ( t e s t e de a c e i t a c g o )

e n t ã o s i n a l i r a ( exceczo-a1 t e r n a t i v a )

d e s a b i l i t a ( out r a s - e x c e ~ õ e s , a1 t e r n a t i v a - 1 )

d e s e a r t a-cashe

(* f i m d a bloco primário n )

b l s e o - a 1 t e r n a t ivo-1 : r o t ina-de-tra'cament oC).deeexce~30


restaura-caçhe
h a b i l i t a < s u t r a s _ e # s s c 8 e s , a1 t ê r n a t iva-2 )

e x e c u t a - a l g e r i t mo-alternat i v 8
s e não ( t e s t e de a s e i t a ~ ã o)
e n t ã o s i n a l i z a ( excec3o-a1 t e r n a t ava )

desabil i t a ( sut ras-exsecões, a1 t e r n a t i v a - 2 )

d e s c a r t a-cache

(% C i m d o bloco a l t e r n a t i v o 1 w )

bloco-a1 t e r n a t ivo-2 : r o t ina-de-t r a t a m e n t o O d e e e e x c e ~ ~ a


r e s t aura-caehe
5 i n a l i r a ( e x c e ~ ã ede f a l h a )

(H f i m do b l o c o a l t e r n a t i v o 2 %)

Figura V I I . 1 l : Implementac3s d e b l o c o de r e c u p e r a c % o
a t r a v é s de g e r e n c i a m e n t o d e e x c e ~ z e s

Mecanismos de "backward e r r a r r e c o v e r 3 " do


t i p o b l o c o s de r e c u p e r a ~ ã apodem s e r implementados d e forma
transparente através de, por exemplo, e s t r u t u r a s do t ípe
"cache" recursivs, apresentado em VXE.B.i.3.1.2.3. A
i m p l e m e n t a ~ % od e b l o c o s d e r e c u p e r a c ã o , c o n t u d o , pode a i n d a
ser feita de forma explicita, através a utiliz3$%~ de
mecanismos de e x s e ~ ã o(CAMP A N B E U , -3.9 apesar d e
serem naturalmente aplicáveis a tecnicas de "forward error
recovery". Nesta implementaqão, e x c e ~ õ e sinexperadas são
transformadas em excecoes esperadas mas do tipo "outras
exceções", como forma de a t i v a ~ ã ode outras alternativas do
bloco de recupera~ão. Alkm disso, o tratamento do "cache"
recursivo a do testa de aceita$ão também é feito de forma
explicàta. 8 exemplo da figura (VPI.i-3.) (CAMP
3 ) ilustra esse esquema.

T&cnicas de redundância da recursos baseiam-


se na mult iplicida e de elementos que efetuam,
çimul taneam nte, tarefas funcionalmente equivalentes. Ao
ssntr&ria de tkcnicaç e redundância temporal (vi
VPI.b.I), onde a tolerância a falhas se dã pela detec~ãoda
falha, recuperaçzo de um estado anterior e exeeu~ãode um
novo mbdule alternat ivo, mecanismos de redundsneia de
recursos mascaram a falha atravks de alguma forma de
compara-%a dos resultados obtidos p6s a exeeu~ão paralela
dos m6dulos re antes. O exemplo ean8nico desse tipo de
estrutura E a la" (ou, no i
"Triple Modular Redundancy") (RANDELL, LEE
1978). A figura (VII.12) ilustra a ~strutura de um
mecanismo de redundância modular tripla.

No esquema da figura (UIP.1 , três módulos


funei.onalmente equivalentes recebem a mesma entrada e, cada
qual isoladamente, apresenta uma saida. Como pode ter
ocorrido uma falha em um dos t r e s mbdulos, então, a saida
de cada um deles s e r á comparada ãs dos demais em um
elemenko chamado "vota sçe elemento tem como fun-%o
apresentar uma sai eja válida independentemente de
falhas sue possam ter ocorrida nas mbdulos. A escolha
asaia-se em uma votação majoritária, sn
pelo menos dois d a s tres mbdulos votantes concordarem, 0

sistema poderá suprir uma saida canfiável. Caso haja uma


discordSneia geral, isto e , cada módulo votante apresentar
uma saida diferente d a s demais, então CJ votador indicará
uma falha não 'crat&vel. o.( item VII.8.2.2.
discut idas situa~õeç onde resultados diversos não
representam falha intrat6vel. )

VOTA

ura VII.12 : Esquema de redundância medular tripla

A vota-ão 6 uma forma mais eficiente de


deteccão de erre em um mhdulo da que testes de aceitação.
Isso se deve ao fato de que o resultado de um módula é
comparado cem os das demais ue executam algoritmos
análogos ao seu. No caso de um teste de aceita~ão,ocorre
apenas o estabelecimento de um limita de validade do
resultado da alternativa. Mesmo que s teste de aceitacão
seja eleborado e Forma a efetuar um a1 oritmo equivalente
as alternativas para checa-10s de forma mais rigida,
ainda assim haverá apenas dois elementos sendo comparados
(enquanto que em N-verszes h á tantos quanto se queira).
Mesmo neste caso, @xis e a necessidade de arantir-se a
carra~ãe e de aceita~ãa -o pena dele recusar
a, O F+ 3 a E n
c v' 9 w m e- O
S Ln c0 rn < v. 3
n #-r c0 w. ci O
v. -5 V a e.
O ,'-i V F4 w N
3 IT In pr 3-
w Ez 3 O
ri +I. -h w Pi-
3 a O O
m CB -r -5 m
3 -O m 3 a BD rr
e- ps m Q w
m m 6 f
3 n m 3 a
Kl m O BJ G I
m m 3 3 m tu; a-
-L3 m fT rr 3 Lc
t m -i a r?! n
v. m O f P,
< m W a w
wc-' m -0
3 a Iã) O
m m Iã) e n Q -5
3 3 m O Fia
rr CF t sn 3 m
m a 3 73 X
m O m O -5 m
IR b2 Piz 5 m 3
-5 O W) n -0
c 3 t c-'
'El Q -0 ri -5 O
z O O -5 m m
O a O m 83
m 'il e. m
n 3 O m O
w a # W r?
IR m ai 7
O IR 3 a T a
Kl O w rs
a -5 m m -5 P
m Lq e 3
cr 3 E
E -5 w r0 Y
3 m -5 -5 -5 3
w -0 3 wz
.
d Fia w. -m O
v. 3 ri-
w n m
-i w C 3 m
a a 3 6 IM O-
6 O EU 3 m
e. in ai
R -'P +
m 3 a BJ
rê- Ij m r-t- 3 r"
c w tn EU cr 3-
-5 a 3 X ca. a:
Pi w Pi w 3 m
da e s t a c ã o a p r e s e n t a r uma f a l h a do t i p o " f a i a - s t o p " . Dessa
forma, n%o f a z s e n t i d o a u t i l i . z a ~ a ode r é p l i c a s i d e n t i c a s .
Portanto, em arquiteturas individuabs, 56 faz sentida
trabalhar com v e r s õ e s d i f e r e n t e s do mesmo módulo. Essa
tcicnica, c o n h e c i d a como N - v e r s ã e s , tem merecido a atericão
de vGriaç a u t o r e s como: AVIZJENES €4 o u t r a s ( 1 P B 5 ) , KMIGHT,
LEVYÇON 8 S % . JEAN ( % 9 8 ! 5 > , CoClPER t 1 9 8 6 ) , LOQUES & K R A M E R
( L 9 8 6 ) , POWELL (1Y87) e LOQUES, KRAMEW & ú N K D O (1988).

Na thenica de "N-veráões" as mbdulos


redundantes -ião imp l emen t ados independentemente,
normalment e por programadores d i f e r e n t e s , a p a r t i r de uma
mesma especificacão funcional. Seu o b ~ e t i v ai2 f a z e r com
que eventuais erros de projeto em um móduls sejam
mascarades por o u t r o s módulos onde não e x i s t a tal erro.
Sendo o s mbdulos i n d e p e n d e n t e s , a c o n f i a b i l i d a d e do s i s t e m a
6 i g u a l a enésima p o t ê n c i a da c o n f i a b i l i d a d e dos mbdulos
isoladamente. Todavia, parece ser impossível projetar
m8dulos sem sue nao h a j a nenhuma c o r r e l a c ã o e n t r e e l e s .

KNJGHT, LEVESON & Çt . JEAN (1985)


desenvolveram uma p e s q u i s a que c o n s t a t o u s u e , de f a t o , o s N
mbdulos de um sistema do tipo N-versães não são
a b s e l u t amente independent e s . I s s o s e deve ao f a t o de sue
e x i s t e a t e n d & n c i a de s e cometer a mesma e r r o na s o l u ~ ã ode
um m@smo problema, mesmo quando se está trabalhando
independentemente. Alam disso, existem trechos de um
Programa que naturalmente
~ $ 0 mais d i f i c e i s . O tipo de
ambisncia e d u c a c i o n a l , c u l t u r a l e s o c i a l também pede l e v a r
a raciocinios similares. Cl r e s u l t a d o d a p e s q u i s a , por&m,
nao desmente o aumento da c o n f i a b i l i d a d e da s i s t @ m a t r a z i d o
p e l a s N-versões, pele contr&río, confirma e s t e f a t o . Ele
mostra, a p e n a s , que e s s e aumenta não 4 t a s grande quanto o
s e u v a l o r t e i ~ r i c o , um9 vez que e s t e a5sume que o s m6dulos
não apresentam nenhuma c o r r e l a c ã o .
VPI.6.2.2.Os Votadares:

Alguns autores t e m publicado trabalhos que


discutem a questão da v o t a ~ ã oem sistemas tolerantes a
falhas (GUNNINGRERG, 1983; AVP%IENZS 8. outros, 198Sj
CBQPER, 1983; WALTER, KEECKMAFER & FINN, 1985; POWEbb,
1987j LOQUES, K W A M E R & ANEDB, 1788).

Q tipo de v o t a ~ g omais imediato que existe


consiste em comparar os vários resultados bit-a-bit (ou
byte-a-byte). Caso a maioria dos resultados seja igual,
então esse resultado "mais votado" 6 considerado como
vilido. Caso haja mbdulos discordantes, pode ser feito um
registro para análise posterior, corno nos blocos de
recuperação (vide item VEI.$.1.3.1.2>ou esse fato pode ser
ãimplesmente ignorado. Se, todavia, não kauver um
resultado ma~oritirio, entao nenhum resultado deve ser
apresentado, uma sinaliraeão indicando a discordâneia deve
ser feita e o sistema deve ser suspenso de forma segura. A
questão da votação não é tão simples assim. Existem tr@s
fat ores esrnpl içadores : a conteúdo da eomposi~ãa dos
resultados, o tempo que eles levam para estar dísponiveis e
a ordem com que chegam ao votadar.

B primeiro desses fatores tem a ver com o


fato de que as valores bit-a-bit de dois resultados podem
não coincidir sem que isso implique que um dos módulos
falhou. Essa diferença entre dois resultados pode ser
devida à d i f e r e n ~ ada precisao de números reais em e % t a ~ õ e s
distintas, por exemplo. Essa diferença independe do $ato
se se e s t a r usando N-versões ou r&plbeas idênticas. !3utra
causa de difereneas é a implementa~ãade cada uma das
réplicas atravks de algoritmos alternat ivss. Cada
algoritmo pode chegar a valores próximoã porem diferentes.
E s s a situaczo pode ocorrer mesmo em uma Única máquina onde
+ai adotado um mecanismo de N-versões. Por fim, dois
resultados podem ser inteiramente diversos e ainda assim
estarem c o r r e t o s . E o caso, p o r exemplo, d e um m ó d u l s d e
geracão de números randemicos. Isso f o r c a com que a
v o t a c ã o t e n h a q u e ser e f e t u a d a s o b r e v á r i o s t i p o s d e d a d o s :
booleanoã, inteiros, em p o n t o f l u t u a n t e e a t & r a n d 5 m i c o s .
A titula d e i % u s t r a c % o , pode-se citar o sub-sistema de
vot acão do MRFT ("Mul t i c o m p u t e r A r c h i t e c t u r e Ssr Fault-
Toler-anre") (WALTER, K I E C K H A F E M & FINN, 198%), a p l i c a d o em
sistemas d e tempo-real que requerem t a n t o a l t o desempenho
quanto a1t a conf i a b i l i d a d e . No MAFT, o s u b - s i s t ema v o t a d o r
trabalha com dados d e v á r i o s t i p o s incluindo-se valores
bosleanos, v s r i o s f o r m a t o s d e i n t e i r o s e s p a d r a o IEEE de
3 2 b i t s p a r a v a r i á v e i s em p o n t o f l u t u a n t e .

B s e g u n d o f a t o r q u e d e v e s e r l e v a d o em c a n t a
na vatac%o é o tempo q u e l e v a para que os resultados
f o r n e c i d o s p o r t o d o s sã mbdulos v o t a n t e s esteja d i s p o n í v e i s
para a v o k a ~ g o . (3s r e s u l t a d o s q u e d e v e m s e r c o m p a r a d o s em
uma v o t a ~ ã o n ã o c h e g a m a o v o t a d o r a o mesmo tempo. Esse
i n t e r v a l o a u m e n t a a i n d a m a i s q u a n d o s e t r a t a d e um sistema
distribuido. Para tanta, um i n t e r v a l o d e t e m p o d e v e s e r
adotado para que, d u r a n t e esse t e m p o , o v e t a d o r a g u a r d e os
valores restantes. De a c o r d o com A V I f J E N J Ç & o u t r o s (1985)
" o U n i e o m e i o d e s e d e t e c t a r q u e uma v e r s ã o n z o p r o d u z l u um
resultado quando este era e s p e r a d o ou quando o resultado
fica 'preso' em a l g u m l u g a r n o s i s t e m a d e camunica~ãa é
usar uma i u n ~ ã o d e tempo d e espera". Aqueles que não
c h e g a r e m d e n t r o d o p r a z o e s t i p u l a d o s e r ã o c o n s i d e r a d o s gamo
omissos, ou s e j a , seri presumido que o mbdulo respans$vel
por sua geracão e s t á i n a t i v o . Porém, somo exposto em
POWELL ( 1 9 8 7 ) , " a p r o b l e m a d a t e c n i c a d e t e m p o d e e s p e r a 6
o d o d i m e n s i o n a m e n t o d o s t e m p o s d e espera já que szo, em
e s s ê n c i a , m u i t a d e p e n d e n t e s d a c a r g a d o sistema e podem t e r
q u e s e r m o d i f i c a d o s á a m e d i d a em q u e a s i s t e m a e v o l u i " .

BVP2%EN%S & outros (1985) s u g e r e m duas


formas de a t i v a ~ ã ad a c o n t a g e m de tempo. Na primeira
delas, a contagem d a tempo é i n i c i a d a quando o processo
chega no i n i c i o de cada b l o c o de v o t a ~ ã o . Todas a s v e r s 8 e s
devem fornecer seus resultados dentro deste intervalo de
tempo. Em uma segunda p o l i t i c a , o tempo de e s p e r a 56 é
iniciado quando chega a m a i o r i a dos r e s u l t a d o s a serem
votados. Essa segunda 0p67o s e b a s e i a em uma csmpara~%o
e n t r e a s tempos r e l a t i v o s d e execucgo ao i n v p s de utilirar-
o tempo a b s o l u t o , como na p r i m e i r a t e c n i c a . Outra vantagem
6 que v e r s õ e s que apresentem mau Suncionamento a t r a v é s da
entrega prematura de s e u r e s u l t a d o não t r a r á problemas à
v e k a ~ ã o , uma vez que não i n i c i a r s o a c s n t a g e n .

B &16imo Cator q u e deve s e r analisada na


v o t a ~ ã o & a sequencba com que chegam r e s u l t a d o s p a r a serem
votados. Quando um r e s u l t a d o é r e c e b i d a em um v o t a d s r e l e
d e v e , de alguma forma, s e r v e r i f i c a d o p a r a a s s e g u r a r - s e nao
s e t r a t a r de uma r e t r a n í m i s s ã s d e um r e s u l t a d o a n t e r i o r ou
um resultado a n t i g o que e s t a sendo e n t r e g u e com atraso.
Além disso, em s i s t e m a s d i ç t r i b u i d o ã , um s u b - s i s t e m a de
comunicacão tolerante a f a l h a s deve, segundo CRPSTI&N i3
outras (1985):

1) E n t r e g a r t o d a s a s mensagens p r o d u z i d a s por v e r s ã e s
eor-retas a todos o s d e s t i n a t á r i o s c o r r e t o s dentro de
um i n t e r v a l o de tempo p r & - d e t e r m i n a d a .

2) Assegurar que toda a mensagem cuja transmissão


(difusão) seja iniciada em uma versas deve ser
entregue a todas a s versões d e s t i n a t á r i a s corretamente
ou não deve s e r e n t r e g u e a nenhuma d e l a s .

3) G a r a n t i r que t e d a s a s mensagens e n t r e g u e s d e t o d a s
as verções devem s ê - l o n a mesma ordem a todas as
versães d e s t i n a t á r i a s .

Esse tipo de p r o t o c o l o r e c e b e o nome de


"protocolo de difusão atârnisa" ( d o inslgs, "ahmic
broadcast protocolo). ÇRIÇTPAN & o u t r a s ( 1 9 8 5 ) propõem
como forma de ordenar as mensagens a incluãão no pacote de
um "selo da tempo" que aranta que mensa ens eorretas não
sejam descarta as por mau dimençionamenta do tempo de
era e que a ordem de entre a seja respeitada em todas as
vars8es destinat&rias. Todos os processadores trabalham
com "relógios aproximadamente sincronizados". Como há um
atrasa "delta" na transmissaa das mensagens atravks do sub-
e comunicã~ão,todos os processadores concordam em
qualquer instante "T" no histórico de todos os eventos
ocorridos ato o tempo de re18gi.o " T delta". - Estes
protocolos são conhecidos como " ocalos sincro
que todos os processadores atingem mesmos tempos locais em
um intervalo de tempo-real cujo tamanha & limitado por um
desvia máximo i ual a "épãilon".

Um sistema tolerante a falhas depende da


existência de a1 umas primitivas no núcleo do sistema
operacional so re as quais ele possa ser implementado. A
literatura ilustra uma &rie de siçtamas que dispõem dessas
facilidades: BEX (AVIZI outros, 1985), da
Universidade da CalLGhrnia em Los Angeles, a CIRCUS
CCIJBPEI", 19 ), da Universi
de da Califórnia em Berkeley e
NIê (LQQU , do Imperial
Col lese, Londres, entre outros.

Um sistema operaciona1 deve posibil itar a


criacão de um estrutura da N-versões . A t ransparenc ia e
selet ividade dessa estrutura do ponta de vista do projeto
das versães uma caracteri~tica tida como importante e vem
sendo buscada em trabalhos recentes (LBQU
. B projetista dos membros do
se preocupar com o fato de existirem ou não outros membros.
A l G m disso, deve ser facultat~vo,do ponto de vista
de sistema, a tolerância a falhas de um m 6 ulo. Dessa
forma, um sistema tolerante a falhas s ó eve ser montado em
uma etapa d e c o n Q i g u r a c ã o e n ã o n a .Fase de projeto5 dos
mbdul o s .

U elemento biisico desaa a r q u i t e t u r a é o


"grupo" ( o u " c l u s t ~ r "au, ainda, "traupe"). A f i m de c r i a r
u m grupo, a s i s t e m a operacbonal deve s u p r i r p r i m i t i v a s de
i n c l u s ã o e r e t i r a d a de p r o c e s s o s ( r & p l i e a s ) n o g r u p o , alem
de i n c o r p e r a r a s p r i m i t i v a s d e camunica~%.o e s i n c r o n i z a ~ % o
a s mecanismos d e v o t a ~ ã o , d e f o r m a t r a n s p a r e n t e .

VZZ.6.3, Csmpara~ãs entre Redundância Temporal e


e d u n d s n c i a de R e c u r s o s :

Pelas caracterisk icas j% estudadas dos


mecanismos de redundsncia temporal e de redundância de
recursos, ti p o s s i v e l s e f a z e r a l g u m a s c o m p a r a ~ 0 e se n t r e o s
dois tipos de redundsncia. Essas compara&Zes saa
importantes n a m e d i d a em que s ã o d e c i s i v a s na escolha da
thcnica a empregar p a r a t o r n a r um sistema tolerante a
-Fal k a s .

A a d a ~ ã o de mecanismos de tolerância a
fall~zasimpze, sem d h v i d a a l g u m a , uma queda de desempenha em
r e l a ~ ã oa um s i s t e m a equivalente sem t a l s m e c a n i - m o s . Essa
queda s e m a n a f e s t a a t r a v k s de um p r a c e s ã a m e n t o adacional.
De a c o r d a com o t i p o de r e d u n d s n c i a empregado ( t e m p o r a l o u
d e r e c u r s o s ) oç e f e à t o s d e s s e p r s c e s s a m e n t o s ã o d i f e r e n t e s .
Em meçaniamos de redundZncia t e m p o r a l existe apenas um
companente redundante em a t i v i d a d e em um dado instante.
Quando e s t e c o m p o n e n t e f a l h a , então o u t r o é acionada. Ji
em mecanismos d e r e d u n d z n c i a d e r e c u r s o s , t o d a s os m6dulas
redundantes estão em a t i v i d a d e ao mesmo tempo. Deasa
forma, observa-se que mecanismos de r e d u n d S n c i a temporal
acarretam um a u m e n t o d e c a r g a n o p r a e e s s a m e n t o global do
sistema menor da que o s mecanismos de redundZncia de
recursos. Em c o n t r a p a t - t l d a , mecanismos de r e d u n d a n c i a d e
r e c u r s o s s ã o m a i s r á p i d o s do que o s d e r e d u n d â n c i a t e m p o r a l
porque não necessitam de a g u a r d a r a restauraeao de um
estado prévio e posterior execu~ão de um mbdulo
alternat ivo. 0 tempo g a s t o p a r a a ç s n t inuaczo do s e r v i ~ a
em mecanismos baseados em redundPncia temporal pode
i n v i a b i l i z a r s u a u t i l i z a e ã o em s i s t e m a de t e m p o - r e a l .

Alem da q u e s t ã o da r e c u p e r a ~ ã o de erros,
cabe também observa-se a q u e s t ã o da sua deteccão. As
f a l h a s em um s i s t e m a pedem s e r de t r 6 s t i p o s : de omissão,
de tempo e b i m a n t i n a s (ver- item V I P . 3 ) . F a l h a s por omissão
ou de tempo podem s e r d e t e c t a d a s em ambas a s classes de
t o l e r â n c i a a f a l h a s a t r a v é s de alguma forma de t e m p o r i z a ~ ã o
ou p r o t o c o l o . Já a d e t e c ~ ã ode Falhas b i z a n t i n a s , ou s e j a ,
falhas q u a i s q u e r , & f e i t a de forma d i s t i n t a p e l a s duas
c 1a s s e s . Testes de a c e l t a ~ ã o , e f e t u a d o s em blocos de
r e c u p e r a q a o conseguem, no máxime, e s t a b e l e c e r um i n k e r v a l o
de r e s u l t a d o s v á l i d o s em uma a l t e r n a t i v a . Al&m d i s s o , o
algoritmo do próprio t e s t e de aceita550 pode não ser
absolutamente independente daqueles das a l t e r n a t i v a s que
valida, tornando-o, a s s i m , i m p r b p r i o s em algumas s i t u a g õ e ç
d e erro. Mecanismos baseados na r e d u n d â n c i a de recursos,
por outra lado, conseguem a l c a n G a r um maior e s p e c t r o de
detec-%o de Talhas b i z a n t i n a s , embora s e s a i b a que não
i n f i n i t o ( v e r item V 1 1 . 6 . 2 ) . A p e s a r de tambhm n%o h a v e r ,
na prática, uma i n d e p e n d & n e i a t o t a l e n t r e o% rnádulos na
redundsncia de r e c u r s o s , e s s e problema é menor do que na
temporal j á que a r o m p a r a ~ ã oe n v o l v e t o d o s a s mádulos (ao
contrário de em um t e s t e de aceitacão onde -6 estao
envolvidos a a l t e r n a t i v a que acabou de s e r e x e c u t a d a e a
prbprio t e s t e d e a c e i t a ~ ã o .
V I I . 7 . Emplementa~ãsda um Mecanismo de N-Uersãeç:

a
PORTOS-TF 6 um sistema operacional que
implementa um mecanismo de N-versões para tolerância a
+al has . A escolha de N-versBes ao invés de outros
mecanismos como "hot stand-by", "cold stand-by" ou blocos
de recuperacão deveu-se a dois fatos. 13 primeiro deles tem
a ver com aã caracteristicas de tempo-real do sistema
operacional. Como j A exposta anteriormente, mecanismos de
redundância de recursos s ã s mais apropriados para esse tipo
de sistemas da que os de redundância temporal . Em segundo
lugar, N-versões Coi escolhido porque permite uma
conferência mais acurada dos reçultados de um m6dulo.

Q PORTOS-TF permite o desenvolvimento dos


módulas d e software de forma independente de sua utilinas%o
ou não em uma configura~So tolerante a falhas. Cada
modulo, na verdade, funciona como um chip de software. Uma
vez projetado, sua operação interna é ignorada pelo
sistema. Importam apenas seus "pinos", ou seja, suas
interfaceá de comunica~ão. Em tempo de configuraqão, os
processos á ã e criados, seus portos ligadas e sua execução
iniciada.

Como o POKTOS-TF usa pertos como estrutura


de comunicação, quando dois processos e suas transaeõea
devem ser tolerantes a falhas, então se
eles devem
comunicar através de um "porto confiável". Esse conceito,
similar ao do CBNIC (LOQUES, KRAMER & ANGDO, 178&f, permite
a v o t a ~ ã a das N-versões antes da entrega da mensagem ae
processa destinatario. nessa forma, o PORTOS-TF smplemenka
uma primitiva de c r i a ~ Z ode um porta confiável.

primitiva de c r i a ~ a ode um porto confiável


necessita, alem do número e tipo do porto (entrada ou
saida), como na criação de um porto comum (vide capitulo
EU), de um parametro que indique o algaritmo empregade na
O L m 41s O
TJ (14 O F1 >
C E17 o
m iu
m E W
m 69s a .m c
a > .rl L
n?, -c3 w
-a .nr m -?-'
E CU +
O BJ w m
2m 3 m E:
L
3 @- e3 Ql O
R5 L m
-I-' iTr O QJ L.+
O an + Li- m
> 20 3 .d &I
U U -a O
a I >
an O -@
-a LI m nr
ãEl O Q
m -Q O i
c ,-- C O
O 811 f6 E
Y L L-. E 3.1
0 ai a .r(
L E
-3
s
- w L
a
ira O m
4 E 4
i%O CI. O ia
E E U
rb Ou 19
d X 'BJ
U Ifi QI
O Uí ri!
e E L ri! E:
R5 b-1 O al .r(
c OJ 0, E 4."
O E Cni O
.ri Q-0 W L
U L .
%8 a i-0 a
L ice U
eu .d Cri
a m -L? E:
O .d D OJ
O O hX
P3 a i-6
E an
@ l.0 E s
Y r a rn
bq m 53 E
.4 ira
m ira m
5- C
m ai '3
a e E w
onde colocou e s s e v a l o r mkdio. Caso não h a j a um r e s u l t a d o
majoritário, então o valor retornado pela funcão do
a l g o r i t m o de v o t a c ã o d e v e r a s e r d o i s .

P a r a cada p o r t o c o n f i i i v e l de s a i d a a s s o c i a d o
a um porto çanSiive1 de e n t r a d a existe um número de
sequência. Esse número é i n i c i a d o com o v a l e r z e r o quando
os portos sNo ligados. Quando uma mensagem vai ser
transmitida, B numero da s e y ü e n c i a de p a r t a de saída é
incrementado e xncarporado à mensagem. Quando esta é
r e c e b i d a na p o r t o de e n t r a d a , é comparada com o r e s p e c t i v o
número de 5eqUEnci.a. Se o número da mensagem for uma
u n i d a d e s u p e r i o r em r e l a ç ã o ao do p o r t a de e n t r a d a , e n t s a a
mensagem s e r & a c e i t a e poderá s e r v o t a d a . Caso s e j a i g u a l
ou menar, será d e ã c a r t ada par representar uma
retransmissão. O numero da mensagem não pode s e r maaor do
que uma unidade em r e l a ~ a oao número da s e q u e n c i a do perto
de e n t r a d a . Ao t & r m i n e da votaGZo, o número da seqiigncia
do p a r t o de e n t r a d a s e r 6 i g u a l a d o ao da mensagem. Na c a s a
de uma resposta, e s t e número s e r 5 usado p a r a rotular o
pacote de resposta. No p o r t o de s a i d a que originou B

p e d i d o , um procedimento a n i l a g o ao d e s c r i t o p a r a o p a r t o de
entrada s e r á efretuado. A d i f e r e n e a e s t a r á no S a t o de a
numero d a mensagem d e v e r á s e r i g u a l ao da s e q u ê n c i a e não
uma unidade s u p e r i o r . Alem d i s s o , ao t6rmxno da v o t a e ã a ,
não haverá a l t e r a ~ a odo número de seqllencia a porto de
saida.

Quando dois portos são ligadas, o sistema


operacional v e r i f i c a s e ambos s ã o " c o n f i 6 v e i s " ou s e ambos
5.0 comuns. Caso sejam de tipss diferentes, entao a
1 Lsacãa nza s e r á e f e t u a d a .

Quãnda um p r o c e s s a u s a um p o r t o çonfiável
para se comunicar ele estará efetuando uma transacão
t o l e r a n t e a f a l h a s automat i c a e t r a n s p a r e n t e m e n t e .
O PORTOS-TF d e f i n e uma exeeção para o casa
d e não conseguir ser feita u m a escolha majoritária. Nesse
caso, essa e x c e ~ 2 s6 levantada e o sistema 6 interrompido
para evitar que isso possa provocar alguma falha no
ambiente externo a e l e .
E s t e t r a b a l h e d e s c r e v e a i m p l e m e n t a e ã o d e um
sistema o p e r a c i o n a l p o r t á t i l d e tempo-real com primitivas
d e t o l e r â n c i a a f a l h a s : o PORTOS-TF.

Nesta versão, o PORTOS-TF se apresenta


i m p l e m e n t a d o e m c o m p u t a d o r e s d o t i p o IBM-PC (vide apgndice
A>. O ambiente multitarefa criado permite a execu~ão
c e n r o r r e n t e d e v i r i o s p r o c e ~ s o sem uma mesma m á q u i n a , s e n d a
um e m " f o r e g r e u n d " e o s d e m a i s em " b a c k g r o u n d " . B sistema
operacional nativo k preservada e suas f u n ~ n e s podem
continuar a ser acessadas pelos processos. Uma vez
instalado, o PORTOS-TF C i c a t r a n s p a r e n t e p a r a um usuaria
que executa um programa em "For~ground" desenvolvido
o r i g i n a l m e n t e p a r a o sistema o p e r a c i a n a l n a t i v o . A criaqãs
de processos 6 f e i t a a partir de chamadas à primitiva
adequada e ~ e c u t a d a sp o r um p r o c e s s o j á e x i s t e n t e . A cada
novo p r o c e s s o é a t r i b u i d a uma p r i o r i d a d e e um tamanho de
fatia de tempo no momento de sua cria~ão. Esses
p a r i i m e t r o s , c o n t u d o , podem s e r a l t e r a d o s a q u a l q u e r momento
que se j u l g u e c o n v e n i e n t e ( v i d e c a p i t u l o 111).

8 mecanismo d e comunicaçgo e sincraniraqão


adotado é e de t r o c a d e mensagens. P o r t o s s ã o u s a d a s como
estrukuras d e endereqamento. P r i m i t i v a s do t i p o "envia",
"recebe" e "responde" são empregadas n a s t r a n s a ~ ã e s e n t r e
os p r e c e ã s s s , s e n d o q u e a s d u a s primeiras pedem a i n d a ser
e x e c u t a d a s d e forma sáncrona ou a s 5 í n e r o n a . O recebimento
de mensagens atravks do% p e r t o s p o d e se dar de forma
múltipla e seletiva (vide capitulo %V). A u t i l i z a ~ ã o de
portos p e r m i t e a p r o g r a m a ~ % oi n d e p e n d e n t e d o s p r o c e s s o s i e
sua p o s t e r i o r c o n f i g u r a ~ ã o( o u r e s o n f i g u r a ~ ã o ) d e acordo
com a a p l i c a c ã o .
A i m p l e m e n t a ~ ã ode um mecanismo de N-versões
(vide c a p i t u l o V I I ) p e r m i t e que o PORTOS-TF s e j a usado em
a p l i c a ~ 5 e s de a l t a s o n f i a b i l i d a d e . 8 p r o j e t o de cada uma
d a s v e r s o e s é f e i t a de forma i n d e p e n d e n t e d a í d e m a i s . Cada
mádula da s i s t e m a i g n o r a s e s e r 5 usado i s o l a d a m e n t e ou em
uma estrutura repl isante. Isso permite a introdu~ao
selet iva e transparente d e eçt ruturas tolerantes a falhas
na a p l i e a ~ ã a .

Além da discussão d a s o p ~ õ e s de projeto


adotadas no núcleo (capitulo IEI), nos mecanismos de
comunica~iXae s i n c r o n i n a ~ % o
e n t r e processos ( c a p i t u l o T V ) e
de toleriincia a falhas (capítulo V E E ) , são descritas as
estruturas de dados u s a d a s p e l o PBRTOÇ-TF ( c a p i t u l o VI> e
de que forma ocupam a á r e a d e dados r e s e r v a d a na mem8ria
para o sistema operacional (capitulo V). São também
e $ e t uadas c o n % i d e r a ~ ? ) e s quanto 4 p o r t a b i l idade e
reutilina~ão de mádulas de software e do sistema
aperacienal (capátule I . E f e i t o a i n d a um estudo de
mecanismos de t o l e r $ n c i a a f a l h a s (em e s p e c i a l f a l h a s de
softwai-e) ( c a p i t u l o Vil).

Alguns sistemas operacionais nativos nãa


possuem e h d i g a r e e n t r a n t e . Além d e l e s , 15 muito comum q u e
as r o t i n a s d o B68S ( " B a a i c E/6 System") da máquina também
não permitam chamadas r e c u r s i - v a s . Nesse c a s a , tanto as
rotinas da s i s t e m a o p e r a c i o n a l n a t i v o quanto a s da BTOS
constituem-se em recursos compartilhados que devem ser
usados de forma exclusiva. O campartilhamento desses
recursos não foi considerado pela PORTOS-TF por ser
particular p a r a cada s i s t e m a o p e r a c i o n a l n a t i v o e máquina
diferente, mas c o n t i t u i - s e em uma t a r e f a n e c e s s á r i a quando
não apenas o processe "foreground" da estaeãa deseja
uk i 1 i z á r essas funcões . h c r i a ~ ã o de mecanismos de
sompartilhamenta das r o t i n a s c i t a d a s p o d e r i a s e r sugerida
carne um t r a b a l h o a s e r r e a l i z a d o a p a r t i r d e s t a t e s e .
BPORTOS-TF segue um modelo distribuido.
Sua implementa~So e m um ambiente desise tipo não foi
possível devido A falta de uma arquitetura sobre a qual
pudesse ser construido e, tambkm, por sua complexidade.
Nessa linha, pode-se efetuar uma extensão do mecanismo de
N-versões para um ambiente distribuído. O principal ponto
a ser abordado, neste caso, 6 o projeto e implementag%o de
mecanismos de difus%s atemica e o r d e n a ~ ã odas mensagens.

O
desenvolvimento de uma linguagem de
programação e configuração dinsmica para sistemas
distribuidos baseados na estrutura do PBRTOS-TF 6 , também,
uma outra fonte da qual podem ser extraidas trabalhos
futuros. Essa linguagem pederia ser totalmente neva ou
simplesmente uma extensão de uma linguagem seqU8ncial j&
existente.

Uma outra o p ~ ã ode continuaczo do trabalho


ora iniciado 6 a elabora~ãade mecanismos de análise de
desempenho tanto do sistema operacional em si quanto dos
mecanismos de tolerancia a falhas objetivando %eu
aprimoramento.

t ranãporte do PORTOS-PF para ou@ rss t ipos


B
de equipamentos pode ser igualmente interessante seja para
apl icaeoes isoladas au em ambientes distribuidos
het eraggneos.
ANDERSON, T. & KNEGMT, J. C., (1981), "Prastieal Çoftware
FauSt Pelerance for Real-Time Çystems". Teehnical
Repert, Nr. 1 6 9 , Campuking L a b o r a t o r y , U n i v e r s i t y o f
Newcasikle u p o n T y n e , 4 @ p . , E n g l a n d , J u n e .

ANDERSON, T. & LEI, P. A., (1981), "Fault Tslerance,


Prineiples and P r a c t ice". P r e n t ice-Wall
I n t e r n a t i o n a l , Englewoad C l i f f s , New J e r s e y , EUA.

ANDERÇQN, T. 13 LEE, P. A., (1982), "Fault Tolerante


Terminolegy Proposals". Tecknical Repsrt, Nr. 174,
Computing Laboratory, Universitr of N e w c a s t l e upon
fyne, 7 p., England, Apri9.

AVL%IENEÇ, A. & outros, ( i B B W ) , "The UCLA D E B L X S y s k e m : A


Diskributed Teçt bed f o r Mul t i p l e - V e r s i o n Ssftware" .
The F i f t e e n t h Annual I n t e r n a t i o n a l Sympesium a n F a u l t -
T e l e r a n t Cemputing - FTCÇ 1 5 , pp. 126-134, Ann A r b o r ,
Michigan, EUA.

BELLQN, 6. & SBUCIER, G., (1982), "Pretection against


Externa1 Errers in a Dedirated System". 1
Transackians s n Computers, V e l . c-31, No. 4 , p p . 311-
317, h p r i l .

CAMPBELL, R. H . & RANDELL, 8 . ) (1983), " E r r o r R e s o v e r y in


Asynehrsnous Systems". Technical Report, Nr. 186,
36p., Comput i n g baboratory , U n i v e r s i k y a f Newcast l e
upon Tyne, England, J u l y .
CAMPBELL, R. H.; ANBERSBN, T. & RANDELL, B., (1983>,
"Pract ical F a u l k T o l e r a n t S o f t ware for Asynehroneus
Çystems". T@chnieal Repert, Nr. 187, 7 p . , Computing
Laboratary, University of Newcaskle upen Tyne,
England, August .

CI-IERJVCIN, B. R . & o u t r o s , (14479), "Ti-iCITM, A P s r t a a l s l e Real-


Time Operating Çystem". Communieations o f t h e ACM,
V o l . 2 2 , No. 2 , p p . 1@5-115, F e b r u a r y .

COOPER, E. C., ( 1 9 8 ~ 5 )" R


~ e p l i c a t ~ dP r o e e d u r e Ca91". ACM
S5stems R e v i e w , Vel. 2 @ , No. 1 , p p . 44-56,
January .

CRISTEAN, F., (1982), "Except i s n Wandl i n g a n d Software


Fault Tolerante" . I Transact i o n s on Gsmputers,
V a l . 6-31, No. 8 , p p . 5 3 1 - 5 4 0 , June.

CWIÇTLAN, F. & outros, (1985), "Atomis B r o a d c a s t : from


Çimple Message B i f C u s i a n t o B y z a n t i n e Agreernent". The
Fifteenth Annual P n t e r n a t i s n a l Ssmpssium on Fault-
T s l e r a n t Comput i n , p p . E!@@-E'@&, Ann A r b o r ,
M i e h i g a n , "A.

CRIÇTTAN, F., (1887), "Issues in t h e Design s f Highly


Available Comput i n g Çystnms" . esearck Report
9@7) C o m p u t e r S e i e n c e , 8 ., â a n Jose - CA,
EUA, J u l y .

DEITEL, H. H., (1984), "An Introduekion to Opera


Systems". Addison-Wesley, 673p., Weading - Maçs.,
EUA.

FANTECHI, A. i3 outras, (1983), "The Cnet ENTERNQBE


Cornmunication Meehanism". ubl icarzione interna
etto F i n a l i r z a t o Informaticã C.N.R. P r o
I@@, 2 6 p . , Pisa, Etal i a , d i c i e m b r e .
FERREERA, L. A. A., ( 1 9 8 5 ) , " P r o p o s t a d e uma A r q u i t e t u r a d e
um Sistema Operacional de Tempo-Real". Tese de
Mestrado, Coordenacão dos Programas de Pós-Graduacão
em E n g e n h a r i a - COPPE, Universidade Federal do Rio de
Janeiro - UFRJ, 259p., Rio d e Janeiro, junho.

GUNNINêBERG, P., ( 1 9 8 3 ) , "Voting a n d Redundancy Management


Implemented by B r o t o e o l s i n D i s k r i b u t e d S y s t e m s " . The
Thirteenth Annual I n t e r n a t i o n a l Sympssium s n Fault-
T o l e r a n t Computing - FTCS 13, pp. 182-185, Milane,
1'cali.a.

HOARE, C. 8. R., (i872), "Towards a Theory o f P a r a l e l l


Programming". En: Moare, C. h. R. & Perrot, R . 14.
(eds.) - Operatin Systems Techniques. Academic
Press, pp. 61-72, N e w Y a r h , EUA.

WBLT, R. C. 23 outros, (1978), "Structured Loncurrent


with Operat ing Systerns Applicat ions" .

Addison-Wesley, 2$%p., R e a d í n g - M a s s . , EUA.

HOROWLTZ, E. & SAMNI, S., (29!34), "Fundamentos de


st r u t u r a s d e B a d o s " . Garnpus, 4 9 4 ~ ,. R i o d e J a n e i r o .

IBM, (15'87), "DO 3.3@Technieal eferenee", Ent e r n a t i a n a l


G u a i n e s s M a s k i n e s Cor-pat-at i o n .

JQSEPH, H . , (1981), " S e h e m e s f o r G e m r n u n i c a t i o n " . Technical


R e p o r t CMU-CS- , Bepartment o f Computer S c i e n c e ,
Carnesie-Mellon University, 41p., EUA, June.

KERNIGHAN, 8. W. 24 RSPCHXE, 8. M., (1978), " P h e C


Prosrarnming Language". Prentiee Hall, New Jersey,
EUA.
KPWNER, C . , (1988>, " D e s e n v o l v i m e n t o d e S u p o r t e ásieo p a r a
istemas Operacionais Distribuidos". Tese de
Boutsrado, Coarderia-%o d a s P r o g r a m a s d e P b s - G r a d u a ~ ã o
em E n g e n h a r i a - CBPPE, Universidade Federal do Rio de
Janeiro - UFRJ, 2 3 2 p . , Rio d e J a n e i r o , a g o s t o .

KIRNEW, C. & MENDES, S. B. S., (1988), "

Operaeionais Distri uidos: A s p e e t s ã Gerais e Análise


de sua Estrutura". Campus, 1&4p., Rio d e Janeiro.

KTRRMANN, H . 8 . & KAUFMANN, F . , (1Y84f, " P o o l p s - A Peol o f


Prseessors for Process Cantrel Applications". 1
T r a n s a c t i o n s on Computers, v o l . c-33, n o . i @ , p p . 869-
8 7 8 , Bct o b e r .

KNIGWT, J. C . ; LEVESON, N . G . & â k . J E A N , L . D . , (1985), " A


Lar-ge Ç c a l e E x p e r i m e n t i n N - V e r s i o n Prosramming". The
Fifteentk Annual I n t e r n a t i o n a l âymposium on Fault-
T o l e r a n t Cemputing - FTCÇ 1 , pp . 135-139, Ann A r b e r ,
M i c k i g a n , EUA.

KOKUWA, M. & SMINGAI, S., (4982), "Failure Propagating


Çirnulat i a n and Nsnfailure Paths Search in Netwark
Systerns". A u t o m a t i c a , Vol . 18, N o . 3 , p p . 3 3 3 - 3 4 1 .

KRAMER, J . & a u k r o s , ( i Y 8 3 ) , "ÇONIC: An I n t e g r a t e d A p p r a a c h


t o B i s t r i b u t e d Control Çystems". I E P r o c e e d i n g s , Vol .
138, N o . 1 , p p . 1-18, J a n u a r 3 .

KRAMER, J . & MAGEE, J . , (1985), "B~namiclonfiguration f o r


Distributed Srstems" . I EE T r a n s a c t i o n ã o n Çoftware
ineering, vol. SE-li, no. 4, p p . 424-438, Gpril.

LAPRIE, J . C, (i985>, "Dependable Computing and Fault


Tslerance: Conçeptç and Terminelosy". The F i f
Annual Internationa1 Symposium on Fault-Tolerank
Computing - FTêS 1 , pp, i , Ann A r b o r , M i s h i g a n ,
EUA

LEITE, J. C. €3. & AREBE, A. R., ( 1 9 & 8 > , " e c u ~ e r a ~ ãd oe


rros em Sistemas de Processos Concorrentes: uma
Proposta". PUC, R i o d e J a n e i r o .

LGSKOU, B., (1979), " P r i m i t i v e s for B i s t r i b u t e d Cemputing".


of the S e v e n t k Çyrnposium on Operating
rineiples, pp. 33-42, Pacific Grsve
C a l i f o r n i a , EUA, B e e e m b e r .

TI B. B . , (19771, " P r e e e s s Ç t r u e t u r i n g , Ç y n e r e n i r a t Xsn,


and Recovery Using Atornic Actisns". ACM SIGPLAN
Notices ( P r o c e e d i n g s o + an A C M C o n f e r e n e e o n L a n g u a g e
B e s i g n Bar R e l i a b l e S o $ k w a r e > , Uel. 12, No. 3, pp.
128-137, M a r e h .

LOQUES F o . , O. G. & KRAMER, J . , (138$), "Flexible Fault


Tolerante for Uistributed Cornputer Systemç" . I
s, val. 133, Pt. E, N a . 6 , p p . 319-332,
November .

LOQUES Fo., O. G., (1988), "Wepliea~ão Automática e


Transparente de M ó d u l e s em istemas Distribuidos".
PUC, R i s d e J a n e i r o .

LOQUES F e . , O . G . ; MRAMEW, J . & ANIBO, R., (1888), "Diverse


and Selective Fault-Telerance in a Distributed
Envirenrnent" . th IFAC Werkshop an Distributed
Computer Control Systems, U i tznsv - Çwitzerland,
Septemiser.

MABNLCK, S. E. & BQNQVAN, J J., (15'74>, "Bperat i n


Sys'cems". MsGraw-Piill, N e w Yortc, N . Y . , EUA.

MAO, T. W. & YEH, R. T., ( 9 9 8 8 ) ) " C e m m u n i c a t i o n P o r %: A


Language Concept for Concurrent Pr-ocessins" .
T r a n s a c t i a n s o n So+%ware
2, pp. 194-284, Marck.

MELLIAR-âMITH, P. M. & RANDELL, B., (1977>, "So-Ftware


Rel i a b i l i t y : The Rale o? Programrned Except ion
Handling". ACM Ç I G P L A N N o t i c e s ( P r o c e e d i n g s o f a n ACM
Csnference s n Language Deçign f o r R e l i a b l e ÇoStware),
V a l . 1 2 , No. 3, p p . 9 5 - i @ @ ,M a r e h .

MENDES, S . , (1984), " P r o g r a r n a ~ % oC o n c o r r e n t e : M e c a n i s m o s d e


Comunicacão e S i n c r o n i z a ~ % od e Processos". Quarta
scsla de Computa-se, Instituto de Makemàtica e
Estatistica - USP, 1 8 2 p . , $320 P a u l o - SP, julho.

PBWELL, 8 . R . & DEÇWARTE, Y . , (1985), "Candidate Salutlans


P r e p o s e d f o r 6 T V a n d DÇP M i s s i a n s " . e s e a r c h Repari,
no. 85.277, Centre National de la Recherehe
S c i e n t ECique - L a b o r a t a i r e d l A u t o m a t i q u e et dCAnalrse
de5 Systemes - LAAÇ, 16p., Toulsuse, France, Octaber.

PBWELL, U. R., (1987), "Fault-Tolerante in Belka-4".


Researck Report, no. 87.864, CenGre N a t i s n a l d e la
Recherche Seient i f ique - b a b o r a t o i r e d ' A u t arnat i q u e e%
d ' A n a l y g e d e s S y s t e m e s - LAAÇ, 29p., Taulouse, France,
Febr-uary .

QUANTUM, (t488), "QNX - Refereace Guide", versian 2.1,


Q u a n t u m Ç a f t w a r e Srsternç L t d . , B n t a r i a , C a n a d a , M a r e h .

RANBELL, B., ( 1 9 7 5 ) , "Syskem S k r u c t u r e for Ç s f t w a r e F a u l t


Tolerante" . Tecknical Report , Nr. 7'5, Csmput i n g
Labaratory, U n i v e r s i t y s f Newca-stZe u p a n T y n e , i5p.,
E n g l a n d , May.

RANBELL, l3.i LEE, P. A. & TRELEAVEN, P. C., <197'811


" R e l i a b i l i t y P s s u e s àn Cornput i n g S y s t e m D e s i s n " . ACM
Çurveys, VOZ. 1 0 , No. 2, pp. 123-165, June.
REIY3, L. G. , ( 198@), " C e n t r o 1 and Communicat i s n iw
Programmed Çystems" . Ph . B . Thesis, Department of
Computer Çcienee, Carnegie-Mellon University, 148p.,
EUA, â e p t e m b e r . ( T e c h n i c a l R e p e r t CMU-CS-88-142).

RUGGTERQ, W. V. & BRESSAN, G., (1982), "Um M o d e l e d e


Programacão para Sistemas Bistribuádos". Revista
rasileira d e Computacão, v o l . 2, n o . 3, p p . 131-149,
set e m b r o .

SANTOS, J. R . G . , C18871, " S i s t e m a s I l i s t r i b u i d o s A p l i c a d a s


à Automac%o Industrial". Simpbsio sobre Sistemas
D i s t r i b u i d o s , pp. 129-242, Gramado - RÇ, a g o s t o .

SCHWARZ, G., (%981), "Computadores em Tempo-Real: Uma


I n t r e d u ~ ã oa o s C o n c e i t o s ásieos" . 69PPE/UFRJ, 49". ,
Rio d e J a n e i r o .

SIGRE, L. H., ( 1 8 8 7 ) , "Um situdo d e A m b i e n t e s d e


ramacão D i s t r i b u í d a : P r o p o s t a d e x t e n s õ e s p a r a
MODULA-2". Tese de Doutorado, Coordena~%o das
Programas de P h s - G r a d u a ~ ã a em Engenharia - CBPPE,
Universidade Federal do Rio de J a n e i r o - UFRJ, 338p.,
Rio d e J a n e i r o , dezembro.

SHRIVASTAVA, S. K., (1979), "Strueturing Biçtr-ibuted


Systems Cor Recoverabilitr and Crash Resistance".
TecAn i e a l epor-t , Nr. 149, Csmput i n g Labaratory,
University oC Newcast l e upan Tyne, %6p., England,
Deczernbcr .

SWRIVASTAVAj S . K . & P A N Z I E R I , F . , ( 1 9 8 1 1 , "Tke Besbyn o f a


R e l i a b l e Remate P r e c e d u r e C a l 1 M e c h a n i s m " . Technieal
eport , Nr. 171, C a m p u t i n g k a b a r a t o r y , U n i v e r s i t y o f
Newcast l e upan Vyne, 18p., England, actober.
SILBERSGHATZ, A,, (298%), "Por$ D i r e c t e d Ccmmunisat-ion".
Tke C o m p u t e r J o u r n a l , vsl. 24, no. 1, pp. 78-82,
February .

ÇLCIMAN, M.j KRAMER, J. 8 MAGEE, J . , ( 1 9 8 1 5 ) ~" T h e CQNIC


Toolkik for Building Distribuked Çystems". 40.
rasileiro d e Redes d e Computadores, pp. 148-
157, R e c i f e - P l , março.

SBUZA, M. L. g . , (1$87), " U m S i s t e m a B p e r a c i o n a l d e R e d e " .


Anais d o XX C o n g r e s s o N a c i o n a l de Informática, São
Paulo - S P , p p . 860-864, sekembro.

TSICWRITZIÇ, D. C . B BERNSTESN, P . h . , ( 1 9 7 4 ) , " O p e r a t i n g


âysterns". A s a d e r n i c P r e s s , 2 8 8 p . , New Y a r k , E U A .

WALTER, C. J.; KPECKWAFER, R . H . & FINN, h . M . , (1985),


"MQFT: A Multieomputer Archàtecture for Fault-
Tolerante i n Real-Time C o n t r s l Çysterns".
233-i4@.
Computadores do t i p o IBM-PC t@m t i d o uma
aceitacão cada vez maior no mercado. Çendw utilizado
originalmente em escritários, esse tipo de máquina jzi
a p r e s e n t a um emprego b a s t a n t e d i f u n d i d o tambkm na a u t o m a ~ ã o
industrial e na a r e a d e c o n t r o l e de processos. Vàrios
tipos de interfaces industriais para esse tipo de
equipamento como, por exemplo, i n t e r f a c e ã de e n t r a d a s e
s a i d a s d i g i t a i s e a n a l b g i c a ~ , s % o e n c o n t r a d a s no merc-de.
Computadares da t i p o %BM-$6 c a n s t r u á d e s d e a c o r d o com as
normas para a p l i c a ~ i 3 e sem a m b i e n t e s industriais A são
também f a b r i c a d o s , i n c l u s i v e p e l a i n d ú s t r i a n a c i o n a l .

Pela sua grande popularidade, existe uma


imensa quantidade de programas que sgo e x e c u t a d o s sob o
s i s t e m a s p e r a c i o n a l 0 0 % (IBM, 1987), ou cempativel. Nesse
apondice, r e f e r ê n c i a s ao s i s t e m a o p e r a c i o n a 1 D O S englobam
seus compat b v e i s . Boravante, q u a l q u e r uso da e x p r e s s g o
" s i s t e m a o p e r a c i o n a l " s e r á r e l a t i v a ao P O R T O Ç - T F .

Encontram-se d i s p o n i v e i s no mercado d i v e r s o s
compiladores da linguagem "C" para e s s a máquina sob o
sistema operaciona1 DOS. hlkm dos compiladores,
d e p u r a d a r e s b a s t a n t e poderosos tambgm podem ser empregados
nesse ambiente. Dessa forma, as ferramentas de
desenvol virnent o de s o f t ware em compuk a d o r e s da t i.po SRM-PC
sob s sistema o p e r a c ã o n a l BBÇ permitem a elebora~ão de
programas, i n c l u s i v e na c a t e g o r i a de aoStware b a s i c o , com
um r e l a t i v o c o n f o r t o .

Por e s s e s motivos, computadnres d e t i p o EBM-


PC sob o s i s t e m a o p e r a ã i o n a l DOS foram e ~ e o l h i d o s somo
ambiente de d e s e n v o l v i m e n t o d e s s a p r i m e i r a implementaeão do
PORTOS-TF.

. Bperacão em Conjunto com o DOS:

Chama-se de " s i s t e m a o p e r a c i o n a l n a t i v o " ao


sistema operaciona1 original de um computador. Esse
s i s t e m a o p e r a e i o n a l pode s e r monatarefa e g e r e n c i a r apenas
os r e c u r s o s l i g a d o s ao computador onde s e e n c o n t r a . Ele,
geralmente, provg um s i s t e m a de gerenãiamento de a r q u i v a s .
A operacão em conjunto de um sistema operacianal
distribuida e o sistema operaciona1 n a t i v o do computador
não 6 uma i d é i a nova. De a c o r d o com SOUZA ( 5 9 8 7 ) , ao s e
manter o s i s t e m a o p e r a c i o n a l n a t i v o , o ambiente o r i g i n a l é
preservado e, por conseqUZncia, programas de~envslvidos
para o a m b i e n t e o r i g i n a l continuam a s e r executáveis na
novo a m b i e n t e .

Camo e x p o s t o no c a p í t u l o I , o PORTOS-TF não


provê nenhum s i s t e m a d e g e r e n r i a m e n t o de arquivas. Ele
assume que todo o s e f t w a r e , bisicn e aplicativo, est&
carregada na memória p r i m a r i a da e s t a ~ ã o . A p a r t i r desse
fato, a PBRTOS-TF é i n s t a l a d o no eamputadar e entra em
e p e r a ~ g osem d e s a t i v a r o s i s t e m a o p e r a e i o n a l nativo, isto
6, a DOS.

A operacgo em c o n j u n t o d a PORTOS-TÇ e da BUS


ocorre da s e g u i n t e forma. B PORTOS-TI foi desenvolvido,
usando-se as ferrameritas dispanáveig, para o ~ i ~ t e m a
operaãianal na%i v a (compilador
"C", depurador-, e t c . ) .
Dessa Corma, f o i g e r a d o um programa que tem, em l i n h a s
gerais, o seguinte comportamento p a r a efeitos de
instala~ãa. Em primeiro lugar, faz as iniciaeães
necessirias (variáveis, tabelas, vetares d e interrupcão,
etc.). Em seguida, chama a funcao número 31h (em
hexadecimal) do vetar de f u n $ 8 e s do DOS localizada na
interrup~ão d e s o f t w a r e nGmero 21h (TBM, 1987). Essa
f u n ~ ã ot e r m i n a a execucão do programa, mas d e i x a s e u s 6 d i g o
r e s i d e n t e na memória. A p a r t i r d a i , t o d o a c e s s o ao n ú c l e o
do sistema operacianal será f e i t o pela geracão de uma
i n t e r r u p ~ ã ode ç o $ t w a r e . A i n t e r r u p ~ ã oe s c o l h i d a S a i a de
numera 68h. Essa i n t e r r u p c ã o & usada p e l o s p r o c e s s o s do
s i s t e m a quando querem s o l i c i t a r algum s e r v i ~ oao PORTOS-TF.
Uma outra Çarma d e s e r executado o cbdigo do sistema
operacional é a t r - a v é s da i n t e r r u p ~ ã odo r e l b g i a d e tempo-
real.

Quando o PORTOS-TF é instalado, Cieam


cadastrados junto ao n ú c l e o d o i s processas: o processa
"ocioso" s o processa "fareground". Q precresso
" foreground" c o r r e s p o n d e , I o g a ãpba a i n s b a l a ~ ã o , a o c ó d i g o
do DOS de i n t e r a ~ ã ocom o u s u á r i o da e s t a c g o . O f a t o do
PORTOS-TF e s t a r r e s i d e n t e e operando p a s s a d e s a p e r c e b i d o a o
usuário. P a r a e l e , t u d o s e p a s s a como s e o s i s t e m a
a p e r a e i o n a l d a maquina f o s s e a p e n a s o DaS. R bnico e f e i t o
que pode s e r s e n t i d o é alguma e v e n t u a l queda de desempenho
quando v á r i o s p r o c e s s o s e s t i v e r e m " p r o n t o s " , competindo
pelo processader. n e s s a forma, quando um programa (um
e d i t o r de t e x t o s , um c o m p i l a d o r , um a p l i s a t i v o q u a l q u e r ,
e t c . ) é e x e c u t a d o , e l e p a s s a a s e r e n c a r a d a p e l o PORTOS--TF
como se fosse uma s u b r a t i n a do processo "Sareyraund".
Quando e, p r o rama kermina, é como se o " f o r e s r o u n d " t i v e s s e
retornado da subrotina. I s s o quer dizer que, para o
sistema operacionãl (PORTOS-TF), o s p r o c e d i m e n t a s de c a r g a ,
execuczo e t&rmina d e um programa são encarados somo
d e s v i o s no f l u x o de execucão do p r o c e s s o " f o r e g r o u n d " .

A vantagem a d i c i o n a l que se t i r a ao manter s


BOS a t i v o é, come mencionada a n t e r i o r m e n t e , p e r m i t i r que
programas de mercado sejam e x e c u t a d o s sob a PORTOS-TF como
processes em "fereground". Dessa forma, informa~ões
o b t i d a s por um p r o c e s s o de a q u i s i c ã o de d a d o s , p a r exemplo,
podem ser a r m a z e n a d a s em a r q u i v o s n o f o r m a t o d e DOS para
posterior manuseio a t r a v g s d e pacotes d e mercado.

A.3. Aspectos da Implementa~ão:

elégio d e Tempo-Real:

Computadores d o t i p o PBM-PC a p r e s e n t a m uma


r o t i n a o r i g i n a l d e t r a t a m e n t o d e i n t e r r u p ~ ã e sd e r e l b g i o d e
tempo-real. 0 r e l b s i e d e tempo-real g e r a uma interrup~ão
que esti mapeada no endere~o 8 (aito) do vetor de
interr-up~ges do computador . Essa rotina executa um
c e n j u n t o d e p r o c e d i m e n t o s , d e n t r e a s q u a i ã e s t á o rearrne d a
8259 (pastilha controladora de interrup~6es) através de
envio de um EBI ("End OÇ Interrupt"). Um eu%re,
procedimento e x e c u t a d o 6 a g e r a ~ g od e uma interrup~%ode
software de número ICh ( I C h e x a d e c i m a l ) . A retina de
a t e n d i m e n t o a e s s a i n t e r r u p ~ ã oe x e c u t a a p e n a s uma i n s t r u ~ ã o
de retorno. O o b j e % i v o d e s s a chamada & p e r m i t i r que o
usuário defina, nesse endere~o, uma rotina sua que
n e c e s s i t e d e uma b a s e d e t e m p o s u e , no caso, 6 fornecida
pelo relógio d e tempo-real.

A rotina de tratamento de rel6gi.a pelo


PBRTBS-TF foi colocada originalmente no lugar da
i n t e r r u p ~ ã od e s o f t w a r e I C h . Observou-se, contudo, que o
sistema se p e r d i a . Rpbs a l g u n s testes, v e r i f i c a u - s e que a
rotina original do c e m p u t a d o r mudava d e p i l h a antes de
chamar a inkerrupcão ICh. Como uma i n k e r r u p ~ Z od o r e l b g i o
d e tempo-real p o d e c a u s a r um e s c a l o n a m e n t o ( p a r tempo), a
pilha %amada coma s e n d o d o processe era n a r e a l i d a d e a da
r o t i n a a r i g i n a l d a máquina. Como e s s a p i l h a e r a a mesma em
todas as vezes q u e a c o r r i a uma i n t e r r u p ç ã o de relógie,
independentemente de processo que estava no estado
"rodando", essa p i l h a e r a d a n i f i c a d a c a u s a n d o s d e s c o n t r o l e
do sistema.
A soluç%o encontrada f o i , então, colocar a
r o t ina do PORTOS-PF a n t e s da o r i g i n a l . Dessa forma, o
e n d e r e ~ o da r o t i n a o r i g i n a l f o i mudado p a r a a p o s i ~ a o da
i n t e r r u p ~ % o de ç o f t w a r e 6 t h (uma além da r o t i n a de chamada
d e f u n ~ ã e sdo n ú c l e o do s i s t e m a o p e r a c i o n a l ) . Na pasl~ão
da interrup~ão 8 (oito), f o i assinalada o e n d e r e ~ o da
r a t i n a d e t r a t a m e n t o do r e l ó g i o do P O R T O S - T F . Essa r o t i n a ,
por s u a vez, passou a g e r a r uma i n t e r r u p ~ ã ode s o f t w a r e d r
número b l h p a r a que o s PI-açedimentoç o r i g i n a i s ( i n c l u s i v e o
rearme da 8 2 5 9 ) fossem e f e t u a d o s .

A . 3 . 2 . Troca d e C o n t e x t o :

h t r o c a d e contexto, i s t o &, o salvamento d e


contexto de um p r o c e s s o e p a s t e r i a r r e s t a u r a ~ ã od a q u e l e do
processo seguinte na Lista dos Prontos é uma tarefa
p a r t i c u l a r p a r a cada t i p o de p r o c e s s a d a r d i f e r e n t e .

O s computadores do t i p o XBM-PC ã ã o baseados


em processadares da f a m i l i a do 8 8 8 8 , da Intel. Assim,
e x i s t e m computadores d e s s e t i p o equipados com a s UCPs 8 B 8 8 ,
8828~5 e 88386. Essa f a r n i l i a de p r o c e s s a d e r e s a p r e s e n t a uma
a r q u i t e t ura baseada em endereçamento segment a d o . Cada
endereq.a 4 composto por um par de registradores: um
contendo a segmento e outro o deslocamento dentro do
segment o . Ç%o oç seguintes o% registradores dos
procezisadores d e s s a f a m h l i a :
. AX:
acumulador;
. BX, CX e DX:
uso g e r a l ;
. SI e D a :
p o n t e i r a s p a r a seqUêne8as de b3tesj
. DS:
segmento da i r e a de d a d a s ;
ES :
endereso a u x i l i a r d e segmentaj
ÇS e S P :
segmento e deslocamento, respect ivamente, do topo
da pilha;
BP :
ponteiro auxiliar para m a n u s e i r o de dados na
pilha j

CS e P C :
segmenta e deslocamento, respectivamente, da
p r h x i m a i n s t r u s ã o a ser e x e c u t a d a e
".$lagsi" .

Quanda o p r o c e s s a d o r a c e i t a um pedido de
bnterrup$ão, ele empilha os "flags" o ponteira de
instru&Eies e o s e g m e n t a d a Ares d e c h d i g o . Na e n t r a d a d a
r o t i n a d e tratamento dessa interrups2iu (seja d e relógio, ou
de entrada no nGsleo), os demais registradares são
empilhados. Finalmente, os registradores ponteiros da
p i l h a ("SS" d e s e g m e n t o e "SP" de deslocamento) s ã o salvos,
no descritor do prscesso que foi interrompido, para
posterior recupera~ão. Q procedimento de r e s t a u r a ~ ã o do
eontexka segue o caminhe inverso.

A . 3 . 3 . Uso d e P o n t e i r o s e

Dada a r q u i t et u r a de resi.stradores
apresentada na item anter-ior, p o n t e i r o s e e n d e r e ~ o s podem
ser d e d o i s t i p o b á s i c o s : p r b x i m o s o u d i s t a n t e s . Ponteiros
o u e n d e r e ~ o sp r b x i m o s s ã o a q u e l e s qu.e a p o n t a m p a r a d a d o s o u
f u n ~ G e % e s t ã o d ~ n t r od o mesmo s e g m e n t o . Por conseguinte,
são referenciados apenas pelo valor do deslocamento.
Pontei.ros e endere~ora distantes, em c o n t rapar-t i d a , se
referenciam a d a d o s o u C u n ~ g e sq u e e s t ã o locallrados em
quaisquer aegmenkos ( i n c l u s i v e a p r b p r i o ) . Dessa forma,
e s t e s s ã o r e f e r e n c i a d o s p o r um p a r d e r e g i s t r a d o r e s d o t i p o
asa

"segmento: d e s l o c a m e n t o B '

Por e s s e motivo, algumas defini.qSe5 de t i p o s


se encontram em a r q u i v o s " d e p e n d e n t e s da maquina". Em
outro tipo de arquitetura, esses tipos poderão ser
redefinidoã.

O n ú c l e o do PQRTUS-TF f o i t o d o csmpilado no
modo " s m a l l " do c o m p i l a d o r , i s t o e, todos os seus pontei-ros
e enderecos são do t i p o p r B x i m ~ . Coma ~ X C ~ G % Btem-se

apenas aqueles que se reSerenciam a dados ou fun~oes


p e r t e n c e n t e s a o s p r o c e s s a s do s i s t e m a , uma vez que e s t e s s e
encontram em segmentos d i f e r e n t e s d a q u e l e do n h c l e o .

Nas chamadas ao ntieleo do sistema


o p e r a s i a n a % , por exemplo, é passado como parSmetro um
ponteira para uma e s t r u t u r a de p a r a m e t r o s p a r a o núcleo
( v i d e c a p i t u l o I P I > . No c a ç o d o s equipamentos do t i p o I B M -
PC, e s s e p o n t e i r a 6 do t i p o " d i s t a n t e " p o i s a e s t r u t u r a que
a p o n t a e s t & em o u t r a çcsgmento, o 610 p r o c e s ~ ocl-iamadrar.

u f f e r P o a l " da S i s t e m a :

Originalmente, o " b u f f e r p o a l " do sistema


operaciona1 empregado na a l o c a ~ ã odinâmica d e áreas de
e s t r u t u r a s e à r e a s de mensagens Coi d e f i n i d o como senda um
v e h r de C a r a c t e r e s de tamanho p r e d e t e r m i n a d o . Ocorre que
esse tamanho podia ser insuficiente para algumas
a p l i c a ~ õ e s , uma vez que o número d e e s t r u t u r a s do tipo
deserilor de p r o c e s s o s , nb de árvore, etc. depende do
número de p r o c e s s o s e x i s t e n t e s no s i s t e m a em um d e t e r m i n a d o
instante. A ç o l u c ã o a d o t a d a f e i , obviamente, p e r m i t i r que
e s s e tamanho f o s s e a l t e r a d o em função d a a p l i c a ç ã o .

O tamanha de um v e t o r sO pode s e r alterado


em tempo de e s m p i l a e ã o . Dessa forma, e s s a o p ~ ã od e d e f i n i r
o "posl" através de um vetar de caracteres tornou-se
inviável. A u t i l i z a c ã e da p r i m i t i v a d e a l o c a c ã a de & r e a do
DOS a p r e s e n t a v a o problema de que e s s a a r e a t e r i a que ser
referenciada atravks de p o n t e i r o s do tipo "far". Foi,
entao, escolhida a o p ~ ã ode s e u t i l i z a r a 6 r e a de "keap"
deixada p e l a compilador l o g o a p ó s a i r e a de v a r i á v e i s não
iniciadas. Uma vez que e s t a & r e a é a l o c a d a atraves da
chamada da prámit i.va "mal l o e " da b i b l i o t e c a da c o m p i l a d o r ,
e l a pode s e r p a r a m e t r i r i i v e l em tempo de execucão e não m a i s
em tempo de c s m p i l a ~ ã o ,cornu no c a s o o r i g i n a l .

h b i b l i o t e c a padrão da linguagem "C" possui


uma s é r i e de f u n ~ o c sd e e s c r i t a em v i d e o . O use dessas
funcze%, contudo, acarreta um aumento s i g n i f i c a t i v o do
c h d i g o do programa que a s u s a . Mais c r i t i c o do que i s s o é
que e l a s u t i l i z a m a i n t e r r u p ~ ã ode s n + t w a r e de nMmero 18h
do BEOS ( " B a s i c I / O System") d a msquina. B problema & que
a primeira i n s t r u ~ ã o da retina de tratamento dessa
i n t e r r u p ~ ã a& uma i n s t r u ç ã o d e h a b i l i t a ç ã o de a c e i t a ç s o de
i n p e r r u p ~ ã a pela UCP. nlém d i s s o , essa r o t i n a 6 muito
lenta. Na e s c r i t a d e uma f r a s e , por exemplo, e l a & chamada
v á r i a s vezes. Dessa forma, se o tempo de e s c r i t a f o r maior
da que o periodo da relágio (que nas EBM-$6 4 de
aproximadamente 55 ms) o código da núcleo ser&
interrompida. Como ele k reentrante,
não pois usa
v a r i á v e i s g l o b a i s , o s i s t e m a p a d e r á 5% p e r d e r .

P a r a s o l u c i o n a r e s s e problema e p e r m i t i r - que
o código do n ú c l e o do s i s t e m a o p e r a c i o n a l escrevesse na
tela (e que era feito em duas oeaãiões: durante
pr-oeedimentoa de depuraczo ou de excecao) foram
d e s e n v o l v i d a s algumas funtzões. E l a s empregam a p o l É t i e a de
e s c r e v e r d i r e t a m e n t e na memária de v i d s o do computador, que
f i c a a p a r t i r do e n d e r e c o a b s o l u t o de memória B84388k. Esse
tipo d e tela, em s u a c o n f i g u r a ~ ã oo r i g i n a l , é composta d e
2% l i n h a s e 8@ c o l u n a s . Cada caractere é armazenado em
dois bykes Cum com o c a r a c t e r e p r o p r i a m e n t e d i t o e outro
com seus atributos: c o r do c a r a c t e r e , cor da funda e
i n d i c a c ã o d e s e d e v e p i s c a r ou n ã o ) .

Essas rot inas, como pode-se notar, são


extremamente d e p e n d e n t e s não s6 da máquina como tamb6m da
c o n f i g u t - à ~ ã od e s t a . Desse modo, sempre que a c o n f i g u r ã ~ ã o
mudar, e l a s poderão s e r r e e s c r i t a s .
Nesse a p g n d i c e siga d e ~ c r i t eo 5~ protbt i p o ~
d a s r o t i n a s d e i n t e r f a c e com o n ú c l e o do P O R T O S - T F . Essas
r o t i n a ã e ã t z o e s c r i t a s na l i n g u a g e m " C " .

No item B. i são explicados as tipos


definidos que não s z o p a d r ã e s d a linguagem "C". Esses
t i p o s s e r r e s p o n d e m a t i p o s padroesi do "C" (unaisned, ckar,
etc.1. Nesse item serão mostradas as correspondfineias
usadas na i m p l e m e n t a ~ a n em c o m p u t a d o r e s da tipo IBM-$C.
Essa correspondência, todavia, & d e p e n d e n t e d a maquina s
p e d e s e r a l t e r a d a quando o s i s t e m a o p e r a e i o n a l f o r migrado
para o u t r o t i p o de equipamento.

No item B . 2 sgo, entgo, apresentados os


pretátipos daí p r i m i t i v a s acompanhados d e sua fun&%o e
d e s c r i c ã o dos parametros e v a l o r d e r e t o r n o .

x p l i s a e ã o d o s Tipos não-padrões

- T i p o : BOOLEAN
S i g n i f i c a d o : armazena v a l o r e s " $ s e l e a n o s i " ( 8 ou 1 ) .
D e f i n i ~ ã o :e n u m e r - a ~ a o ( F A L S E , TTRUE).

- Pipa: FAR
S i g n i f i c a d o : i n d i c a que o t i p o a e l e a d j a c e n t e é d e tipo
"longa", eu seja, e s t á em o u t r o segmenta
diferente do corrente. E s s e t i p o não faz
sentida em a r q u i t e t u r a s que ngo trabalham
com o c o n c e i t o d e s e g m e n t a .
Befinicao: f a r .
- T i p o : SENTIDO-PORTO
Significado: I n d i c a o s e n t i d o do p o r t o .
D e C i n i ~ ã o :e n u m e r a c ã o ( S A I D A , ENTRADA>.

- T i p o : TIPO-FATIA-TEMPO
Significada: indica o numero d e pulsos. d o relógio que
d u r a u m a f a t i a d e t e m p o d e um p r o c e s s o .
Definie%o: unsigned

- T i p o : TIPQ-ID-PROC
Significado: i n d i c a um n u m e r o d e um p r o c e s s o .
Definição: unsigned

- Tipo : TIPO.-PILHA
S i g n i f i c a d o : a r m a z e n a o v a l o r d a p o n t e i r o para a t o p o da
p i l h a d e um p r o c e s s o .
Definição: struct contexto f a r

- T i p e : TIPO-PWE
Significado: i n d i c a a p r i o r i d a d e d e um p r o c e s s o
D e f i n i ~ ã o :u n s i g n e d c h ã r

- T i p e : TIPO-,PROCESSO
Significado: i n d i c a o e n d e r e ~ si n i c i a l d e um p r o c e s s a .
D e f i n i ~ % o :v o i d f a r ( w f u n c ) O
- T i p o : TIPO-RBT-SERV
Significado: indica o e n d e r e ~ a i n i c i a l d e uma r o t i n a d e
servico.
Def i n i g % o : v a i d f a r ( + + C u n c> ( >
- T i p o : TIPO-STATUS-COMUNIGBCAO
Significada: Indica a resultada de uma apera~ãa de
c o m u n i c a ~ ã o (envia, recebe s u responde).
D e f i n i ~ ã o :enurner-a$%o ( O K ,
PORTO-INEXLSTENTE,
%%NT%~O,INCOMPATIVEL,
NAO-HA-MENSAGEM,
BUFFER-INSUFICIENTE,
PEDIDO-JA-ATENDIDO,
FIM-TmMPB-ESPERA>

- T i p o : TIPO-TEMPO-ESPERA
Significado: indica a numera máximo d e pulsas da relógio
que um processo aceita ficar- bloqueada.
D e f i n i ~ ã o :unsigned
. 2 . P r o t é t i ~ s sd a P r i m i t i v a s do Núcleo:

- Nome: c r i a - p r o c e s s o
Funcãa: c r i a r um nove p r o c e s s o .
Prok b t i p o :
IIPB.-ID-PRQC
cria-processo (

TIPO-PROCESSO PToc,
TIPO-PR% prioridade,
TIPO-FATIA-TEMPO fat i a ,
TIPO-PPLI-IA pilha,
unsigned dados );

Parâmet r o s :

. prac: e n d e r e ~ oi n i c i a l d o p r o e e ç s n
. p r i o r i d a d e : p r i o r i d a d e do p r o c e s s a
. fatia: número d e p u l s o s do r e l 6 g i . o d a f a t i a de
t empo
. pilha: e n d e r e e o d a b a s e da 5 r e a r e s e r v a d a para
a p i l h a da s i s t e m a
. dadas segmento i n i c i a l d a á r e a de d a d o s
Valor d e R e t o r n o : i d e n t i S i c a d o r do p r o c e s s a c r i a d o . IJm
valor n u l o i n d i c a que a operacãa não
f o i bem s u c e d i d a .

- Nome : mata-processo
F u n ~ ã o : e1 i m i n a r um p r o c e s s a e x i s t e n t e .
P r o t Ot i.po :
TIPO_IB,.F'RB6:
mat a-pr-oeeãso (

TTPB-ID-PROG prac ) ;

Paramet r o s :

. p r o c : i d e n t i f i c a d o r do p r o c e s s o
Valor d e Retorno: i d e n t i f i c a d a r do processo eliminado.
U m v a l o r n u l o i n d i c a s u e a o p e r a e g o não
f o i bem s u c e d i d a .
- Nome: e u
F u n ~ â o : o b t e r s n ú m e r o d e um p r o c e s s o e x i s t e n t e .
Prot ót i p s:
TIPO-&D-PRBC
eu( ) j

ParSmet ros :
NENHUM
Valor d e R e t o r n o : i d e n t i S i . c a d o r d o processo c h a m a d o r

- Nome: b l o q u e i a , p u e c e s s o
F u n c ã o : b l o q u e a r um p r o c e s s o e x i s t e n t e .
Pretót ipo:
TIPO-PD-PROC
bloqueia-processo(
TIPO-ID-PROC PrQC,

TIPO_YEMPB-ESPERA tempo,
TIPO-ROT-SERV rot- )
~ É ~ Y V j

Parâmek ros :
. pr-oc: idenk i S i c a d e r d o p r o c e s s o
. k empca : t e m p o máximo d e espera
. r s t - s e r v : andereize d a r o t i n a d e s e r v i ~ a
V a l o r de R e t o r n o : i d e n t i f i c a d o r d s p r o c e s s o b l o q u e a d o .
Um v a l o r n i i l o i n d i c a q u e a o p e r a G ã o n ã o
f o i bem s u c e d i d a .

- Nome: l i b e r a - p r o c e s s o
F u n - % s : l i b e r a r um p r o c e s s a e x i s t e n t e .
Protht ipa:
TIPO-TD-PROC
libera,prosesso(
TIPO-1D-PROC prac );

P a r â r n e t res :

. pree: idenkificador do processo


V a l o r d e Ret o r n e : i d e n t i f i c a d s r do processe l iber-ads.
Um v a l o r n u l o i n d i c a q u e a s p e r a e % o não
f o i bem s u c e d i d a .
- Nome : pega-prioridade
F u n ~ z o :o b t é m a p r i o r i d a d e d e u m p r o c e s s o e > < i s t e n t e .
Protót ipo:
TIPO-PRI
pega-prioridade(
TIPO-EB-PRBC proe );

Par-Smet r o a :

. proc: identificador do processo


Valor d e R e t o r n o : p r i o r i d a d e d o p r o c e s s o . Um v ã l a r n u l o
indica que a operaçso nZo foi bem
sucedida .

- Nome: m u d a - p r i o r i d a d e
F u w ~ ã o : a l t e r a a p r i o r i d a d e d e um p r o c e s s o e x i s t e n t e .
ProtBt ipa:
TIPO-PRX
muda-prioridade(
TIPO-GB-PROC PTQC ,
TIPO-PRE prioridade ) ;

Parâmet ros :

. proc: ident ificador do processo


. p r i o r i d a d e : nova p r i o r i d a d e d a processo
Valor d e R e t o r n o : p r i o r i d a d e a n t e r i o r do processa. Um
valor n u l o i n d i c a que a opera-ão não
f o i bem s u c e d i d a .

- Name: p e g a - r a t i a
F u n ~ ã o : o b t é m a f a t i a d e t e m p o d e um p r o c e s s o e x i s t e n t e .
F'rotót i p s :
TIPO-FATIA-TEMPO
pega-fat ia(
TIPO-IB-PROC prnc );

Parâmet ras :

. prac: identificador do processo


Valor d e R e t o r n o : f a t i a d e tempo d o p r o c e s s o . Um valor
nula i n d i c a q u e a s p e r a ~ a an ã o f o i bem
cjucedida .
- Nome: m u d a - f a t i a
F u n ~ ã o : a l t e r a a f a t i a d e kempo d e um p r o c e s s o e x i s t e n t e .
Prakbt i p o :
TIPO-FATIA-TEMPB
muda-fat i a (
TIPO-ID-PROC proc,
TIPO-FATIA-TEMPO Qatia );

Parâmet r o s :
. pros : i d e n t i f i c a d o r do p r o c e s s e
. fatia: n o v a Cat i a d e tempo d e p r o c e s s o
V a l o r de R e t o r n o : f a t i a de tempo anterior do processo.
Um v a l o r n u l o i n d i c a que a a p e r a ~ s sn ã o
f o i bem s u c e d i d a .

- Nome: c o n g e l a - f a t i a
F u n ~ ã o : suspende a c o n t a g e m d e tempo d a f a t i a de tempo d o
processo c o r r e n t e .
P r o t ák i p c s :

void
congela-fat i a ( >;
Pargmet r o s :
NENl-iUM
V a l o r d e R e t o r n o : NENHUM

- Nome: d e a c o n g e l a , f a % i a
F u n ~ a o :r e t o m a a c o n t a g e m d e tempo d a f a t i a d e tempo do
processo c o r r e n t e .
P r o t 6's i p o :
void
descongela_fat i a ( ) ;

Parâmet r 0 5 :

NENHUM
V a l o r de R e t o r n o : NENHUM
- Nome: h a b i l i t a - e x c e c a a
F u ~ G ~A
o u: t o r i z a o s i s t e m a e p e r a c i o n a l a g e r a r uma dada
exee~ão.
Protótipo:
void
h a b i l i t a-cxceeao(
unsigned tipo ) j

Parsrnet r o s :

. t i p o : t i p o da exceG%o
Valor de R e t o r n o : NENHUM

-- Nome: d e s a h i l i t a-excecao
F ' u n ~ z o : Impede o s i s t e m a o p e r a c i o n a l de g e r a r uma dada
c3xee~ùo.
Pr-at á t i p o :
vaiei
d e s a b i l i t a-exseeao(
unsigned tipo ) i

Parnmet r o s :

. c' i p n : t i p o da exceção
Valor d e R e t o r n o : N E N H U M

- Nome: h a b i l i t a - e s e a l o n a m e n G Q
Funqão: A u t o r i z a o sistema operacional a efetuar um
e s ç a l enament o .
Protbt i p o :
veid
h a b i l ita,escalonamento( ) i

ParSmet r a s :

NENHUM
Valor d e Weksrna: N E N H U M
- Nome: d e s a b i l i t a - e s c a l o n a m h
F u n ~ ã o :B e s a u t a r i z a a sistema operaeional a efetuar um
esralenamenta.
P r o t 6k i p e :
veici
d e ç a b i l ita--escalenarnentc)C ) j

Parâmekros :
NENHLJM
V a l s r d e R e t o r n o : NENHUM

- Nome: d e s a b i l i t a _ e x c e c a a
F u n q Z o : Impede e s i s t e m a s p e r a c i o n a l d e g e r a r uma dada
exc@~ãcs.
P r o t 6%i p e :
void
d e s a b i l i t a-excerae(
unsigned kipo ) ;

Parâmet r a s :
. t i p a : t i p o da e x c e c ã o
V a l o r d e R e t o r n o : NENHUM

- Nome: e s c a l o n a
F u n c Z n : Cede a p r o c e s s a d o r .
Prakbt i p o :
void
escalona( );

Parâmet ros :
NENHUM
V a l e r d e R e t o r n o : NENHUM
- Nome: c r i a - p e r t o
F u n s s o : C r i a um n o v o p o r t o .
P r o t át i p o :
BQYLEAN
cria-porto(
unejisned numero,
TI$B_ID-PROC prec,
SENTIDO-PORTO s e t = ~ t . i . d o) ;

Parâmetros:
. numero: numero d o p o r t o
. prec: i d e n t i f i c a d o r d o p r o c e s s o ao q u a l pertence
0 porto
. s e n t i d a : s e n t i d o do p o r t a
Valer d e R e t o r n o : V e r d a d e i r o , se s porto foi criado.
Falso zie não.

- Nome: e l i m i n a - p o r t o
F u n c ã o : E l i m i n a um p o r - k o e x i s t e n t e .
P r o t 6t i p o :
BOQLEAN
e 1i m i n a - p o r t a (
unsigned numet-O,
TEPO,ID,PROC prsc ) i

P a r % m e t rozi :

. numero: número d o p a r t o
. prac: i d e n t i f i c a d a r do processo a o qual pertence e
porto
Valar d e R e t o r n o : V e r d a d e i r a , se a porto foi criado.
F a l s o se n ã o .
- Nome: l i g a - p o r t a
F u n ~ S o : ~ i g ad o i s p o r t a s ; e x i s t e n t e s .
Protót bpo:
ESUULEAN
liga-perta(
unsigned porto-1,
T%PQ,IB,PROC proc-port o-l ,
unsigned p o r t 0-2 ,
TIPO-ED-PRQC pree-perto-i2 );

Parârnet t a s :

. porto-.l: n ú m e r o d e um d o s p o r t o s
. proc-porto-1: identificador do processo ao qual
p e r k e n c e esse p o r t o
. porta-.%: número d o o u t r o p o r t o s
. proc__porto,2: identificador do procee;sa ao qual
p e r t e n c e esse o u t r o p o r t o
Valor d e R e t o r n o : V e r d a d e i r o , se o porta foi criado.
Falso se nas.

- Nome: d e s l i g a - p o r t o
Funcso: Desliga d o i s portos e x i s t e n t e s .
Prot ót ipo:
BOQbEFtN
desl iga-porto(
unsiyned por"c-1,
TIPO-ID-PROC prac-porta--l,
unsigneef porto-E!,
T%PO_&M.-PRBC p r a c - p o r t 0-2 ) ;

Parsrnet r o s :

. porta-l: n ú m e r o d e um d o s p o r t o s
. prsc-.porto-l: ident ificador da processo as qual
p e r t e n c e esse p o r t a
. porto-2: númers d o o u t r a portos
. proc-parto--2: ident iÇicador da prtacesso ao qual
p e r t e n c e esse o u t r o p o r t o
Valor d e R e t o r n o : V e r d a d e i r a , se o porto foi criado.
F a l s o se n ã o .
- Nome: envia
F u n e ã o : E s c r e v e uma mensagem em um p o r t o .
Prot át i p o :
TEQB-STATUS-.CDMUNICBCAO
envia(
unsignc-d p o r t c),
e h a r FAR %me~vsi,
unr,igned k am-mens,
c h a r FAR +tresp,
unsigned t am-resp,
TPPQ-TEMPO-ESPERA i-_e%;p ) ;
ParSmet r o s :
. porto: número d o p o r t a
. rnepls: ponteira p a r a a " b u f f e r " que contem a
mensagem
. tam-mens: tamanho da mensagem
. re-p: p o n t e i r a para o " b u f f e r " ande s e r á c o p i a d a
a r e s p o s t a d a mensagem
. tam-resp: tamanho do " b u f f e r " da r e s p o s t a
. t-esp: tempo de e s p e r a p e l a r e s p o s t a
V a l o r de Retorno: Indica o estado da opera~fio (vide
de$ini~ãcs do t ipo
"TIPO-STATUS-GOMUNPCAGAQ" ) .
- Nome: r e c e b e
F u n c ã o : LB uma mensagem d e um p o r t o .
P r o t 6t i p o :
TIPO-ÇTATWÇ-COMUN%CAC&O
recebe(
unsigned porta,
char F&R JC m eri 5 ,
unsignecl t am-menç,
TIPO-TEMPO-ESPERA t ,esp i j
Pargmet r o s :

. porto: nllmero do p o r t o
. mens: ponteiro para o "buffer" onde s e r & c o p i a d a
a mensagem
. tam-mens: tamanho d a mensagem
. t-esp : tampo d e e s p e r a p e l a r e s p o s t a
V a l o r de R e t o r n o : Indica a estada da operaesa (vide
def bnicão do tipo
"TIPO-ÇTATUS-COML~NPCACAU" .

- Nome: r e s p o n d e
F u n c ã o : E n v i a uma r e s p o s t a a uma mensagem.
ProkBt i p o :
TIPO-STATUS-CQMUNICAC88
rec>ponde(
unsigt?ed p a r t o,
c h a r FhR aresp,
unsigned tam-resp )

Parâmet r o s :
. porta: ncmero d n p o r t a
. rerip: ponteiro para a "buffer" onde esta a
reçposta
. tam-resp: tamanho d a r e s p o s t a
V a l o r de R e t o r n o : Indica o estado da operacao (vide
d e f i nicão do tipo
"TEPO,ÇYATUÇ-COMUNICAIdAa"~,
- Nome: s e l e c
& u n s % s : A b r e um b l o c o d e s e l e e ã o
Prokbt ipa:
void
selec(
P a r a m e t rss :
NENI-1LJM
V a l o r d e R e t o r n o : NENHUM

- Nome: fim-selec
F u n c ã a : F e c h a um b l o c o d e - e l e - % o .
PreathEr i p e :

TIPO-ÇTblUS-CBMUNICACAD
.Fi.m-se1 e e (
T SPB-.TEMPO,ESBERh t-esp ;

P a r â m e t -0% :
. t-esp: t e m p o d e e s p e r a p a r uma m e n s a g e m .
Valar d e R e t o r n o : I n d i c a o estade da aperac%s (vide
definição do tipo
"TIPO-STATUS-C0MUNI:[7ACABB' ) .

- Nome: p o r t a - u l t i m a - m e n s a g e m
F u n ~ ã o :I n f o r m a a parta ande chegou a mensagem mais
reer_r?%e.
Prot6t ipa:
unsigned
porta-u~tima,menáag@m( 1;
Par2met r o ç :

NENHUM.
V a l a r d e R e t o r n o : n b m e r o d a p o r t e que r e c e b e u a m e n s a g e m .
- Nome : eçt a d o - s i s t ema
Funpão: Bar i n f o r m a ~ õ e s sobre a estada corrente do
sieit e m .
Igrlstbt i p e :
void
estado,s%stema(
struct estada-sistema F A R
Parâmek uos :
. estado: p o n t e i r o para uma
copiadas a s i n f o r - m a ~ õ e s
V a l o r d e R e t o r n o : NENHUM
Nesse a p e n d i c e , szo apresentados comentários
sobre as t e x t o s r e l a c i o n a d o s n a s r - e f e r e n c i a b i b 9 i o s r i f i c a s
que tem como n b j e t i v s d e t a l h a r , u m pouco mais d o que o
titulo, o e s c o p o d a p u b l i c a ~ g a . No i t e m C . i s a o c o m e n t a d o s
os t e x t o s ligados a sistemas operacisnais, e n q u a n t a que n o
item 12.2 s e acham o s t r a b a l h o s r e f e r e n t e s a " ~ c s % @ r â r i e i aa
falhas. No i t e m 6 . 3 , e s t ã o aa demais r e f e r s n c i a s .

C . i. Textos e l a t ivos a S i s t e m a s B p e i a e i o n a i s

" B p e r a t i n g Systems P r i n c i p l e s " .

"THBTH, 4 P e r t a b l e Weal-Time O p e r a t i n g Çystem".

ExpSe as a s p e c t o s t é c n i c a s de um Sistema
Bperacienal d e Tempo-Real i m p l e m e n t a d o com o ob,-jet.iva
de ser portátil. E dada G n f a s e à e s t r u t u r a ~ ã o do
sistema operacional quanto aos p o n t o s dependentes e
i n d e p e n d e n t e s do l s a r d w a r e , definindo-se uma "rriiiquina
padrão" . Percebe-se que a l i n g u a g e m d e programacão
adotadã k de fundamental i m p o r t â n c i a p a r a ã defini~i?io
dessa máquina.
"An Xntraduct ian to Bperat ing Syskems"

Livro introduthrio aos sistema-,


operacionais. 4borda uma vasta gama de thpieos nesta
área, terminando pelo estudo de casos de alguns
sistemas operacionais comerciais.

"The Cnet INTERNOBE Communication Mechanism"

"Proposta de uma hrquitetura de um Sistema Operaciena1


de Tempo-Real".

Prsp5e uma arquitetura de um Sistema


Bperaci~nal de Tempo-Real baseada no conceito d e
Maquinas Virtuais.

"Towards a Theary a f Parale11 Programming".

Elabora uma p r o p o a i ~ S ssobre gerenciamen%a


de regi8es criticas e regitíes criticas condicionais.

"Struetured Concurrent Programming wit h B p e r a t ing


Çysterns 4 p p l icat ions" .
Aborda a tema da e o n c s r r G n c i a i l u s t r a n d o s u a
c o n v e n i e n c i a e o s prob2emaç d e l a o r i g i n a d o s . Comenta
a e s t r u t u r a ~ ? i ode um s i a t e m a o p e r a c i o n a 1 e d i s c u t e uma
implementaizão.

Aborda o emprego p o r t o s na csmunicae~o e


sincronizacãe e n t r e processes.

"!Jesenvolvimento de Suporte B6sico para Sistemas


Operacionais Distribuidos".

Discute a cemunicacão e s i n c r o n i z a c ã o e n t r e
p r o c e s s o s , a p r e s e n t a n d o um p r o j e t o d e um s u b s i s t e m a d e
eomunicaizão.

KIRNER & MENDES ( 1 9 8 8 ) :

" S i s t e m a s O p e r a c i o n a i ç D i s t r i b u í d a s : Aspectos G e r a i s e
Análise d e s u a E s t r u t u r a " .

Aborda aspectos caneeikuais r e l a t %vos a


Sistemas 0peraeienai.s Bist r i b u á d o s , dando Enfase a o s
mecanismos de comunicacão e sincroni+ac%o entre
p r o c e s s o s e l i n g u a g e n s d e prsgramaeão c o n c o r r e n t e .

K I R R M A N N & KAUFMAMN ( 1 5 ' 8 4 ) :

"Poolpo - A Poal of P r o c e s s o r s Por Process Contrsl


Appl i c a t i s n s " .

Descreve a i m p l e m e n t - c ~ o de um "pool" de
p r o c e s s a d o r e s , f o r t e m e n t e aeoplado-zi, p a r a a p l i c a ~ % eom
controle de processos em tempo-real. Expõe as
carãcterásticas do n ú c l e o de tempo-real desenvolvido
para essa a r q u i t e t ura . Discute p r i a r i d a d e e seus
e f e i t o s na preempçzo d o s P~BC~SSQS. & d a t a a o p ~ ã od e
execu$Zo c i c l i c a d a s p r o c e s s o s .

"CONIC: An I n t e g r a t e d Appraaeh t a D i ã t r i b u k e d Centro1


Syc;"cenic;".

Aborda o emprego p o r t o s na csmuniea~ga e


sincroniza-ão entre processos.

KWAMER & MAGEE C1985):

Após uma i n t r a d u ~ ã o sobre configura~ão


estática e dinâmica de s i s t e m a s d i s t r i b u i d o s ou nao,
a p r e s e n t a as e a r a c t e r i s k i c a s n e c e s s á r i a s e desejáveis
de uma linguagem de prsgrama~%a e um sistema
o p e r a c i o n a 1 p a r a p e r m i t i r a recanSiguraci%o dinâmica
um sistema de software. Descreve, ainda,
p r i m i t i v a s d i s p o n í v e i s no C O N % C p a r a e s s e f i m .

" P r i m i k i v e s S s r B i s t r i b u t e d Comput i n g " .

Aborda o emprego p o r t o s na comunicaeão


sincronização entre processas.
MABNPCK & DONBVAN ( 1 9 7 4 ) :

"8perat ing Syst ems"

Livro int rodut brio 3.05 sist emas


operacionais.

M A 9 & YEW ( 1 9 8 8 ) :

"Gommuniration Port: A Lansuage Concept for Concurrent


Proressing".

Aborda o emprego portos na comunica~ão e


sincroniza~ãoentre processos.

MENBES ( 1 9 8 4 ) :

"Prosrarnaqao Concorrente: Mecanismos de Comunicaq?io e


Sincroniaacãs de Process~s".

Explora s tema d e Programaqão Concorrente


estudando mecanismos de comunicação e çineraniza~ão
entre processas. E mostrada a apraximação crescente
entre sistemas aperacionais e aã linguagens de
programação, na medida em que estas vem incorpsrando
caracteriçticas providas pela sistema aperacisnal.

"Contra1 and Csmmunisatian in Pregrammed Çystems".

Aborda o emprego portos na cornunica~ão e


aincronizaç$a entre processos.

RUFGEERO & BRESÇAN (i.982):

"Um Modelo de Prsgrama~aopara Sistemas Distribuido%".


Aborda a emprego p o r t o s na
s i n c r o n i n a ~ ã oe n t r e p r o c e s s o s .

"Sistemas Bistribuidos Apl ieadas A Aut o m a ~ ã o


Indust r i a l " .

Descreve a estrutura de um sistema de


controle e os niveis de um sistema distribuído.
Apresenta a i m p l e m e n t a ~ Z od e um sistema operacionãl
d i s t r i b u i d o u t i l i z a n d o semziforss e t r o c a de mensagens.

ÇCHWARI ( 1 9 8 % ) :

"Computadores em Tempo-Real : Uma Introduqãa aos


C o n c e i t o s B&sic.os".

Apresenta uma introdu6Sa aos sistemas de


c o n t r o l e de p r o c e s s o s . Aborda q u e s t õ e s d e a n a l i s e de
s i n a i s , a q u i s i i ~ z ode dadoa, e o n f i a b l l i d a d e e s e g u r a n e a
de s i s t e m a s de computadores, ss-Ftwarc de tempo-real
(sistema o p e r a c i a n a l e a p l i c a t i v o s ) e fundamentos de
s i s t e m a s de c o n t r o l e .

"Um Estudo d e Ambientes de Programa~ão Distribuida:


P r o p o s t a de Exxtençges p a r a MODULR-2".

Faz uma r e v i s g o em sistemas aperasionàis


distribuidos, dando @nfase ao endere6amento de
p r o c e s s o s por p o r t a s . D i s c u t e c e n $ i g u r a ~ ã o dinâmica
de s i s t e m a s d i s t r i b u i d o s e comenta uma implementa~ão
de um mecanismo de c o m u n i c a ~ ã oe n t r e p r o c e s s o s b a s e a d a
em chamada remota de p r o c e d i m e n t o s .
SJLBERÇCWATZ ( 1 9 8 1 ) :

"Port B i r e s t e d Communicat i o n "

Aborda o emprego p o r t o s na csmunica~ãs e


s i n c r o n i z a ~ ã oe n t r e p r o c e s s o s .

ÇLUMAN, K R A M E R & MAGEE (1886):

"The CBNIC Toolk i %f o r Wuilding Dist r i b u t e d Çyst ems"

A p r e s e n t a a s l i n g u a g e n s d e p r n g r a r n a ~ ~ ãeo de
c o n f à g u r a ~ ã o do Ç8NIC ( q u e é um s i s t e m a distribuido
p a r a c o n t r o l e d e p r o c e s s o s em t e m p o - r e a l ) . Explora a
- F l e x i b i l i d a d e p a r a r e c o n f i g u r a ~ ã odinâmica d o s i s t e m a .
Propõe um s i a t erna de comun i c a - % o entre processos
baseada em portas. Qs mbdulos são gerados e
compilados independentemente valendo--se da 1 inguagem
de programa~ãa. A linguagem d e c o n f i g u r a c ã o é usada
p a r a 1i g a r o s p o r t o s e n t r e s i .

" U m S i s t e m a Operaciona1 de Rede".

Apresenta um sistema operacional de rede


cernercial que opera em conjunto cem o sistema
operacional nativo d a e s t a ~ ã o .

"Operat i n s Çyst ems"

Livro int radut b r i o aos siskemas


eperaeionais .
RNBERSON & K N E G M T (1981>:

"Pract i c a l S o f t ware Faul t Voleranee for Real-Time


System~.".

Enfeca a q u e s t a o de f a l h a s de s o f t w a r e euma
s e n d o " e r r o s de p r o j e t a do s e f t w a r e " , impoasiveis de
s e d e t e c t a r "a p r i a r i " . Propãe s o l u ~ o e sb a s e a d a s em
grafos de s i n s r o n i r a q ã o e na s u b s % à t u i g % ode p r o c e s s o
faltsso por outro funcionalmente equivalente, mas
p r o j e t a d s independent e m e n t e .

ANDERSBN & LEE ( 1 9 8 1 1 :

" F a u l t l a l e r a n c e , Principies a n d P r a c t i c e " .

L i v r o s o b r e t & c n i c a ã de t o l e r â n c i a a f a l h a s .
Este livro @ b a s t a n t e u t i l i z a d o como referEncia em
diversos t r a b a l h a s nessa i r e a .

ANBERSBN & LEE ( 1 9 8 2 ) :

"Faul t T o l e r a n e e Terminulogy P r o p e s a l s " .

Propge uma série de termos a serem


empregados na área de t o l e r â n c i a a falhas. (Ver
tamb6m LAPRIE ( 1 9 8 5 ) ) .

AVI%XENIS & o u t r o s ( 1 9 8 5 ) :

"The UGbA BEDIX System: A Bistributed Testbed far


Multbple-Verabsn Çoftware".

AQQÇ discutir a s t & c n i c a s de "fsrward" e


"baek ward reeovery", apresenta um sistema de
e x p e r i m e n t a ~ ã s de mecanismos de t o l e r S n c i a a falhas
que u t i l i z a a t k c n i c a d e N-versões. 0 algoritmo de
decisZa empregado é gen&rico, implementande (a
c o m p a r a ~ % o$ i % - a - b i t , ( b ) por c a d e i a s d e c a r a c t e r e s e
( e ) comparacão de numero- inteiros e reais. 0 sistema
& dividido em náveis hierárquicos e trabalha com
decisões locais e globais.

BELLBN & Ç A U C E E R ( 9 9 8 2 ) :

" P r o t e c t ion asainsk Externa1 E r r e r s i n a Dedicated


Çystem".

Estuda a c e n t a m i n a ~ ã ad e s i s t e m a s por erros


externos a eles e propze uma t h c n i c a de detee$%s e
r e e u p e r a ~ ã i - ,de .FàIhàei c a u s a d a s p e l a contamina6ão.

CAMPBELL & R A N B E L L ( 9 9 8 3 ) :

" E r r o r Recavery i.n Asynchraneus Çystems".

Prapge tkcnisas de "forward" e "backward


err-sr recovery" baseadas em a~8es at0~iicas e
t r a t a m e n t o de e x s e 6 õ e s de s o f t w a r e .

CAMPBELL, AMBEWÇON & RANDELL (i883):

"Pract i c a l Fault l o l e r a n t Software for Asynchronous


System~".

Estuda o t r a t a m e n t o de exceGãeã e "backward


error r e c o v e r y " a t r a v k s de s p e r a ~ õ e s cntgmicara e
abjetos recuperáveis.

"Repl i s a t e d P r o c e d u r e Cal 1"


D e s c r e v e uma i m p l e m e n t a ~ Z ode chamada r e m o t a
de procedimentos em uma arquitetura de módulas
replicados. Na r e p l i c a ~ ã a& - d o t a d a a t b c n i c a de "N-
versEes".

"Exeepk i o n Wandl i n g and S o f t w a r e F a u l t T e l e r a n c e " .

Caracteriza mecanismos d e e x c e ~ g oe mostra


como pedem s e r empregados em mecanismos de t o l e r â n c i a
a falhas.

LWIÇTIAN & o u t r o s ( 1 9 8 5 ) :

A p r e s e n t a t rGa p r e t o c o l o s d e d i f u s ã o a t â m i s a
d e mensagens: o p r i m e i r o t o l e r a f a l h a s de o m i s s ã o , e
s e g u n d a f a l h a s d e tempo e o k e r c e i r s f a l h a s g e r a i s ( o u
falhas "bizantinaç"). O p r e t a c o l o ãe b a s e i a n a tempo
absoluto indicado em c a d a e s t a c ã o l e v a n d o em conta
eventuais diferen-as d e s i n c r a n i s m e e n t r e elas.

"Tssues i n t h c Desisn o f H i g h l y A v a i l a b l e Camputing


Systcdma" .

Discute s g e r e n c i a m e n t a da disponibilidade
de grupos de s e r v i d o r e s . Faz uma abordagem resumida
sobre o problema da m a n u t e n ~ g o da seqllencia das
mensagens enviadas para precessos replicadaa. Esse
tema 6 m a i s d e t a l h a d o em C R Z Ç T ã A N & o u t r o s ( 9 9 8 5 ) .
GUNNINGBERG ( 1 9 8 3 ) :

E1abar-a uma praposi~ãode um pretocalo que


implementa tolerancia a falhas a partir de Redundância
Modular Tripla ("Triple Modular Wedundancy"). Sao
discutidos protocolos de votaszu e recupera~ão d e
falhas.

KNEGWT, LEVEÇON & St. JEAN (1985):

"A Large Scale Experiment in N-Versisn Pregrammins".

Este trabalho descreve uma experiência


que conclui que as N-versGes de um mesmo programa
implementadas separadamente n ã o são completamente
independente. Essa constatac%a n%a inviabil iza,
contudo, essa t@enica. Ela apenas mostra que a
csnfiabilidade de um sistema de N-versses nzo é t ã o
alta quanto o valor tebrics, igual à enesima pstgncia
da confiabilidade das verszes isoladamente, pois esse
valor pressupõe que haja total independência entre as
versí3eej.

KOKRWA & SHINGAI ( 1 9 8 2 ) :

"Failure Propagating Simulatisn and Nonfailure Paths


Search in Network Systems".

Esse artigo prspee um método de sirnula~%o de


prepaga~ão de erros em sistemas em rede. Através
desse metodo 6 possável delimitar o alcance de dano
causado ao sistema devido a essa p r a p a ã a ~ ã e .
"Dependable Camputing and F a u l t Toleranee: Csneepts
and Terminology" .

Propõe uma s&rie de termos a serem


empregadas na &rea d e tolerância a falhas. (Ver
t a m b h m ANBERÇON, T. & LEE, P . h . ( 1 9 8 % ) ) .

"Recupera~ao de Erres em Sistemas de Prosesãos


C o n c o r r e n t e s : uma P r o p o s t a " .

Caraçt eriaa f a l h a s n a s o f t ware e problemas


que e x i s t e m p a r a reeuperá--10s. RevG, a i n d a , mgtodas
de r e c u p e r a ~ ã od e e r r e s e n r o n t r a d n s n a literatura e
prnpge um n o v o m u d e l o para k r a t a m e n t o d e falhas de
s a f t ware.

"Preeess Strueturing, Syncronirat ion, and Recovery


U s i n g Atamis U s $ i o n s " .

Apresenta o conceito de a ~ z o atGrnica e


mecanismos empregadas para sua bmplementacãa.
Descreve, tamb&m, de uma for-ma s i m p l e s e clara, a
i d é i a e a e s t r u t u r a d e um b l e r s d e r e e u p e r a q % s .

LOQUES & K R A M E R (1986):

"Flexible Fault Toleranee f o r Bistributed Csmputer


Sycaternep".

ExpBe uma t k c n i c a d e t o l e r S n c i a a f a l h a s em
sistemas distribuidos implementada em CONTE. h
principal saraeteriçtica desta técnica é sua
t r a n s p a r g n c i a em r e l a - ã o a o p r o g r k o d o s m b d u l o s , isto
é, cada m8dulo pode ser projetado ignorando-se a
existeneba de mecanismos d e d e t e ~ a oe r e c u p e r a c % o de
falhas. Só na c o n f i g u r a q ã s do s i s t e m a que são
especificados as p a n t a í onde t a i s mecanPsmos devem
at uar .

L O Q U E S (2.98

"Replieaçãa Autom&tica e T r a n s p a r e n t e de Mhdulas em


Sistemas D i % t r i b u í d o s " .

Descreve aspectos r e l a t i v o s i incarparat;ão


de mecanismos de tolerancia a falhas de forma
transparente à aplica~ão. Discute, ainda, a
r e p l i c a ~ ã oa t i v a de e l e m e n t o s .

LOQUES, KRAMER & A N I B Q (15'88):

"Diverse and Select i v e Fault -Toleranse i n a


Distributed hvirenment".

Descreve a irnplementaçga em 68NLC de


diversas mecanismos de t olerâncba a falhas.
Mecanismos come "het-standby" ou "cold-çtandby" e
replisação a t i v a e p a s s i v a d e m o d u l a s são utilizadas
de forma s e l e t i v a , nu seja, a p e n a s n o s m ó d u l o á em que
sso n e c e s s á r i o s .

"Ço6t w a r e ReS i a b i l i t y : The Role af Pragrammed


E x c e p t bon Wandl i n s " .

Após apresentar algumas definicães de


eoncetos o art igo d i s c u t e as causas de faltas e
erros t a n t a de hardware quanto de s a f t w a r e , B texto
prapõe, ainda, n emprego de r e t i n a s d e t r a t a m e n t o de
e x c e ~ õ e s em c o n j u n t o cem esquemas v i á v e i s de d e t e c q ã o
e r e c u p e r a ~ ã ode e r r a s de s a f t w a r e .

"Candidate Çalutions Praposed for OTV and DÇP


Missions".

Descreve a s t k c n i s a s d e t a l e r G n e i a a falhas
p r o p o s t a s p a r a d a i 5 p r o j e t a s de v e i c u l o s e s p a c i a i s : a
Veicula d e f r a n s f e r & n c i a B r b i t a l ( O n i b u s Espacial) e a
Sonda E s p a c i a l ("Beep Çpace P r o b e " ) .

Descreve a s a p ~ í 3 e sd e p r o d e t o adotadas no
DELTA-4 do programa EÇPRIT, no q u e d i z respeita a
tnlerSncia a .Falhas. Descreve mecanismos de
replica6ão de mbdules p a r a s i k u a ~ õ e s( a ) de falha
seguida de i n t e r r u p q g o da speraGão do mbdulo ("fãi.1-
stap") e ( b ) f a l h a nso c o n t r o l a d a . Sso empregadas
mecanismos de v o t a ~ ã opor a s s i n a t u r a , a o i n v é s de b i t -
a - - b i t , a fim de d i m i n u i r o " o v e r h e a d " na c a m u n i c a c % o .

RANBELL ( 1 9 9 5 ) :

"Syst em Çt r u c t u r e f o r Sof t ware Faul t Te1 e r a n c e " .

I n t reduz conceitos, atualmente muita


d i f u n d i d a s na á r e a de t o l e r % n c i a a f a l h a s , coma: t e s t e
de aceita~ão, ponto de checaqem ("eheckpoint " ) ,
c o n v e r s a c ã o e b l o c o de r e c u p e r a 6 3 0 ( " r e c a v e r y b l o s k " ) .
RANBELL, LEE & TRELEAVEN (1878):

" R e l i a b i l i t y I s s u e s i n Computing System B e s i g n " .

Este texto faz uma revisão bastante


abrangente em v & r i o s t B p i s o s de t o l e r s n c i a a falhas,
e n t r e e l e s : t i p o s d e f a l h a s , a$Bes a t i i m i c a s , n á v e i s d e
abstraeão, d e t e c ~ ã o de e r r o s ( t i p o s e i n t e r f a e e s de
ehecagem) e r e c u p e r a c ã o de erros ("backward error
r e c o v e r ~ ," "foreward e r r o r r e c a v e r y " e r e c u p e r a ~ ã ode
erros em v A r i o s niveis). Descreve, ainda, alguns
sistemas tolerantes a falhas.

"Struekuríng Dist r i b u t e d Çyst e m 9 Cor Recaverabil i t r


and Crash R e ç i s t a n c e " .

Uiãcute a recuperabil idade de e s t -dos


anteriores de um p r a e e ç s o a t r a v & %da d e l ã m i t a ~ ? i s de
regiões d e reeupera~ão. Propõe a h i e r a r q u i a Mestre-
Escrava para processos gerentes de recursos
d i s t ribuidos, ande um mestre comanda diversos
escravas, um em c a d a nó do s i s t e m a onde exista o
rec:urfjG).

SHREVASTAVA PAWZEERI C188i):

"The Besign oC a Reliàble Remote Proeedure Cal1


Meshaniãm " .

Expãe a implementag2is de um m e c a n i ~ ~ ad e
chamada remota de p r o c e d i m e n t o s a p a r t i r de um s i s t e m a
de t r o c a d e mensagens. D i s c u t e e s u g e r e uma sc11u~Za
para o problema de chamadas B r f Z s , i s t o é, quando o
p r o c e s s o chamador d e i x a d e e x i s t i r a n t e s d e r e c e b e r a
r e s p o s t a do p r o c e s s o chamada.
WALTER, KEECKHAFER & FLNN ( 1 9 8 5 1 :

"MAFT: A Mult i c e m p u t e r hrchitecture for Fault-


Tolerante íi? R e a l - T i m e ' C o n t r o l Çygpatems".

Apresenta uma a r y u i t e t u r a d i s t r i b u i d a Para


sistemas t o l e r a n t e s a f a l h a s . Essa arquitetura usa a
t é c n i c a d e vetag%s, permitindo a reconfiguraq&a do
s i s t e m a em c a s e d e d e t e c - % o d e f a l h a . Vale n a t a r q u e
o artigo conta a origem da termo "coneardância
bizantina" (do i n g l z s "Byzantine agreement"), que é
amplamente usado n a l i t e r a t u r a .

"Fundamentas d e E s t r u t u r a s d e Dadas"

Texto i n t r o d u t á r i o ae tema "Estruturas de


fiados".

I B M (1'387'):

" B Q Ç 3.343 T e e h n i s a l ReCerence"

Manual .

K E R N I G H A N & R I T C W I E (1978)

"The C P r o g r a m m i n s L a n g u a s e "

L i v r e s o b r e a linguagem d e proguamaqSa "C"


K e r n i g h a n e R i t e h i e são a s a u t o r e s d a l i n g u a g e m .
QUANTUM (1988):

"QNX - R e f e u e n c e Guide"

Manual.

Você também pode gostar