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.
<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 />
de t) finira elle-même par contenir un jeton, et ce dans tous les futurs possibles.<br />
Avec T hreads l’ensemble <strong>des</strong> threads de l’architecture, et les p<strong>la</strong>ces t_c_start et t_c_end<br />
correspondant respectivement aux p<strong>la</strong>ces de début et de fin du threads t considéré.<br />
De cette façon, nous pouvons nous assurer que les threads s’exécutent tous correctement ; si<br />
ce n’est pas le cas, il est nécessaire d’effectuer d’autres vérifications afin d’en identifier <strong>la</strong> cause.<br />
Le blocage d’un thread peut être dû à l’absence de certaines données en entrée ; <strong>la</strong> formule<br />
VII.2 permet de s’assurer qu’aucune p<strong>la</strong>ce d’entrée <strong>des</strong> threads n’est vide en permanence.<br />
∀p ∈ P<strong>la</strong>ces, AF(card(p) > 0) (VII.2)<br />
Avec P<strong>la</strong>ces l’ensemble <strong>des</strong> p<strong>la</strong>ces associées à chaque thread.<br />
Si en revanche le blocage du thread est dû à un problème dans <strong>la</strong> structure de ses séquences<br />
d’appel, il est nécessaire de vérifier que celles-ci s’exécutent correctement. Dans ce cas, nous<br />
devons suivre <strong>la</strong> même démarche de vérification que <strong>pour</strong> l’extérieur <strong>des</strong> threads : si un jeton de<br />
contrôle atteint <strong>la</strong> première p<strong>la</strong>ce d’une séquence, il doit atteindre <strong>la</strong> dernière p<strong>la</strong>ce par <strong>la</strong> suite<br />
(formule VII.3).<br />
∀s ∈ Sequences, implies(card(s_begin) > 0,AF(card(s_end) > 0)) (VII.3)<br />
Avec Sequences l’ensemble <strong>des</strong> séquences <strong>des</strong> threads de l’architecture.<br />
Lorsque <strong>la</strong> séquence bloquante est identifiée, il suffit alors de vérifier que le jeton de contrôle<br />
passe dans toutes les p<strong>la</strong>ces de contrôle <strong>des</strong> sous-programmes. Pour ce<strong>la</strong>, nous devons vérifier<br />
que chaque p<strong>la</strong>ce de contrôle de <strong>la</strong> séquence accueille exactement un jeton à un moment donné<br />
(formule VII.4).<br />
∀p ∈ Controles, AF(card(p) > 0) (VII.4)<br />
Avec Controles l’ensemble <strong>des</strong> p<strong>la</strong>ces de contrôle <strong>des</strong> sous-programmes associés aux séquences<br />
qui ne vérifient pas <strong>la</strong> formule VII.3.<br />
Le blocage du sous-programme peut être dû à l’absence d’une donnée à l’entrée de celui-ci.<br />
Une vérification alternative consiste donc à s’assurer que toutes les p<strong>la</strong>ces d’entrée de chaque<br />
sous-programme de <strong>la</strong> séquence considérée accueilleront un jeton à un moment donné (formule<br />
VII.5).<br />
∀p ∈ Entrees, AF(card(p) > 0) (VII.5)<br />
Avec Entrees l’ensemble <strong>des</strong> p<strong>la</strong>ces d’entrée <strong>des</strong> sous-programmes associés aux séquences<br />
qui ne vérifient pas <strong>la</strong> formule VII.3.<br />
Les formules VII.4 et VII.5 permettent d’identifier les p<strong>la</strong>ces d’entrée qui seront toujours<br />
vi<strong>des</strong>. Ces situations sont invali<strong>des</strong>, puisqu’elles traduisent un problème dans le flux d’exécution<br />
(formule VII.4) ou dans les flux de données (formule VII.5).<br />
VII-7.3 Déterminisme <strong>des</strong> valeurs<br />
Le dernier cas est différent. Nous considérons qu’une valeur n’est pas déterministe lorsqu’elle<br />
est peut être définie plusieurs fois. C’est notamment le cas lorsque les sorties de plusieurs sousprogrammes<br />
sont connectée à l’entrée d’un autre sous-programme ou à <strong>la</strong> sortie du thread correspondant.<br />
Ce<strong>la</strong> peut entraîner <strong>des</strong> redéfinitions successives de <strong>la</strong> valeur d’une donnée.<br />
146 c○ 2007 Thomas Vergnaud