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 VII – Vérification formelle de <strong>la</strong> structure <strong>des</strong> applications<br />
21 thread thread_b<br />
22 features<br />
23 rpc : requires subprogram access sspg_b;<br />
24 e1 : in event data port donnee;<br />
25 s1 : out event data port donnee;<br />
26 s2 : out event data port donnee;<br />
27 end thread_b;<br />
28<br />
29 thread implementation thread_b.impl<br />
30 calls<br />
31 seq1 : {appel1 : subprogram sspg_a;<br />
32 appel2 : subprogram sspg_b;};<br />
33 seq2 : {appel3 : subprogram access rpc;};<br />
34 connections<br />
35 cnx1 : parameter e1 -> appel1.e1;<br />
36 cnx2 : parameter e1 -> appel3.e1;<br />
37 cnx3 : parameter e1 -> appel3.e2;<br />
38 cnx4 : parameter appel1.s1 -> appel2.e1;<br />
39 cnx5 : parameter appel3.s1 -> appel2.e2;<br />
40 cnx6 : parameter appel3.s1 -> s1;<br />
41 cnx7 : parameter appel2.s1 -> s2;<br />
42 end thread_b.impl;<br />
43<br />
44 process processus<br />
45 features<br />
46 e : in event data port donnee;<br />
47 s : out event data port donnee;<br />
48 end processus;<br />
49<br />
50 process implementation processus.impl<br />
51 subcomponents<br />
52 thread1 : thread thread_a;<br />
53 thread2 : thread thread_b.impl;<br />
54 connections<br />
55 subprogram access thread1.rpc -> thread2.rpc;<br />
56 event data port e -> thread2.e1;<br />
57 event data port thread2.s1 -> s;<br />
58 end processus.impl;<br />
Listing VII.3 – Appels de sous-programmes, traduits en réseau de Petri sur <strong>la</strong> figure VII.7<br />
Le second thread, thread2 comporte deux séquences d’appel. La première est constituée de<br />
deux appels de sous-programmes ; <strong>la</strong> seconde est en fait un appel distant au sous-programme<br />
fourni par le premier thread, thread1. La circu<strong>la</strong>tion <strong>des</strong> données, indiquée par les connexions, est<br />
<strong>la</strong> suivante :<br />
– appel1 effectue un calcul à partir de e1 et transmet le résultat à appel2 ;<br />
– appel3 (exécuté sur le premier thread) effectue un calcul à partir de e1 et transmet le résultat<br />
à appel2 ainsi qu’à <strong>la</strong> sortie s2 du second thread ;<br />
– appel2 utilise les données fournies par appel1 et appel3 et renvoie le résultat vers <strong>la</strong> sortie<br />
s1 du thread.<br />
Les identificateurs de p<strong>la</strong>ce et de transition sont construits par concaténation <strong>des</strong> identificateurs<br />
<strong>des</strong> différentes conteneurs <strong>des</strong> entités AADL. Ainsi thread2_appel1_s1 est issu de <strong>la</strong> feature s1 de<br />
l’appel appel1 du thread thread2 ; <strong>pour</strong> <strong>des</strong> raisons de lisibilité nous avons omis l’identificateur<br />
c○ 2007 Thomas Vergnaud 139