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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Chapitre VII – Vérification formelle de <strong>la</strong> structure <strong>des</strong> applications<br />

cnx0<br />

thread0_s1<br />

thread0_restart<br />

<br />

<br />

<br />

cnx1<br />

cnx4<br />

<br />

<br />

cnx2<br />

Comm<br />

<br />

Control<br />

Comm thread2_restart thread0<br />

<br />

thread2_e1 Control<br />

<br />

<br />

<br />

<br />

cnx3<br />

<br />

thread2_s2 thread2<br />

thread1_e1<br />

Comm <br />

<br />

Comm<br />

thread1_restart <br />

Control<br />

<br />

thread2_s1<br />

<br />

thread1<br />

thread1_reset Comm<br />

[c = 1]<br />

<br />

<br />

<br />

<br />

thread1_end<br />

thread1_s1<br />

Control<br />

Comm<br />

<br />

<br />

thread2_e1_choose<br />

Control<br />

thread1_s2<br />

thread1_e1_choose<br />

Comm<br />

<br />

Control<br />

<br />

thread2_reset<br />

<br />

[c = 2] thread0_end<br />

Control<br />

thread2_end<br />

Control<br />

C<strong>la</strong>ss<br />

Control is [0,1, 2];<br />

Value is [u, d];<br />

Domain<br />

Comm is ;<br />

Var<br />

c, c1, c2 in Control;<br />

v in Value;<br />

FIG. VII.9 – Réseau de Petri non borné correspondant au listing VII.5<br />

VII-7.2 Absence de blocages<br />

L’absence d’une donnée dans les séquences d’un thread peut correspondre à une dépendance<br />

mutuelle de deux sous-programmes de séquences différentes : un sous-programme prend en entrée<br />

le résultat d’un autre sous-programme, lequel prend en entrée <strong>la</strong> sortie du premier. Elle peut aussi<br />

correspondre à l’absence d’une connexion ; dans ce cas un sous-programme utilise <strong>des</strong> données<br />

dont <strong>la</strong> valeur n’est pas définie.<br />

La « famine » d’un thread se produit lorsque le thread ne reçoit pas toutes les données nécessaires<br />

à son exécution. Il s’agit typiquement d’une connexion manquante.<br />

Un blocage dans l’exécution du thread peut se produire lorsqu’un thread appelle un sousprogramme<br />

distant fourni par un autre thread, lequel sous-programme fait lui-même un appel à un<br />

sous-programme distant fourni par le premier thread : le second appel distant restera indéfiniment<br />

en attente, puisque le premier thread est déjà occupé à attendre <strong>la</strong> réponse à son appel distant.<br />

Tous ces cas correspondent à <strong>la</strong> présence d’une donnée invalide, ou l’absence d’une quelconque<br />

donnée, dans le flux d’exécution. L’absence de donnée se traduit par l’absence de jeton,<br />

empêchant ainsi <strong>la</strong> transition concernée d’être déclenchée. La présence d’une donnée invalide se<br />

traduit par <strong>la</strong> présence d’un jeton marqué u, empêchant également <strong>la</strong> transition concernée de se<br />

déclencher, du fait de <strong>la</strong> garde qui lui est associée. Un dysfonctionnement dans un flux de donnée<br />

se traduit donc par une transition du réseau de Petri qui ne se déclenche jamais.<br />

Afin de vérifier l’absence de blocage dans l’exécution <strong>des</strong> threads, il est donc nécessaire de<br />

s’assurer que le jeton de contrôle de chaque thread passera de <strong>la</strong> p<strong>la</strong>ce initiale à <strong>la</strong> p<strong>la</strong>ce finale.<br />

Ce<strong>la</strong> se traduit par <strong>la</strong> formule VII.1.<br />

∀t ∈ T hreads,card(t_c_start) > 0 → AF(card(t_c_end) > 0) (VII.1)<br />

Pour chaque thread t, le fait que <strong>la</strong> p<strong>la</strong>ce t_c_start (p<strong>la</strong>ce de départ du jeton de contrôle t) ne<br />

soit pas vide à un instant donné implique que <strong>la</strong> p<strong>la</strong>ce t_c_end (p<strong>la</strong>ce de fin du jeton de contrôle<br />

c○ 2007 Thomas Vergnaud 145

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

Saved successfully!

Ooh no, something went wrong!