Ficha catalográfica elaborada pelo DePT da Biblioteca Comunitária da UFSCar
P195cv
Panont, Fernando Sales.
Canal virtual de tempo-real / Fernando Sales Panont. -- São Carlos : UFSCar, 2008.
78 f.
Dissertação (Mestrado) -- Universidade Federal de São Carlos, 2008.
1. Tempo real. 2. Rede de computadores. 3. Protocolos de comunicação. 4. Sistemas de transmissão de dados. I. Título.
Resumo
middleware middleware
! "
# " $ %
& % ' ( ) *
+ $
,
" Brokers
Abstract
" .
-. " - / 0 / "
" middleware / "
" / )" middleware "
"
# . . / " " " .
. 1 " * ) ( '"
" /" " "
2 " " 0 / Brokers,
(
Sumário
1 I TRODUÇÃO ... 1
3 3 '45) 6)4 4 )*&7&894 3 3 : 14) (&;<4 3 3 = 47> ) (4 : 3 ? @)*A)A*& & @@ *)&;<4 : 2 SISTEMAS DE TEMPO REAL E CARACTERÍSTICAS DE TEMPO REAL DO S.O. LI UX ... 4
: 3 @@) 1&@ ) 1,4* &8 ? : : '8&@@ 2 '&;<4 4@ @ @) 1&@ ) 1,4 * &8 ? : = ,*478 1& & 5( *@<4 ,* 4* & B : ? @@) 1&@4, *&' 45& @ ) 1,4 * &8 B : B @@) 1&4, *&' 45&8 ,*4,C@ )4 D *&885A6 E 2.5.1 Escalonador O(1) ... 6
2.5.2 Memória Compartilhada ... 7
2.5.3 Travamento de tarefas em memória ... 7
2.5.4 Threads POSIX ... 8
3 MECA ISMOS DE COMU ICAÇÃO DE TEMPO REAL ... 9
= 3 (*)A4@4F (@, G 3.1.1 Canais de Comunicação do Virtuoso™ ... 11
3.1.2 Mecanismo dos Canais ... 11
3.1.3 Bufferizando dados ... 12
3.1.4 Com Bufferização ... 12
3.1.5 Sem Bufferização ... 12
= : @@) 1& @)* 7AH 4 ) 1,4 * &8>&(& 7&@ & 4 1'@, 3= 3.2.1 Canais CSP ... 14
3.2.2 Canais Java ... 14
(
= = *)'I A1 1 8 J&* '41A5 '&;<4 ) 1,4 * &8 @47* 485A6
) 1,4 * &8*)& 3E
3.3.1 Arquitetura RTC ... 17
3.3.2 Gerenciador de conexão ... 18
3.3.3 MAC (Media Access Control) ... 18
3.3.4 Gerenciamento de lista de pacotes ... 19
3.3.5 Camada de Link ... 20
3.3.6 API ... 20
3.3.7 Gerenciador de Proxy ... 21
3.3.8 API Proxy de Usuário ... 21
3.3.9 API de Usuário Orientada a Objeto ... 22
= ? @ *( ;4@ '41A5 '&;<4 MIDDLEWARE&*1& & :: 3.4.1 Arquitetura de comunicação de tempoAreal ARMADA ... 25
3.4.2 Serviços de Comunicação de Grupo RTCAST ... 29
3.4.3 Serviço de Replicação backupAprimário de TempoAReal (RTPB) ... 31
3.4.4 Ferramentas de avaliação ... 32
4 CA AL VIRTUAL DE TEMPO REAL ... 34
? 3 '41A5 '&;<4 5) *,*4' @@4 =? ? : 5 * ;&1 5)4(*)A&8 4@,*4' @@4@ 1KLA 5&@ =? ? = &*LA ) )A*& 4@'&5& @(*)A& @ =B 4.3.1 API de Comunicação de TempoAReal ... 35
4.3.2 Camada Criador/Destruidor de Canal ... 39
4.3.3 Repositório de Configuração de Canal ... 40
4.3.4 Camada Consumidor ... 42
4.3.5 Camada Produtor ... 42
4.3.6 Camada Encaminhador ... 43
4.3.7 Camada Receptor ... 46
4.3.8 Camada Stub ... 46
4.3.9 Gerenciador de Inversão de Prioridade ... 47
? ? BROKER ?G 4.4.1 Fíveis hierárquicos de Broker... 49
4.4.2 Arquitetura dos Brokers ... 51
(
B 3 ' 5K* 4@ ) @) BM
B : ) @) 4FRAMEWORK ,*4)4'484@ '41A5 '&;<4 E3
5.2.1 Protocolo de Comunicação via Memória Compartilhada A Shmem ... 61 5.2.2 Protocolo de Comunicação UDP com bit alternante ... 65
B = OVERHEAD 5@ * 4 , 84'&5&8(*)A&8 ) 1,4 * &8 EM
B ? ) @) * 'A, *&;<4 4 '&5&8 5& ,* @ 5;& 2&89&@ '41A5 '&;<4 NO
6 CO CLUSÕES E TRABALHOS FUTUROS ... 74
(
Lista de Figuras
2 3I 5 0 ( 3O
2 :I ' $ - $ P - $ 3:
2 =I - #
3=
2 ?I &- ' 3?
2 BI 2 / 0 Q . 3B
2 EI ) + - 0 3B
2 NI ) + - 0
3E
2 MI ( # *)' 3N
2 GI ( - &*1& & :=
2 3OI ' R :?
2 33I @ 0 :B
2 3:I & # :N
2 3=I ' *)'&@) =3
2 3?I ' S 5 =B
2 3BI S 5 =B
2 3EI & # ' ( ) * =E
2 3NI " =N
2 3MI 4 S ' ( ) * =G
2 3GI S $ ' ( ) *
R ?3
2 :OI ' ' P ' ?3
2 :3I #T+ ' ?:
2 ::I 2 ' ' ?:
2 :=I 2 ' , ?=
2 :?I #T+ , ?=
2 :BI ' " ' ??
(
2 :NI ' ' , '
?B
2 :MI % ?E
2 :GI ' * ?E
2 =OI , ' ( ?N
2 =3I S D
, ?M
2 =:I ( & 7 0 ' , P' BO
2 ==I & # 7 0 ' ( ) * B3
2 =?I ' - " @ - 7 0 * LV* D @) * B?
2 =BI ' S - " @ - 7 0 B?
2 =EI ' R S R
S BG
2 =NI ( R
: -: BG
2 =MI ' R S BG
2 =GI ' R R S EO
2 ?OI ' R R E3
2 ?3I ' R S E3
2 ?:I & - 8
! E:
2 ?=I , WX @" E=
2 ??I * ' WX @" E?
2 ?BI * ' WX @" E?
2 ?EI 7 0 9 , 0 WX @" E?
2 ?NI 7 0 9 A 0 WX @" EB
2 ?MI , WX A ,
-EE
2 ?GI * ' WX A ,
-EN
2 BOI 7 0 9 , 0 WX A ,
-EN
2 B3I 7 0 9 A 0 WX A ,
6
LISTA DE TABELAS
) - 3I 8 2 =G ?O ?3 E3
) - :I ) $ ' (
) * EG
) - =I ) $ ,
@" EG
) - ?I ) % R R
S N3
) - BI ) % R R
N3
) - EI ) % R
3
1 I TRODUÇÃO
S $ - $
- "
1.1 Contexto do trabalho
4 + "R R % #
-- W'4)@ U commercialAoffAtheAshelfX
-%
- $ S
kernel preemptivo
R # $ WdeadlinesX & %
# "
S handhelds , 8 , )6 Y3Z
BluetoothY:Z Y=Z W " X WiAFi
MO3 33-Y?Z laptops WiAfi, " Ethernet '
# "
1.2 Motivação
R
"
W R X
% middleware
#
! " #T
:
1.3 Objetivo
- " - middleware )
* # S
# " - " ,
- ' ( ) * R I
Independência de protocolos de comunicação:& % Framework
' middleware
+ $ #
R $
,
% middleware #
#
S )',P , , ?
Tolerância a falhas por redundância de pontos de acesso de conexão:
, # S #
%
# ,
'
Transparência de localizaçãoI 4 @ Brokers
+ $
1.4 Estrutura da Dissertação
4 S I
' : U @ ) *
8 SI #
) *
8 S
=
' = U & I # middleware
#
# ?
' ? U , ' ( ) * I
# middleware ) * '
( ) *
' B U ' I - $
# ' ( ) *
' E U ' - " I &
?
2 SISTEMAS DE TEMPO'REAL E CARACTERÍSTICAS DE
TEMPO'REAL DO S.O. LI UX
- -R
--R
-8 S
$ ' ( ) *
2.1 Sistemas de Tempo Real
4 $
-" ( &7@
A % # #
# #
YBZ # # %
@ ) * W@)*X
2.2 Classificação dos sistemas de Tempo Real
4 @ ) * S
- I
) * * WHard RealATimeXI YEZ # $ WdeadlineX " S
&
%
) * ' WSoftAReal TimeXI @ #
B
# R YEZ A S
R
# - $
2.3 Problema da Inversão de Prioridade
5 % # #
- # & R
YNZ [ #
# - #
# %
" deadlines , $
9 , YMZ $ %
% # - " 2
% +
2.4 Sistemas Operacionais de Tempo Real
4 W@4)*X
- +
-#
&
8 % # @4)* % $
# R R
& @4)*
R #
A $ # @4)* "
E
# deadlines
#
- $ # deadlines
2.5 Sistema Operacional de propósito geral Linux
4 % kernel 8 S % throughput
- YGZ & S
+ #
& R $ kernel
# # % S kernel
: B 3 4W3X
4 4W3X $ 1
S 4W3X YEZ
4 % \ \ # %
# ',A \ S \ # % # R
"
- R R
#
-% +
A R
% - ) % I @
R S S R
R &
S R R
' +
@'9 V2 24 U First inAFirst OutI ,
R # $ # #
R
N
Y3OZ A @'9 V2 24
S R % - # # P@
+
@'9 V** U Round RobinI 4 @'9 V** %
@'9 V2 24 $
%
#
-@'9 V4)9 * U 8 SI ,
$ 4 @'9 V4)9 * % $
# R
4 S % " R
$ - ! # %
: B : 1 ' "
A % %
" ' "
#
: B = )
)
$ # *&1 % S swap% # R
8 S # "
& ] ^ R R % #
M
: B ? Threads,4@ 6
& threads,4@ 6 8 S
# thread R
8 S $
LinuxThreads &, ,4@ 6I 1 S R
& - - -% R ,4@ 6
G
3 MECA ISMOS DE COMU ICAÇÃO DE TEMPO'REAL
#
- # ' ( ) *
3.1 Virtuoso™ VSP
' @. J
* @. ( (@, % kernel - @
# % % - nanokernel # R
microkernel R W@4)*X
" #
% # % $
# " " " / Y33Z
kernel - " (@, WVirtual Single ProcessorX
- " # - "
" + ,
( I
1 # # _
_
' $ % R
timers_
* _
) R S _
5 S _
2 hardware
-4 ( $
3O
Figura 1: Fíveis de programação do kernel Virtuoso
4 @* WInterrupt Service RoutineX
hardware # $
@*
4 = WnanokernelX % S $
' assembly "
' Y3:Z 4 = R
% " microkernel
4 ? % kernel ( @ NO
microkernel # " ' 4
-R - microkernel ' - %
!
-( '
-5 # - "
#
-&
' @ IFanokernel
)
' @ $
1
0
, 3
@* 3
@* O
- 9
--
33
, + - @4)* (
+ - ' ' # R
= 3 3 ' ' ( F
A ' ' ( )1W :OOOX
- kernel( 2 24 Y3:Z WfirstAinAfirsAoutX #
]pipes^ / #
R & %
%
& ' - 2 24 ( )1 I
• A R WM - X -.
" S - - 2 24
• A R bufferizado3
bufferizado
• & &, # "
-• , "
= 3 : 1 '
' 2 : % - ( )1 #
+
4 buffer2
# "
3
BufferizadoI $ R
:
3:
Figura 2: Comunicação entre tarefas utilizando canais bufferizados/nãoAbufferizados
A $ bufferizada
L buffer
buffer S "
= 3 = 7 $
L (
-buffer " buffer
S Bufferização S # R
# #
-= 3 ? ' 7 $
L %bufferizado #T+ % I
• 4 " KS_ChannelPut() " KS_ChannelGet() W
X
• @ R R buffer % 4
R
• @ "R buffer 5
- # buffer
L " buffer
= 3 B @ 7 $
8 P
3=
L %bufferizado #T+ % I
• 4 " KS_ChannelPut() KS_ChannelGet() W
X
• @ R R
• @ "R R " +
W X
, R S S
-# 5
R S W3X
# W3& 37 3'X 2 =
Figura 3: Incompatibilidade entre os dados provenientes pelo escritor e o que pode ser consumido pelo leitor.
3.2 Sistema Distribuído de tempo real Java baseado em CSP
, @ #T # ' Y3=Z '@, %
' & * 9 MO 4 '@,
R
# # #
+ $ +
-S - $ R
Y3?Z
4 '@, >
- R Y3BZ 4
# >
--% $
-R S
& " R S
Y3BZ
3?
= : 3 ' '@,
& % -R '@, 9 Y3=Z % #
- " $ &
& 7 &
7 - & # %
W X % #
4 - S
CHAFFEL chan //declaração do canal
PAR // construção PAR: os processo abaixo desta construção //executam em paralelo
ProcessoA(chan)
{ chan ! x;...} //escrevendo x no canal ProcessoB(chan)
{ chan ? y;...} //lendo x do canal
= : : ' >
4 ' > # $ '@, S 4
> - R "
-2 ? 4 ' >
bufferizados $ 4 % # %
-$ Y3BZ
Figura 4: Abstração de um Canal de comunicação
= : = 4 8 0
,
&
,
7
'
2 S
3B
, % framework
device driver% 4 device drivers # " link drivers
-# S 4 - R
$ # link driver +
' driver
" driver
% 4 hardware 9 R
- hardware
2 B
4 % #
$ - link driver & 2 E N
Figura 5: Framework plug & play para dispositivos
Figura 6: Transferência de dados sobre link drivers para um sistema uniprocessado
2 S
(1 ,' )', '
-*@ :=:
A@7 '&5
1
2 J
9 /
9 /
,
&
,
7
'
, Q , .
,
&
,
7
'
8 0 WX / WX
WX / WX
2 S
3E
Figura 7: Transferência de dados sobre link drivers para um sistema com múltiplos processadores
3.3 RTC: UM MIDDLEWARE de comunicação de tempo real sobre o Linux de
tempo real RTAI
' Y3EZ *)' % middleware @4P4@
Y4@ Z #
S - 8 S *)& Y3MZ ,
R hardware
% &, WApplication User InterfaceX
R , 1&' *)'
) 1& WTime Division Multiple AccessX
- 5
- - % $
# , R R $
S )',P ,
& *)' $ 3BGE 3GG: @' WScalable Coherent InterfaceX
Y3GZ Y:OZ 4 @' " +
- - ! $ - S jitter link 3D7P
Y:3Z 5 *)'
S Infiniband Y::Z Y:=Z -%
-,
& '
8 0 / WX
/ WX ,
7
8 0 WX
WX
'
)',P ,
2 S @
&
3N
= = 3 & # *)'
& *)'
-# R ,
# "
-R & 8 S S *)& $
& *)' I
&, R 4
%
8 SP*)& Y:?Z #
& &, R % - 86*) Y:BZ *)& & 2
M R # *)' # R "
- #T
& % R -%
# - %
# , driver
8 S # ,
S R $ S
)',P ,
Figura 8: Visão geral da arquitetura da plataforma RTC
A A RR
@' ` " / 8
866**))UU RR )*)*
k
keerrnneell &
)*
& 4 4 )*
4 4 &,
D , S. , S. &, R
&,
Driver nonA
' 8 0
' 1&'
D 8
3M
4 " / % *)'
& R S
-W S X #
5 *)' % % I
• 5 I #
• 5 I #
-• I $
• 8 - I
-5 *)' %
# $
S %
% - # R
"
= = : D S
" #
-% +
% 8 S
4 " " % R
S - #T
= = = 1&' WMedia Access ControlX
4 ' & 1 1&' % *)'
% R " W
" X % " &
I
• *)&
3G
• @ $ @'
, 1&' ) 1& " R
" # R - # jitter
5 - ) 1& - % S
" Wslots) S WtimeAslotX
R 4
#
% 4 +
% " ) 1& W) 1& roundX WroundX 5
*)' % # Y3EZ
' ) 1& %
-$ 5 *)' %
-$ W# %
X a #
-% $ %
1&' R $
'
5
" , - # #
W X
% 5
- R
= = ? D
4 - %
P - & $
:O
= = B ' 8 0
& $
-%
' Link & I
• D +
•
• *
-•
- &,
L % - % &,
& D 8
,
= = E &,
4 - % kernel
-% "
*)' -%
- S - " # &
&, I
• ,
• 1 P P Link
• * - 0
&
-" R , I
• void V " V Wint " voidb int V $ X
• void V " V V" "V . Wint " voidb int V $ X
& $ # - #
:3
R msg " msg_size & %
2 24 Wfirst in first outX &
% R
# & - - #
, - &, - $ I
• void V " V Wint " voidb int V $ X
• void V " V V Wint " voidb int V $ X
- - #
- # & - - channel
" msg_size R msg
-. #
& &, % R -% - #
= = N D , S.
4 D Proxy % R kernel
S R & R "
D Proxy &, R - # %
-Proxy R R
# S R 86*) *)'
kernel
= = M &, , S. A R
4 - % " &, kernel # - S
R ' Proxy % # # *)'
L R $ #
D Proxy &, Proxy A R # " &,
::
R kernel "
&, # S R
= = G &, A R 4
4-& 4-&, A R %
-&, - R
L S &,
' &, A R
$ *)&
' R &, A R S D Proxy
*)' , - % R
3.4 SERVIÇOS de comunicação e middleware ARMADA
&*1& & % middleware # +
! "
-- Y:EZ 4 - &*1& &
$
Whard realAtimeX + " hardware
software - S
-+ R & % "
microkernel A
# % % $ " - hosts
& - # & # %
% S
&*1& & - S #
S hosts
R & R
-:=
- Y:NZ A #
-# 4 middleware
&*1& & "
" *)'&@)
-# ! " *)'&@) middleware
multicast [ $
- $
4 middleware &*1& & -% backup R
" *),7 # + R
-& R
! "
& 2 G - &*1& &
Figura 9: Visão geral do ambiente ARMADA
,
-&*1& & % $ xAkernel framework
- &
xAkernel % R " 4
-xAkernel% - R
Microkernel
&
@
Middleware
2
&,
:?
" S
@ microkernel
R ' #
kernel $ - - - - S &,
middleware @
" # - driver kernel
framework xAkernel # S "
S R # kernel
R kernel " "
S -% threads W
X kernel Y:EZ , threads kernel,
S $ # #
-& 2 3O 33
R microkernel
Figura 10: Configuração do servidor em nível de usuário
Driver
* R
microkernel &
7 - Stub
&
7 - Stub @
:B
A S kernel% *)'&@)
# R kernel
W 2 33X S R
kernel R &, 4 %
kernel, S R %
4 Stub - - R W#
&, X microkernel stubs "
$
microkernel $
Figura 11: Servidor em nível de kernel
= ? 3 & # &*1& &
& # R #
I &, W&, *)'X
$ W*)'4,X +
S W'8 ,@X S
R R
& 2 3: R #
&*1& & & " " "
Driver
* R
microkernel &
7 - Stub
&
7 - Stub Stub
:E
#
&, *)' '8 ,@ "
= ? 3 3 '8 ,@ U 7 - @ ! ,
@ Y:EZ 7 - ' @ !
, '8 ,@ - $
+ #
S - A " clip
A
clip%
A S W socketsX ] ^ clip clip
#
S clip S $
-4 '8 ,@ % $
-# " ' ) * Y:EZ A ' ) * %
S unicast W X
" - &
% + 5
host ]4^ host ] ^ !
R # # @ #
]4^ ] ^ R
] ^ ]4^ &
-]4^ ] ^ S - & R
S S ]4^
-3.4.1.1.1 Escalonamento sensível a qualidade de serviço de CPU
& # clip S
:N
" '
$ WdeadlineX " $
% - earliestAdeadlineAfirst
W 2X % $ % '
'8 ,@
R 4 2 S R
% deadline
'8 ,@ - # S
$ S % %
-& % S % - # S
$ S S
Figura 12: Arquitetura do serviço de comunicação de tempoAreal
3.4.1.1.2 Reserva de Recursos
1 W '8 ,@X S "
R '8 ,@
Políticas
Aplicações
K ' *) (
&, ' *
*)'4, '8 ,@
*
* *
' "
*
@ $ ) +
Mecanismos
)
L @
, '8 ,@
,
, S
Overheads
S
Busca/resposta
3 -: * #
1 L @
:M
clip - ',A
# $ ',A '
%
S RS
4 - # RS
3.4.1.1.3 Policing
S # S
R
= ? 3 : & - #
4 2 24
WFirst In First OutX - 0 ' '8 ,@
- ! "
R
$ 4 link 2 $
" ,
W S I # 0 R X link'8 ,@
% # 4
- " Wbest effortX "
link R S
# clips
= ? 3 = & *)'
& S - S
- S S
+ S - & &,
I & $
:G
& $ *)'4, $ $ W S I
S X $ '8 ,@ +
#
4 " &, *)' % - &, socket A S 7@ '
S % W , X 4 ,
3E - host % host
4 # &, *)' &, socket % #
S - $ S
= ? 3 ? *)'4, U , 4 ' S ) *
' Y:EZ *)'4, % $ - @
% S % & 2 3=
*)'4,
4 1 * # *
$ $ #
"
R
4
# # S
-% % S
- - S
4 *)'4, S &, *)' #
# - S
S 4 *)'4, -% engine
- # # #
R $ S
= ? : @ ' D *)'&@)
4 D *)'&@) % #
- $ # middleware
=O
*)'&@) backAup R *),7
= ? : 3 , *)'&@)
4 *)'&@) + multicast
" ' 3=
*)'&@) multicast [ $
4
@ $
% # %
$ ,
-S - 2 +
4 *)'&@) A
# token Y3NZ " # token
multicast
-WheartbeatX # % # 4 R
$ #T+ #
- # - ' # "
- - - #
-multicast
token +
token & % $ - S
*)'&@) # # " "
*)'&@) 4 *)'&@) # - ] ^
-
-# % #T+ #
-#
-2 %
S - $
=3
4 % - #
4 clip
host # S $
@ "R
" overhead. &
R - " Wbest effortX
= ? = @ * - 0 R ) * W*),7X
1 #
- - R# overhead
1 #
+ & $ overhead
backupA R S !
# " # #
R & !
- '
backup R 4 backup3
S % 5
# ! R backup %
%
Figura 13: Conjunto de serviços RTCAST
= '
'
multicast [ $
@ &
D
' unicast R
& R
-@ $ ( *
=:
A backup R $ + S +
- i timestamp4 i
% timestamp #
backup # S backup R
= ? = 3 *),7
4 *),7 R backup &
R# # R 4 R % R $
backup +
S + hosts R
backup 5 R R S
' # backup " R -%
backup $
= ? ? 2
+
deadlines ! "
I 4*'9 @)*& "
middleware '4D 5) R
= ? ? 3 4 "
4*'9 @)*&% " - # $
" - %
-framework " scriptAdriven probing and fault injection & + - %
?
==
% S
-5 - 4*'9 @)*& " %
" - S & #
" ' # % 4*'9 @)*& S
" send filter -% % receive
filter - 4 $ I
• 2 1 I S
• 1 I
• 1 I - $
= ? ? : '45D 5)I D ' ) R *
'45D 5) % - " %
" $ 4 %
-# R S
-=?
4 CA AL VIRTUAL DE TEMPO'REAL
4 ' ( ) * % middleware
" ! " % %
! #
, - '
# "
& " #
- " #
4.1 Comunicação Interprocesso
, $ middleware
R "
# # " , ' 4
, R #
-4.2 Endereçamento Virtual dos Processos e Máquinas
+
, P' 5 R#
-" R ' , P' %
# R
% R
' , P'
=B
,
2 3? S 2 3B
Figura 14: Composição de um número Exemplo de um Fúmero identificador de canal
Figura 15: Exemplo de um Fúmero identificador de canal
4.3 Arquitetura dos Canais Virtuais
& # ' ( % - %
middleware # " & 2 3E
# ' ( R kernel
? = 3 &, ' ) *
& &, WApplication User InterfaceX ' ) *
-R
-&
R I
( IEEEOOO3:=
1R 1R# I EEE
' , P' I OOO3:=
=E
Figura 16: Arquitetura dos Canais Virtuais de TempoAReal.
&
-% ' , Broker
-Broker8 W Brokers 8 "
BrokerX , $ !
I
int process_type: ) - ,*4 A' *
'45@A1 * ' Brokers
8 D - -% $ ' (
$ Broker8 BrokerD
-int opt:4 $ * - @)&*)
@)4, Espaço de Usuário
Sistema Operacional
,
Rede Aplicação do Usuário
&, ' ) *
"
D
, * '
'
Framework
, '
' P
'
Stub
*
, '
Broker
Stub Broker Framework
@ Broker
@
=N
char proc_name[]: 5 A $
' Brokers
char peer_name[]: 5 A $
, ,
idaddr_t my_id:5 A $
struct accesspts peer_accpts: ,
, P % #
R#
R#
& 2 3N 3M 3G accesspt
udpaccpt W $ A , )',P ,X shmaccpt
W $ " X S
' ( ) * S '
$ ,
Figura 17: Definições das estruturas accesspt, udpaccpt e shmaccpt
typedef struct shmaccpt{ _ "_ 0 .V " 0 ._
" $ _ 0 .V 0 ._
V _
};
typedef struct udpaccpt{
Pb $ bP
_
Pb) bP
"_
Pb bP
" V YEZ_
Pb , bP
" Y3?Z_ Pb, bP
_ c };
struct accesspts{
=M
& - $ & config
R $
I
int fail_police: - "
I
TRY_ALL_ROUTESI S
TRY_SPARE_FIC_FIRSTI S
R #
#
& S +
, ' % ! I
idaddr_t my_id: , $
' R
W % threadsX % $
# R
char *data:,
unsigned datalen:) " W bytesX
>R * WX
-% ! I
idaddr_t my_id: ' $
' R
-W % threadsX %
$ #
-char **data:& $ - ' ,
unsigned *datalen:* " ' ,
, " S
2 3M # S
' ( ) *
, % START
=G
# R
! $
-$ 2
% STOP ! opt
Figura 18: Ordem de execução das primitivas do Canal Virtual de TempoAReal
? = : 1 ' P '
&
$ ' (
) * %
-' &
' P ' I
Id Local:* - #
Endereço de Máscara Local: 5 R#
R#
Pontos de Acesso do canal: %
%
&
% R # R
$ >R R
R # R $ " "
Id da Mensagem:
-VirtualChannel( STOP, , id ) vcWriteTo( id )
vcReadFrom( id ) vcConfig( id )
?O
úmero Seqüencial da última mensagem: '
-#T
5 $ Broker %
R R# # 4
S $ '
' # %
Brokers8 D - ) , % cache prefetching %
$ % # $ R#
' S
-Brokers
& 2 :O ' P
'
? = = * ' '
$
$ ' P ' ,
' ' $ # P %
R % - #
& R
?3
Figura 19: Exemplo de inicialização e destruição de um Canal Virtual de TempoAReal do tipo produtor pela aplicação do usuário
Figura 20: Módulo Criador/Destruidor de Canal
d e P " "e
"
# $ %%%%
&'()*! +, !*(+-* . *//0+1&-/ &'()*! +, 2+ .2 . *//0+1&-/
3 45 4 45 4
6 1 7 89 6
$ : ; &'()*! +, 2+ .2 . *//0+1&-/ <<
$ % 7
: => ? $ 1 ? @
: => $ /A(*(
: => B $ CCD
: => 7 $ E*,.'2- /A( (*(+!F /1G*
: => B $ C
: => $ :
6 1 7 89 6
$ : ; &'()*! +, !*(+-* . *//0+1&-/ <<
$ % 7
: => ? $ 1 ? @
3 : => 4 :4 7 4 :4
: => $ 'E0 )1-
.2-: => $ ,./-
*-A*!&*-: => 4C::H%IHJIH%K%4 %L
: => $ I::%
H : $ :
H % $ %
H : $ :
H % $ %
HHH
0!+E' *!
/-.!-HHH
0!+E' *! /-+0
HHH M 1R# 3 * ' '
Aplicação do Usuário
' P
' Broker
& $ P
?:
? = ? 1 '
% R R R
- R 4
' -% % $
-& 2 :3 #T+
' # 2 ::
Figura 21: Diagrama de seqüência do módulo Consumidor
Figura 22: Funcionamento do módulo Consumidor
? = B 1 ,
4 , $ 1
$ R & 2 := :?
, #T+
,
* WX
Aplicação do Usuário
'
&, ' ) *
2 '
*
W8 :X
*
W* 3X
*
W* :X
Framework , '
* '
'
*
?=
Figura 23: Funcionamento do módulo Produtor
Figura 24: Diagrama de seqüência do módulo Produtor
? = E 1 "
% R #T
"
# "
' " % - $
' ' R % S
R R
' '
' R %
& 2 :B :E
5
2 :N % ' $ '
,
J WX
* '
'
Aplicação do Usuário
,
"
??
5 " "
$ " $ '
WTRY_ALL_ROUTES PTRY_SEC_ROUTE_FIRSTX
Figura 25: Módulo Encaminhador A Cópia local de dados
) - " 3 Canal Virtual de Tempo Real
&, ' ) *
` , ' ` , &
"
P , P 5 '
Stub
,
Canal Virtual de Tempo Real
&, ' ) *
5 P P , &
* WA , 3X
* WA , :X
* W@91 3X
* W@91 3X
Aplicação do Usuário 1 Aplicação do Usuário 2
' 1 ' " 8+ Framework , ' Stub D ,
Framework , '
?B
Figura 26: Módulo Encaminhador – Cópia de dados remota
Figura 27: Código em C para verificação de localidade entre os canais Produtor e Consumidor
, ' ( ) *
) - " 3 ) - " :
Canal Virtual de Tempo Real
&, ' ) *
` , ' ` , &
"
P ) "
* ' ' Stub , Canal Virtual de Tempo Real
&, ' ) *
P ) "
* '
'
* WA , 3X
* WA , :X
* W@91 3X
* W@91 3X
Aplicação do Usuário 1 Aplicação do Usuário 2
'
8+
*
A , A ,
Stub
D ,
Framework , '
Framework , '
N ('2- ,. -+! %::::::
HHH
B $ => 6 ('2- ,. -+!
6 *? O ###:::%CD6%:::::: $ ### 6
B $$ B "
66 PQ
M "
66 PQ
?E
2 :M
Figura 28: Identificação numérica das tecnologias de interface de rede
? = N 1 *
4 * "
-' 5 % thread # %
# $
! 4 S 2 :G # threads
* # $ $
WbufferizaçãoX
-Figura 29: Módulo Receptor
? = M 1 Stub
& Stub % - " Stub
' ( ) * , $
'
2
* W@91 3X
* W@91 :X
* WA , 3X
* WA , :X
Framework , '
Stub
D ,
PbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbP Pb 5 ' ) '95484D @bP
PbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbP
d 1 14*f 3 O
d 78A )44)9V(3V3 : O
d 78A )44)9V(:VO : 3
d J V2 = O
d 2&@)V )9 *5 ) ? O d D D&V )9 *5 ) ? 3
?N
- " Stub "
Stubpack() Stubunpack().& $ #
- , ' % Stubpack()
StubUnpack() - " Stub 4 #
- " Stub I
, I # % $
% $
,
, I # $
# , % $
,
4 I
1 I #
5 @ #T+ , I 4 Stub , #T
, ' , I $
, S
# " R
, , I ' 1 - R
S
# " R
& 2 =O - " Stub '
(
Figura 30: Pacote de dados do Canal Virtual
? = G D ,
, Immediate Priority
Ceiling Y:MZ , # % D
, ' #
' 1 5 @ #
,
, ,
,
' - " Stub
, ,
?M
, #
-D ,
-' '
& 2 =3 " ' #
'
Figura 31: Exemplo do código fonte da elevação de prioridade pelo Gerenciador de Inversão de Prioridade
? = G 3 Framework , '
- $ R
' ( ) *
# # framework
"
, framework
- unsigned int transprotocol unsigned int nictech #
-# R
1 R #
, A ,
# " A
S % socket A , A socket%
# 4
R #
R $ timeout
H $$ / A*E !! 33
H > H
"
/ / H H
/ / @ H H
?G
4 S middleware%
# frameworkI EmissorProdutor(), ReceptorConsumidor(), ProtocolStubPackBroker() ProtocolStubUnpackBroker()
& EmissorProdutor() # -R $
W $ X
% '
& ReceptorConsumidor() -R $
-$ '
5 ProtocolStubPackBroker()
$
R - " Stub Broker A - "
-R R - Broker
, ProtocolStubUnpackBroker()
- " Stub Broker S #
4.4 Broker
4 Broker% $ ,
, Wsockets "
X & % Broker # R
R# % R#
? ? 3 5 " R # 7 0
A - Broker + " # #
IBroker Broker8 BrokerD
-4 % Broker thread R
- ' ( ) * $
$ - Brokers
BO
threads R #
Y:GZ & $ cache Broker
# S
4 % Broker 8 Broker% S
" Brokers
$ #
>R % BrokerD - # +
- # Brokers 8
! Broker
& # Brokers
$ - " R #
% # ' ( R
$ R R Broker %
-+ $ #
Y=OZ
# '
& 2 =: " R # Broker
-Figura 32: Velocidade de Acesso a um Broker por um Canal Produtor/Consumidor
7 0
7 0 8
7 0 D
-( &
(
B3
? ? : & # Brokers
4 Brokers $ # ' ( )
* % + I 4 1 1 Broker
Framework @ Broker Stub Broker 5 2 == - S #
Broker % , ' $
- Brokers
Figura 33: Arquitetura do Broker dos Canais Virtuais de TempoAReal
4.4.2.1 1 1 Broker
% R
Framework @ Broker
& RequestMask(),
RegisterConsumer(), TranslateConsumerFame() UnregisterConsumer() Peerfound() QueuedforTranslate() RespMask() R
I
* # R R#
* # ,
* #
* #
* ,
1 1
Broker Stub Broker
Framework de Serviços Broker
@
Broker
@
BrokerD
-@
Broker8
B:
& ,
,
* R R#
? ? : : ' '
4 - ' Broker % #
R &
' ( ) * $ %
$ $ ' " Brokers
' # # Brokers %
' Brokers
? ? : = Stub Broker
# , - "
WopcodeX 4 I
•4 I ' '
S
- " 4 # I
* LV* D @) *I 1
* LV)*&5@8&) I 1
* LVA5* D @) *I 1
* @,V, *24A5 I A Broker
, "
* @,VLA A V24*V)*&5@8&) I '
B=
opcode # S
* LV& *V1&@gI 2 $ # R 1R#
opcode# S
* @,V& *V1&@gI * # R
• 2 I
' opcode
S - " " & S
opcodeI
X * LV* D @) *I
• V I & ,
• V I ,
• YZI
% - R
" - %
-+ A $
#
R WbindedX
#
# W ,
S A ,X 4
# framework
• YZI + '
$
-X * LV, *24A5 I @ * LV* D @) *
& % # % , # $ #
X * LV)*&5@8&) I
• V I * ' $
B?
• V I & '
-Brokers
X * @,V& *V1&@gI
• V 0V I R#
& 2 =? =B - " Stub Broker
opcode* D @) * S opcode - " Stub Broker.
Figura 34: Campos do cabeçalho Stub Broker para o valor de opcode REQ_REGISTER
Figura 35: Campos fixos e dependentes de opcode do cabeçalho Stub Broker
? ? : ? Framework @ Broker
Framework #
Broker ' % " optcode
" + Brokers
Broker Broker8 BrokerD
-A S # R R#
& Brokers R R# %
4 2
* LV* D @) * * LV)*&5@ 8&)
* LVA5* D @) * ...
' S
' - " Stub Broker
'
4
W* LV* D @) *X 2
V V
' - " Stub Broker
"c
YZ YZ
'
- "
Stub Broker ' S opcode
BB
BrokerD - BrokerD
-$ R#
&
Broker 8 D - I
• * ' I * - # %
S Broker 5 " Broker #
% " 5 S ,
* @,V, *24A5
R
• @ ) 5 I 5
' Broker
-, ' $
%
, " S Broker,
% " Broker D - #
' A
" # %
Broker 8 % "
# # R " #
Broker D
-% $
Broker D - -% $ Broker 8
• @ 1R# I 5
# R R# % $ ,
Brokers 8 " BrokerD - #
$ R R R#
* @,V& *V1&@g R
• @ * * I 1 '
# Broker
BE
A - Broker %
-S Brokers ,
1
1 # Stub
Broker # ,
#
S ]* L^ optcodes # ]* @,^
BN
5 ESTUDO DE CASO
5 R
$ middleware - hardware
R 4
I
• + I R
Framework
, ' A R $
" W R X - Y=3Z A ,
• Overhead middleware I
-% overhead ',A
$ middleware
• * " I
R % "
$ middleware. (R R R
TRY_ALL_ROUTES TRY_SPARE_FIC_FIRST
• ) + $ I # % Brokers
middleware '
R R $
- #
5 S R $
Framework
, ' # $ overhead middleware
" ' $
Framework ,
BM
5.1 Cenários de teste
, R ' ( ) *
# $
' - 8 S
& " 8 S R
I
-D,8 Y=:Z S
@ 4 *) 8 S Y==Z *)& Y=?Z
$ - 8 S W@ 0/ Y=BZ 1 0 Y=EZX
- 8 S R - W 8 SY=NZX
- ,4@ 6 3
W X ,4@ 6 3- W X ,4@ 6 3 Wthreads,4@ 6X Y=MZ '
' " - +
- @ 4 8 S
A $ middleware
S - "
4 R - "
W]&^ ]7^X S W]'^X #
WiAFi Bluetooth 3P :
]&^ -3P-: 7 3P : ]'^ 5 R " -% Access Point WiAFi
S
& S + R
5 2 =E R ]'^ - $
]&^ ]7^ $
" &
a1 b1 a1 c1 c2 b2 a2 c2 c1 b1 a2 b2
" % n S m - S ]&^ ]7^
n ]&^ m ]7^ 4
R 2 =N %
BG
5 R " R S
a1 b1 a2 b2 2 =M
Figura 36: Cenário com comunicantes próximos composto por várias rotas alternativas de conexão
Figura 37: Variação do primeiro cenário com comunicantes fora de alcance entre as interfaces a2Ab2
Figura 38: Cenário com apenas uma rota alternativa com comunicantes próximos
) - " ' W, X
:b2
:b1
) - " 7
a2:
a1:
) - " &
J 2 J 2
7 "
J 2 &, J 2 7 "
* , 3 -3
* & : -:
2 " ' 7 "
* & 3 3 : -:
c2:
c1:
:b2
:b1
) - " 7
a2:
a1:
) - " &
J 2 J 2
7 "
J 2 &, ) - " '
J 2
* , 3 -3
* & : -:
2 " ' 7 "
c1:
) - " ' W, X
:b2
:b1
) - " 7 J 2 7 "
J 2 &, J 2 7 "
* , 3 -3
* & : -:
2 " '
a2:
a1:
) - " & J 2 7 "
* & 3 3 : -:
c2:
EO
, R " % $
- " I
) - " &I
, I &1 GOO1"$
1 , I 3:M 17 *&1
@ 4 I 8 S
( KernelI : E 33 M
* I Fast Ethernet
) - " 7I
, I &1 & " E? : 3D9$
1 , I B3: 17 *&1
@ 4 I 8 S
( KernelI : E 33 M
* IFast Ethernet Gigabit Ethernet
,
- " switch $ #
5 #
% - crossover
-- "
) # ]'^ R %
" ]&^ ]7^ " ]&^
]7^ # ]'^ # ,
2 =G ?O ?3 #
R 2 =E =N =M & ) - 3 $
2 =G ?O ?3
Figura 39: Cenário de simulação com várias rotas entre comunicantes próximos entre si.
* , 3 -3 2 "
'
* & : -:
) - " & J W "X
7)W "X
a2:
a1:
) - " 7 J W "X
7)W "X
:b1 :b2
Switch
E3
Figura 40: Cenário de simulação com várias rotas entre comunicantes distantes entre si.
Figura 41: Cenário de simulação com apenas uma rota entre comunicantes próximos
Tabela 1: Legenda das Figuras 39, 40 e 41
5.2 Teste do Framework de Protocolos de Comunicação
, Framework , ' ' ( )
* 4
, Shmem W
-" U Shared Memory U + X $
" $ R $ 4 $
$ A ,
-Y=3Z
B : 3 , ' 1 ' " Shmem
* , 3 -3 2 "
'
* & : -:
) - " & J W "X
7)W "X
a2:
a1:
) - " 7 J W "X
7)W "X
:b1 :b2
Interface de RedeTecnologiaTecnologia Simulada
a1 " J 2
a2 " 7 "
b1 " J 2
b2 " 7 "
* , 3 -3 2 "
'
* & : -:
) - " & J W "X
7)W "X
a2:
a1:
) - " 7 J W "X
7)W "X
:b1 :b2
Switch
E:
4 Shmem $ " R $
, " $
" $ - Y=GZ
! & 2 ?:
- R !
Figura 42: Algoritmo para o problema de Leitores e Escritores com suporte a múltiplos leitores simultâneos
@ $ Framework , '
" shmaccptWstruct shmaccptX I
unsigned int transprotocolI 5
, Shmem $
unsigned int nictech: 5
Escritor:
Enquanto (verdadeiro){
+Trava semáforo de escrita;
Se dado já lido ou memória pronta para escrita{ Zera memória compartilhada;
Escreve os dados na memória; Marca na memória dados escritos
Destrava semáforo de escrita; Sinaliza leitores para começarem a leitura;
}Senão{
Destrava semáforo de escrita; Espera por alguns instantes; Aumenta o tempo de espera; Seta flag de extensão de tempo para 1; Sinaliza leitores para começarem a leitura;
}
Se flag de extensão de tempo igual a 1{ Diminui tempo de espera;
Seta flag de extensão de tempo em zero; }
}
Leitor:
Espera um sinal de dados prontos para ler; +Trava semáforo dos leitores;
Incrementa o contador de leitores em 1; Se for o primeiro leitor {
+Trava o semáforo dos escritores; }
Destrava o semáforo dos leitores; Lê o dado;
Marca na memória “dado lido” +Trava o semáforo dos leitores;
Decrementa o contador de leitores simultâneos; Se não houver mais leitores {
Destrava Semáforo dos escritores; }
E=
key_t shmkey: 5 "
int shmsize:) " -.
key_t semakey:5 W X R
unsigned int sem_num:A R R
int shmid: 5 "
$
4 %
EmissorProdutor(), ReceptorConsumidor(), ProtocolStubPackBroker() ProtocolStubUnpackBroker() 2 ?= ?? ?B ?E
Figura 43: Implementação da função EmissorProdutor() para o protocolo Shmem
! "# # #
$
% $
&'( ()
*
+* ,-& $
& . /0 " /0 #
* , & /0 " /0 !
1 2 $
* & /0 " /0 ! /0 " /0 #
1 2 $ 34 # 5
5 5
** ,-& $
6 6
7 /0 " /0 #
2 5
* /0 ! /0 " /0 #
! #
1 2 34 # .
87 #934#:,4)
E?
1.1.1. Protocolo de Comunicação UDP com bit alternante
Figura 44: Implementação da função ReceptorConsumidor() para o protocolo Shmem. Figura 45: Implementação da função ReceptorConsumidor() para o protocolo Shmem.
Figura 46: Implementação da função BrokerHdrPacking() para o protocolo Shmem.
# # "# .# #.
$
% $
&'( ()
# ;# < # ;
* # < # # ;
** =8,, $
* # < # # ;
& . /0 " /0 #
/0 # * , & /0 " /0 !
/0 # 1 2 $
/0 # * & /0 " /0 !
/0 " /0 #
/0 # 1 2 $
# ;# < # ;
/> 5
5
5 ** ,-& $
7 /0 " /0 #
# ;# < # ;
2 5
# ;# < # ;
* < /0 # /0 !
/0 " /0 # "#
1 2 :7#
.
9 ' . .#
$
. ?>2@AB
!
. .#
! * 2 *
% $
&'( ()
#
# * /0 ? B
" <. ? ! B < * # /0
! # /0
! C* ! # /0
" <. ? ! B < * # /0
! # /0
! C* ! # /0
" <. ? ! B < * # /0 "
! # /0 "
! C* ! # /0 "
" <. ? ! B < * # /0 !
! # /0 !
! C* ! # /0 !
" <. ? ! B < * # /0 "
! # /0 "
! C* ! # /0 "
" <. ? ! B < * # /0 #
! # /0 #
! C* ! # /0 #
.
EB
Figura 47: Implementação da função BrokerHdrUnpack () para o protocolo Shmem.
B : : , ' A ,
-4 A , - $ A , "
)',P , - Y=3Z 4
-S $ "
- %
R S " &
% - $ RS
$ - %
) R
@ $ Framework , '
" udpaccpt I
unsigned int transprotocolI 5
, Udp_bit_alt 3
unsigned int nictech: 5
. .# 9 ' 8 .
$
. .#
! ! ! ! #
#
* .
! * !
% $
&'( ()
* > !
/0 * < ? B C* !
/0 * < ? B C* !
/0 " * "# < ? B C* !
/0 ! * < ? B C* !
/0 " * "# < ? B C* !
/0 # * < ? B C* !
/0 ? B *
CC .
EE
char interface_name[]I 5 W S I "O
"3 8 SX
char address[]I ,
unsigned int portI 5 , socket int sd: socket
4 Framework %
EmissorProdutor(), ReceptorConsumidor(), ProtocolStubPackBroker() ProtocolStubUnpackBroker()
2 ?M ?G BO B3
Figura 48:Implementação da função EmissorProdutor() para o protocolo UDP bit alternante.
! "# # #
$
% $
87 #934#:,4) *
"# * "#
# ; * "# /0 # ;
# ;# < # ;
* # < # # ;
+* =8,,
D /0 # E F D /0 #
** =8,, GG ** &4: 4 -== $
* # < # # ;
/0 # * 3 # # < /0 # #
/0 /0
/0 "# /0 #
/0 # ** /> $
# ;# < # ;
/> 5
D 87 ++F D
5 ** ,-& $
# < # # ;
# ;# < # ;
2 5
* /0 #
* /0 # #
# ;# < # ;
* & 4 < ! 2 1 2 $
/>
5 $
D( +F D
EN
Figura 49:Implementação da função ReceptorConsumidor () para o protocolo UDP bit alternante.
Figura 50: Implementação da função BrokerHdrPacking() para o protocolo UDP bit alternante.
# # "# .# #.
$
% $
87 8=3 :&4) "# *
# ;# < # ;
* # < # # ;
** =8,, $
* # < # # ;
/0 # * 3 # #& < /0 # #
87 #934#:,4 "# /0 "# /0
/0 #
/0 # # # * # ! #
/0 # 1 2
/>
5 $
** ,-& $
/0 # #
# < # # ;
# ;# < # ;
2 5
5
* /0 #
# # * /0 # # #
# ;# < # ;
* & < # # : H#I & < 2
1 2 />
# /0 * 87 #934#:,4
" # /0 # # # /0 # >A
# /0 * # # /0 #
# * #
.
9 ' . .#
$
. ?>2@AB
!
. .#
! * 2 *
% $
87 #934#:,4)
* > !
/0 * < ? B C* !
/0 * < ? B C* !
# * < ? B
* #
" < /0 < ! /0 C* !
/0 * < ? B C* !
/0 ? B *
CC .
EM
Figura 51: Implementação da função BrokerHdrUnpack () para o protocolo UDP bit alternante.
5.3 Overhead inserido pelo Canal Virtual de Tempo Real
5 ' ( ) * overhead &
%
Brokers $ ' Y:MZ
% % $ cache prefetching R
Wsoft realAtimeX ) -% ' ( ) *
-Framework , '
-& overhead %
middleware , % $
+ 30- $ - " 7
R W ' R X $
$ - &
' ( ) * $
Shmem Framework. &
. .# 9 ' 8 .
$
. .#
! ! ! ! #
#
* .
! * !
% $
87 #934#:,4)
* > !
/0 * < ? B C* !
/0 * < ? B C* !
# * < ? B
* #
" < /0 < ! /0 C* !
/0 * < ? B C* !
/0 ? B *
CC .
EG
Shmem W
middlewareX & ) - : =
-$ ' ( ) * Shmem
$ Shmem
Tabela 2: Tempo de transmissão e recepção de mensagens utilizando o Canal Virtual de TempoAReal.
)
) "" 55
' ' ) ) , , W
W XX
) )
' ' W
W XX
30- =OOO Canal Virtual TR
+ Shmem E O=G:?BEM3 E O:?N:?NM=
30- =OOO Canal Virtual TR
+ Shmem E O=?N3:3?B E O?3E=?NM?
30- =OOO Canal Virtual TR
+ Shmem E OOM?:?BEN E OOE?MNMG
30- =OOO Canal Virtual TR
+ Shmem E O=3NGM:3G E O=?:3:B?B
30- =OOO Canal Virtual TR
+ Shmem E O:3M=?G3B E O:3NBE=:3
30- =OOO Canal Virtual TR
+ Shmem E O=EGM:?3B E :NBEGMB:3
30- =OOO Canal Virtual TR
+ Shmem E O:GEO3?O= E OE3:MNBO3
30- =OOO Canal Virtual TR
+ Shmem E O:?OMB?NM E O::=GEGN3
30- =OOO Canal Virtual TR
+ Shmem E O=N=G?BEE E O=EGMNN:3
30- =OOO Canal Virtual TR
+ Shmem E O=BBM=G?E E O=BE=NMO3
T
Toottaallddeettrraannssmmiissssõõeess:: 10 TTeemmppoommééddiioo
E O:GGEE E OBEOM:
Tabela 3: Tempo de transmissão e recepção de mensagens utilizando somente o Protocolo Shmem
)
) "" 55
' ' ) ) , , W
W XX
) )
' ' W
W XX
30- =OOO Somente
Shmem E O:=BN?:=M E OOM3:B3=E
30- =OOO Somente
Shmem E OO:?EB=:E E OONEN3:M=
30- =OOO Somente
Shmem E O:O3G3B:: E O:O3E?BBG
30- =OOO Somente
Shmem E O:GOM3?E: E O:G?:?N:3
30- =OOO Somente
Shmem E OOBNEM?3: E OOBNMGE:3
30- =OOO Somente
NO
30- =OOO Somente
Shmem E O=OE?:=NM E O:?BGE=BN
30- =OOO Somente
Shmem E OOB3G:?BE E OO??:NMGM
30- =OOO Somente
Shmem E O:EN:3EMM E O=?BENMG3
30- =OOO Somente
Shmem E OOEB3G?E? E OO3?BGN:=
T
Toottaallddeettrraannssmmiissssõõeess:: 10
T
Teemmppoommééddiioo
E
EOO33MM3333MM EEOO33EE==??BB
2 $ - %
- overhead O O33M?M
O O=GN=N # '
-- overhead - S
33 =G '
overhead R quantum
8 S # 3O
5.4 Teste de recuperação do canal na presença de falhas de Comunicação
, "
$ '
' ) * R
' R %
TRY_ALL_ROUTES TRY_SPARE_FIC_FIRST + R
, - $
"
$ A , " W -%
" bit X # ,
FICs nictec
78A )44)9V(3V3 Bluetooth
J V2 WiAfi
& ) - ? % $
R $
N3
% R $
"
Tabela 4: Tempo médio de transmissão no cenário de simulação com vária rotas alternativas entre comunicantes próximos
C
Ceennáárriioo::11 Política de redirecionamentoI
TRY_ALL_ROUTES TRY_SPARE_FIC_FIRST
)
) "" 55
1 1 *
* '' )) ,, WW XX
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
T
Toottaallddeettrraannssmmiissssõõeess::3O
T
Teemmppoommééddiioo
Tabela 5: Tempo médio de transmissão no cenário de simulação com vária rotas alternativas entre comunicantes distantes
C
Ceennáárriioo::22 Política de redirecionamentoI
TRY_ALL_ROUTES TRY_SPARE_FIC_FIRST
)
) "" 55
1 1 *
* '' )) ,, WW XX
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
N:
Alternante
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
T
Toottaallddeettrraannssmmiissssõõeess::3O
T
Teemmppoommééddiioo
' - ) - ? "
-+ " "
R R
! # "
"R R
2 =N TRY_ALL_ROUTES
"
' R #
S - W 2 =MX
TRY_SPARE_FIC_FIRST% #
-- ) - E
Tabela 6: Tempo médio de transmissão no cenário de simulação com apenas uma rota entre comunicantes próximos
C
Ceennáárriioo::3 3 Política de redirecionamentoI
TRY_ALL_ROUTES TRY_SPARE_FIC_FIRST
)
) "" 55
1 1 *
* '' )) ,, WW XX
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
N=
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
30- 3O Bh UDP Bit
Alternante
T
Toottaallddeettrraannssmmiissssõõeess::3O
T
N?
6 CO CLUSÕES E TRABALHOS FUTUROS
7
-' (
) *
W
@ 4 8 S $ middlewareX
handhelds laptops
' # ?
-8 S # $
Framework , ' 2 -% overhead
- " $ R
B 3
4 Framework
-' ( ) * %
framework ? ? # "
# framework
5 overhead # ' S
$ middleware
Shmem $ middleware $
Shmem $ S overhead
% - R middleware R
middleware ' overheads - % R
-2 ' - " ' $
% " +
R & TRY_ALL_ROUTES
NB
TRY_SPARE_FIC_FIRST R # # #
" R
5 R TRY_ALL_ROUTES
!
-TRY_SPARE_FIC_FIRST 2 R
TRY_SPARE_FIC_FIRST "
# TRY_ALL_ROUTES R
' - " #
" -
-#
#
middleware #