Calcul des etats atteignables de programmes Esterel partitionne ...
Calcul des etats atteignables de programmes Esterel partitionne ...
Calcul des etats atteignables de programmes Esterel partitionne ...
- No tags were found...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
3.4.L’OPÉRATEUR PARALLÈLE ET LES SIGNAUX 43input BUTTON;signal START_1, START_2, START_3 inevery START_1 every START_2 every START_3abort abort abortrun TASK_1 || run TASK_2 || run TASK_3when START_2 when START_3 when START_1end end end||pause;loopemit START_1; await BUTTON;emit START_2; await BUTTON;emit START_3; await BUTTON;end loopend signalDans cet exemple illustré par la figure 3.11, quatre <strong>programmes</strong> apparaissent en parallèle.Trois d’entre eux possè<strong>de</strong>nt la même structure, une tâche principale (TASK 1,2,3 ) qui est démarréeet stoppée en fonction <strong>de</strong> la réception <strong>de</strong> signaux START 1,2,3 . Le quatrième module séquentielque nous qualifierons <strong>de</strong> “principal” permet <strong>de</strong> piloter les trois autres en émettant <strong><strong>de</strong>s</strong> ordres<strong>de</strong> lancement et d’interruption spécifiques à chacun <strong><strong>de</strong>s</strong> autres modules. Les tâches TASK 1,TASK 2 et TASK 3 s’exécutent <strong>de</strong> manière séquentielle malgré la forme “parallèle” apparente duprogramme global. L’utilisation <strong><strong>de</strong>s</strong> signaux permet <strong>de</strong> faire transiter le programme d’un mo<strong>de</strong>à un autre, chaque mo<strong>de</strong> n’activant que certains blocs du programme. Dans cet exemple simple,les TASKs sont cycliquement exécutés en séquence, mais le scheduler pourrait être un sélecteurplus sophistiqué.TASK_1TASK_2START_1START_2START_3TASK_3Fig. 3.11 – Programme parallèle au comportement séquentiel. Au centre, le module principalpermet <strong>de</strong> passer d’un mo<strong>de</strong> actif à un autre par l’envoi <strong>de</strong> signaux.Nous pouvons appliquer à cet exemple le même type <strong>de</strong> <strong>partitionne</strong>ment que celui décritpour l’opérateur <strong>de</strong> séquencement. Le module principal est toujours actif. Par conséquent, le