04.07.2013 Views

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 ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!