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.

<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

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

Saved successfully!

Ooh no, something went wrong!