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.
44 CHAPITRE 3.PRÉSENTATION INTUITIVEcomportement <strong>de</strong> ce bloc <strong>de</strong> programme sera encodé dans chacune <strong><strong>de</strong>s</strong> parties <strong>de</strong> la fonction <strong>de</strong>transition. Parallèlement à cela, nous proposons <strong>de</strong> <strong>partitionne</strong>r les calculs en saturant successivementla recherche <strong><strong>de</strong>s</strong> états <strong>atteignables</strong> dans les modules TASK 1, TASK 2 puis TASK 3.Dans un premier temps, nous saturons l’exploration <strong>de</strong> TASK 1 en bloquant explicitement lestransitions menant aux <strong>de</strong>ux autres modules. En quelque sorte, cela revient à interdire l’émissiondu signal START 2.Dans un second temps, nous interdisons l’émission du signal START 3. A cette étape du calcul,la fonction <strong>de</strong> transition que nous utilisons enco<strong>de</strong> les comportements <strong>de</strong> TASK 1, TASK 2 et dumodule principal. Tous les états <strong>de</strong> TASK 1 étant explorés, l’opérateur <strong>de</strong> cofacteur nous permet<strong>de</strong> n’appliquer qu’un morceau <strong>de</strong> notre fonction <strong>de</strong> transition dépourvu <strong><strong>de</strong>s</strong> comportements <strong>de</strong>TASK 1.Dans un troisième et <strong>de</strong>rnier temps, l’autorisation du signal START 3, l’application <strong>de</strong> la transitionglobale et l’utilisation <strong>de</strong> l’opérateur <strong>de</strong> cofacteur permettent d’achever les calculs parl’exploration du bloc TASK 3.Dans cet exemple, nous voyons comment l’utilisation <strong>de</strong> signaux peut induire un comportementséquentiel dans un programme écrit comme parallèle. D’une manière plus générale, nouspensons que l’analyse <strong>de</strong> l’utilisation <strong><strong>de</strong>s</strong> signaux nous permet <strong>de</strong> <strong>partitionne</strong>r le calcul <strong><strong>de</strong>s</strong> états<strong>atteignables</strong> dans les opérateurs parallèles, sans toutefois toujours tomber dans <strong><strong>de</strong>s</strong> situationsaussi favorables que celle présentée ici (pur séquencement).3.4.2 Partitionnement <strong><strong>de</strong>s</strong> blocs parallèlesPour <strong>partitionne</strong>r les <strong>programmes</strong> parallèles nous considérons chaque programme <strong>Esterel</strong>dans sa globalité. Afin d’introduire progressivement les difficultés, cette section présente unecollection <strong>de</strong> petits exemples. Chacun <strong>de</strong> ces exemples est un cas particulier permettant <strong>de</strong>mettre l’accent sur une difficulté précise.Etant donné un programme <strong>Esterel</strong> quelconque, nous nous focalisons sur les couples d’instructionsformés d’une instruction émettrice et d’une instruction réceptrice d’un même signallocal. Les instructions émettrices sont <strong>de</strong> la forme “emit S” ou bien “sustain S”. Les instructions<strong>de</strong> la forme “present S ...”, “await S” ou bien “abort ... when S” sont qualifiées <strong>de</strong>réceptrices. Pour simplifier l’exposition du problème, nous supposerons que chaque signal localn’est émis et reçu qu’à un seul endroit dans tout le programme. De cette manière, à chaquesignal local correspond une instruction émettrice et une instruction réceptrice placées dans <strong>de</strong>uxbranches parallèles distinctes, comme dans l’exemple ci-<strong><strong>de</strong>s</strong>sous :P 1 ; Q 1emit S; || await SP 2 Q 2Pour cet exemple, nous supposons aussi que chaque émission du signal S est interceptée parl’instruction await. Ce programme est donc équivalent à :[ P 1 || Q 1 ];[ P 2 || Q 2 ]Le <strong>partitionne</strong>ment <strong><strong>de</strong>s</strong> <strong>programmes</strong> parallèles est basé sur l’idée que l’utilisation <strong>de</strong> chaquesignal permet <strong>de</strong> diviser le programme en <strong>de</strong>ux parties : la première partie concerne tous les