Modélisation des systèmes temps-réel répartis embarqués pour la ...
Modélisation des systèmes temps-réel répartis embarqués pour la ...
Modélisation des systèmes temps-réel répartis embarqués pour la ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Chapitre VI – Construction et configuration de l’interface avec l’intergiciel d’exécution<br />
11 Dispatch_Protocol => background;<br />
12 end Minimal_Thread;<br />
13<br />
14 thread implementation Minimal_Thread.Generic<br />
15 subcomponents<br />
16 activation_buffer : data Ipao::Activation::Buffer;<br />
17 add_request : subprogram Ipao::Activation::Add_Request;<br />
18 activate_request : subprogram Ipao::Activation::Activate_Request;<br />
19 calls<br />
20 {broker : subprogram Ipao::Mubroker::Mubroker.Generic;};<br />
21 connections<br />
22 subprogram access Protocol -> broker.Protocol;<br />
23 subprogram access Queue_Request -> boker.Queue_Request;<br />
24 subprogram access Bind_Request -> broker.Bind_Request;<br />
25 subprogram access Add_Request -> broker.Add_Request;<br />
26 subprogram access Activate_Request -> broker.Activate_Request;<br />
27 subprogram access State_Machine -> broker.State_Machine;<br />
28 data access activation_buffer -> add_request.Buffer;<br />
29 data access activation_buffer -> activate_request.Buffer;<br />
30 end Minimal_Thread.Generic;<br />
31<br />
32 process implementation Application_Node.Generic<br />
33 subcomponents<br />
34 thread1 : thread Minimal_Thread.Generic;<br />
35 thread2 : thread Minimal_Thread.Generic;<br />
36 middleware_state : data Ipao::Mubroker::Mubroker_State;<br />
37 binding_buffer : data Ipao::Bind::Buffer;<br />
38 protocol1 : subprogram Ipao::Protocol::Protocol;<br />
39 queue_request : subprogram Ipao::Bind::Queue_Request;<br />
40 bind_request : subprogram Ipao::Bind::Bind_Request;<br />
41 connections<br />
42 subprogram access protocol1 -> thread1.Protocol;<br />
43 subprogram access protocol1 -> thread2.Protocol;<br />
44 subprogram access queue_request -> thread1.Queue_Request;<br />
45 subprogram access queue_request -> thread2.Queue_Request;<br />
46 subprogram access bind_request -> thread1.Bind_Request;<br />
47 subprogram access bind_request -> thread2.Bind_Request;<br />
48 data access middleware_state -> thread1.State_Machine;<br />
49 data access middleware_state -> thread2.State_Machine;<br />
50 data access binding_buffer -> queue_request.buffer;<br />
51 data access binding_buffer -> bind_request.buffer;<br />
52 end Application_Node.Generic;<br />
Listing VI.10 – Assemb<strong>la</strong>ge <strong>des</strong> composants de l’intergiciel<br />
Nous considérons un système composé de deux threads, instanciés aux lignes 34 et 35. Les<br />
composants Minimal_Thread.Generic représentent les threads de l’exécutif de bas niveau correspondants.<br />
Ils s’exécutent en tâche de fond et appellent le µBroker, dont <strong>la</strong> <strong>des</strong>cription comportementale<br />
doit former une boucle d’exécution. Les threads minimaux instancient les sousprogrammes<br />
et les données du service d’activation, qui leur sont propre (lignes 16 à 18). En revanche,<br />
les services de protocole, de liaison, ainsi que l’état du µBroker sont partagés entre les<br />
différents threads ; il doivent être instanciés dans le processus (lignes 36 à 40) puis connectés aux<br />
threads (lignes 42 à 51).<br />
c○ 2007 Thomas Vergnaud 117