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 />
Les séquences d’appel distant sont donc p<strong>la</strong>cées, séparément, au même niveau que l’ensemble<br />
<strong>des</strong> séquences de traitement <strong>des</strong> données du sous-programme ou du thread. Contrairement à cet<br />
ensemble, elles ne peuvent donc pas monopoliser le jeton de contrôle.<br />
Un thread comportant ces deux constructions peut donc alternativement traiter ses paramètres<br />
ou exécuter un sous-programme appelé depuis un autre thread.<br />
Réinitialisation <strong>des</strong> valeurs calculées<br />
Entre chaque exécution d’un thread ou d’un sous-programme, les valeurs de sortie <strong>des</strong> sousprogrammes<br />
appelés doivent être réinitialisées à <strong>la</strong> valeur invalide u. De cette façon, nous modélisons<br />
le fait que les éventuelles valeurs affectées aux variables dans le code source sont périmées<br />
lors de l’exécution suivante du thread ou du sous-programme.<br />
Règle VII.19 (Réinitialisation <strong>des</strong> valeurs <strong>des</strong> sous-programmes)<br />
La transition thread_reset associée à un thread thread est reliée à toutes les p<strong>la</strong>ces de<br />
sortie <strong>des</strong> sous-programmes appelés. Au passage du jeton de contrôle, elle consomme le<br />
jeton stocké dans chacune de ces p<strong>la</strong>ces, que sa valeur soit u ou d et y injecte un jeton<br />
de couleur u.<br />
Nous réinitialisons ainsi toutes les valeurs de sortie. Cette réinitialisation est effectuée lorsque<br />
le jeton de contrôle quitte le thread et traverse <strong>la</strong> transition de retour reset qui apparaît dans <strong>la</strong><br />
modélisation de haut niveau (cf. figure VII.2(c).<br />
VII-5.4 Exemple complet<br />
Afin d’illustrer les différentes règles de construction que nous avons énoncées, considérons<br />
un processus composé de deux threads, représenté sur le listing VII.3. Seul le premier thread<br />
reçoit les données transmises au processus ; le second thread fournit un point d’accès <strong>pour</strong> un<br />
appel de sous-programme distant. La figure VII.7 illustre le réseau de Petri correspondant à cette<br />
architecture.<br />
1 data donnee end donnee;<br />
2<br />
3 subprogram sspg_a<br />
4 features<br />
5 e1 : in parameter donnee;<br />
6 s1 : out parameter donnee;<br />
7 end sspg_a;<br />
8<br />
9 subprogram sspg_b<br />
10 features<br />
11 e1 : in parameter donnee;<br />
12 e2 : in parameter donnee;<br />
13 s1 : out parameter donnee;<br />
14 end sspg_b;<br />
15<br />
16 thread thread_a<br />
17 features<br />
18 rpc : subprogram sspg_b;<br />
19 end thread_a;<br />
20<br />
c○ 2007 Thomas Vergnaud 137