12.07.2015 Views

Calcul des etats atteignables de programmes Esterel partitionne ...

Calcul des etats atteignables de programmes Esterel partitionne ...

Calcul des etats atteignables de programmes Esterel partitionne ...

SHOW MORE
SHOW LESS
  • 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

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

Saved successfully!

Ooh no, something went wrong!