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.
2.1. ESTEREL 11– abort p when S : préemption forte. Interrompt l’exécution <strong>de</strong> p dès la réception <strong>de</strong> S.– weak abort p when S : préemption faible. Dès la réception <strong>de</strong> S, exécute les <strong>de</strong>rnièresréactions instantanées du bloc p avant d’interrompre son exécution.Par défaut, les instructions suspend, await, every et abort/weak abort ne réagissent à laprésence du signal S qu’à partir <strong>de</strong> l’instant suivant leur première activation. Le langage étendudéfinit le mot-clé immediate qui, dans un exemple comme “abort p when immediate S”, permet<strong>de</strong> réagir à la présence <strong>de</strong> S dès le premier instant.Un simple exemple. Le programme <strong>Esterel</strong> suivant modélise une porte automatique dontle comportement consiste à s’ouvrir dès qu’un utilisateur appuie sur un bouton. La porte resteouverte pendant un délai <strong>de</strong> trois secon<strong><strong>de</strong>s</strong> après la <strong>de</strong>rnière <strong>de</strong>man<strong>de</strong> d’ouverture, puis sereferme. Le temps et le bouton d’ouverture sont les entrées du programme (portées par <strong><strong>de</strong>s</strong>signaux purs, SECONDES et BOUTON). Comble <strong>de</strong> mo<strong>de</strong>rnité, un système <strong>de</strong> sécurité empêche lafermeture <strong>de</strong> la porte quand une présence est détectée (signal PRESENCE). Le signal OUVERTUREen sortie indique si la porte est ouverte :module porte:input BOUTON, SECONDES, PRESENCE;output OUVERTURE;every BOUTON dotrap FERMER inawait 3 SECONDES;suspend exit FERMER when immediate PRESENCE||sustain OUVERTUREend trap;end everyend moduleLes données en <strong>Esterel</strong>. Dans sa version complète, le langage permet aussi <strong>de</strong> manipuler<strong><strong>de</strong>s</strong> données : booléens, entiers, flottants et chaînes <strong>de</strong> caractères. Nous avons présenté la partiecontrôle auparavant car elle constitue la partie novatrice du langage <strong>Esterel</strong>. Le traitement<strong><strong>de</strong>s</strong> données est plus classique et souvent délégué à un langage hôte plus généraliste comme C ouJava. Par ailleurs, <strong>Esterel</strong> procure également un mécanisme capable <strong>de</strong> créer et <strong>de</strong> manipulerses propres structures <strong>de</strong> données par une interface avec le langage C. Ces données peuventêtre manipulées par le biais <strong>de</strong> simples variables ou bien être transmises par <strong><strong>de</strong>s</strong> signaux. Dansce second cas, un signal est caractérisé à la fois par son statut <strong>de</strong> présence ou d’absence etpar la valeur qu’il transporte, ces <strong>de</strong>ux notions étant orthogonales. Par exemple, un signal <strong>de</strong>type booléen peut être à la fois présent et faux ou bien absent et vrai. La valeur portée parun signal <strong>de</strong>meure inchangée tant que le signal n’est pas émis. La valeur d’un signal <strong>de</strong>meuredonc indéfinie ou bien initialisée à une valeur par défaut jusqu’à ce que le signal soit émis pourla première fois. A la différence d’une variable, un signal ne peut pas prendre plusieurs valeurssuccessives au cours d’un même instant.Le langage propose évi<strong>de</strong>mment quelques opérations <strong>de</strong> base : opérateurs logiques et arithmétique,manipulation <strong>de</strong> chaînes <strong>de</strong> caractères, instruction <strong>de</strong> test sur les variables, etc. . . En