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.
1 data donnee<br />
2 end donnee;<br />
3<br />
4 thread emetteur<br />
5 features<br />
<strong>Modélisation</strong> <strong>des</strong> <strong>systèmes</strong> <strong>temps</strong>-<strong>réel</strong> <strong>répartis</strong> <strong>embarqués</strong><br />
6 s1 : out event data port donnee;<br />
7 properties<br />
8 Dispatch_Protocol => background;<br />
9 end emetteur;<br />
10<br />
11 thread transmetteur<br />
12 features<br />
13 e1 : in event data port donnee;<br />
14 s1 : out event data port donnee;<br />
15 s2 : out event data port donnee;<br />
16 properties<br />
17 Dispatch_Protocol => aperiodic;<br />
18 end emetteur;<br />
19<br />
20 process processus<br />
21 end processus;<br />
22<br />
23 process implementation processus.i<br />
24 subcomponents<br />
25 thread0 : thread emetteur;<br />
26 thread1 : thread transmetteur;<br />
27 thread2 : thread transmetteur;<br />
28 connections<br />
29 cnx0 : event data port thread0.s1 -> thread2.e1;<br />
30 cnx1 : event data port thread1.s1 -> thread2.e1;<br />
31 cnx2 : event data port thread1.s2 -> thread2.e1;<br />
32 cnx3 : event data port thread2.s1 -> thread1.e1;<br />
33 cnx4 : event data port thread2.s2 -> thread1.e1;<br />
34 end processus.i;<br />
Listing VII.5 – Architecture impliquant un débordement <strong>des</strong> files d’attentes, traduit par le réseau<br />
de Petri de <strong>la</strong> figure VII.9<br />
À chaque cycle, le thread thread1 envoie systématiquement deux données au thread thread2<br />
à chaque exécution, qui se déclenchera donc deux fois, renvoyant ainsi deux jetons de contrôle à<br />
thread1. À chaque déclenchement, thread2 envoie lui-même deux données à thread1, qui renvoie<br />
en retour deux jetons de contrôle. Il y aura donc <strong>des</strong> débordements de file d’attente au niveau<br />
<strong>des</strong> ports d’entrée de thread1 et de thread2, qui <strong>pour</strong> chaque donnée consommée reçoivent deux<br />
données ; les jetons de contrôle n’empêchent pas cette situation, puisque leur nombre n’est pas<br />
borné.<br />
Ce mauvais agencement <strong>des</strong> threads, dans lequel les threads récepteurs ne peuvent pas consommer<br />
les données aussi vite qu’elles sont produites, se traduit par un réseau non borné et une accumu<strong>la</strong>tion<br />
de jeton dans certaines p<strong>la</strong>ces. Dans <strong>la</strong> mesure où nous faisons abstraction <strong>des</strong> propriétés<br />
temporelles de l’architecture, cette situation apparaît systématiquement ; elle est inhérente à l’architecture<br />
et révèle une erreur de conception.<br />
144 c○ 2007 Thomas Vergnaud