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.

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

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

Saved successfully!

Ooh no, something went wrong!