• Aucun résultat trouvé

L APPROCHE REACTIVE-SYNCHRONE

N/A
N/A
Protected

Academic year: 2022

Partager "L APPROCHE REACTIVE-SYNCHRONE"

Copied!
22
0
0

Texte intégral

(1)

L’APPROCHE REACTIVE-SYNCHRONE

L’approche synchrone Le langage Esterel

Sémantique formelle...

(2)

Systèmes réactifs

Transformationel :

lancement avec paramètres;

exécution;

retour des résultats

Interactif :

while(true){

activation;

input des paramètres;

exécution;

output des résultats }

Réactif :

intéractif + toujours prêt à traiter de nouveaux inputs

Système réactif

activation

... ...

Systèmes embarqués IHM

Protocoles Circuits . . .

(3)

Approche synchrone

• Réaction de durée nulle

hypothèse idéale pour assurer la réactivité

• Déterminisme

la même suite d’inputs produit la même suite d’outputs

• Aucune création dynamique

pour permettre les preuves et validations formelles

output

activation input output

activation

input output

activation input

instant

(4)

Un exemple

Système d’acquittement Top/Req

Oqp Req

Ok

Top Req Top Top Alarm

• Premier Req entre deux Tops -> Ok ; Req suivants -> Oqp

• Alarm si aucun Req entre deux Tops

Ambiguité : Top et Req simultanés ?

(5)

Automates

Top/Alarm

2 1

T o p / Req/Ok

Req/Oqp 0

Technique monolithique, sans parallélisme.

Automates difficilement réutilisables (ex : reset)

Technique standard : les machines d’états finis

Top,Req/Alarm

Top,Req/Alarm

(6)

Esterel

• Style impératif

• Opérateur de parallélisme (logique)

• Communication par événements diffusés

• Centré sur le contrôle

• Approche compilée

• Environnement de programmation industrialisé par Esterel Technologies

http://www.esterel.org

Langage de programmation synchrone

(7)

Instructions réactives

Séquence : “;

Parallélisme : “|| Instant : pause

Boucle infinie : loop ... end

Boucle finie : repeat ... times ... end

Signal : signal S in ... end Emission : emit S

Attente : await S

Présence : present S then ... else ... end

(8)

Préemption

forte : abort ... when S do ... end

abort loop

emit T;

pause end

when S activation

T

activation activation

S

activation T

faible : weak abort ... when S do ... end

weak abort loop

emit T;

pause end

when S

activation T

activation activation

S

activation

T T

(9)

Instructions dérivées

every S do ... end

loop

await S;

abort ... when S end

halt loop pause end

do ... upto S

abort

...; halt when S

sustain S

loop

emit S;pause end

(10)

module TopReq : input Top,Req

output Ok,Oqp,Alarm

signal Question,Received in every Top do

emit Question;

present Received else emit Alarm end end

||

loop

await Req; emit Ok;

abort

every Req do emit Oqp end

when Question do emit Received end end

end

end module

Top/Req

(11)

Liens avec les données

type T;

var x : int, y : T in ... end x := 3; y := fun(...)

if ... then ... else ... end call proc(r1,r2)(v1,v2)

type “abstrait”

signal S : integer with plus emit S(3)

emit S(3);emit S(4) x := ?S

Signaux valués

(12)

Séquence :

a;b join(a);b Parallélisme :

a||b new Thread(a).start();

new Thread(b).start();

Boucle : loop a end while(true){a}

Signaux : emit S, await S synchronized(S) Préemption : abort a when S a.stop()

Instants : pause yield()

Correspondance avec les threads ?

Très approximatif ...

(13)

Syntaxe pour exprimer les flots : Lustre, Signal

Programmation synchrone dataflow

Flot : suite de valeurs + horloge de présence

X = 0 1 2 3 4 ...

Y = - 0 1 2 3 ...

Z = 0 - 2 - 4 - ...

X = 0 -> 1 + pre(X) Y = pre(X)

Altern = true -> not(pre(Altern)) Z = X when Altern

Calculs d’horloges : assure une solution unique au système d’équations + mémoire bornée

T = X + Z U = U + 1 V = 0 -> V

(14)

TopReq en dataflow

node TopReq (Req, Top : bool) returns (Alarm : bool);

var Ok,Oqp : bool;

let

Ok = false -> Req and not pre(Req);

Oqp = false -> Req and pre(Req);

Alarm = false ->

Top and not pre(Ok) and not pre(Oqp);

tel.

Oqp Req

Ok

Top Req Top Top Alarm

Top v f f v v Req f v v f f Ok f v f f f Alarm f f f f v

(15)

Programmation synchrone graphique

Statecharts, Argos, SyncCharts

Req/Oqp Req/Ok

Question/

Received

Question, Received

#/Received

<2>

<2>

Top/Question

# / A l a r m

TopReq

(16)

Problèmes...

loop x := 1 end

signal S in

present S else emit S end end

emit S(?S + 1)

pas de solution

“problème de causalité” :

l’émission de S est causée par son absence

En Esterel :

(17)

plusieurs solutions signal S in

present S then emit S end end

emit S(?S)

Problèmes - 2

signal S1,S2 in

present S1 then emit S2 end

||

present S2 then emit S1 end end

run S1thenS2 || run S2thenS1 problème pour la modularité

(18)

Causalité et préemption

abort

pause;

emit S when S

Pas de problème avec la préemption faible Problème = réaction instantanée à l’absence

abort

pause; ||

emit T when S

abort

loop pause end when T do

emit S end

(19)

Solution unique

signal S in

present S then emit T end;

emit S end

L’unicité de la solution pas suffisante, car il y a des solutions non causales

Problème d’efficacité : comment éviter d’essayer toutes les solutions ? (2N)

signal S in

present S then emit T end

||

emit S end

(20)

• Analyse des cycles de dépendances dans le graphe du programme (v4)

• Potentiels (v3)

• Causalité constructive (v5)

Les approches de compilation

present S1 then emit S2 end;

pause;

present S2 then emit S1 end

emit S;

present T then

present S else emit T end end

rejeté par v4 rejeté par v3

present S then

present S else emit S end end

rejeté par v5

(21)

Conclusion

Les faiblesses :

• problèmes de causalité obstacle à la modularité

• pas d’objets

• liaison “abstraite” avec les données

Les points forts de l’approche synchrone :

• grande puissance expressive (mais pas de création dynamique)

• possibilité de preuves et validation

• production de circuits

Besoin d’une approche formelle de la sémantique

(22)

Systèmes réactifs et programmation synchrone, Charles André, Cours de DEA, 1997.

Synchronous Programming of Reactive Systems, Nicolas Halbwachs, Kluwer Academic Pub.,

Amsterdam, 1993

The Esterel v5 Primer, Gérard Berry, http://www.inria.fr/meije/esterel

Références

Références

Documents relatifs

Pour étudier le problème de la gestion des ressources dans les système embarqués, nous nous plaçons dans le cadre de l’implantation des nœuds de réseaux de capteurs sans fil, qui

4.18 Évolution de la différence en valeur absolue entre l’enthalpie totale et l’enthalpie totale de référence calculée pour un écoulement de fluide parfait sur les maillages

Worker #1 leaves a flag in the database so that no other worker can compute the same parameter set: if for example a third worker is launched right after and finds its next task

The value which is observed on the signal at the end of the instant depends on the scheduling of the threads (unless the values are combined using an associative and

on Principles and Practice of Con- straint Programming (CP’95), volume 976 of Lecture Notes in Computer Science, pages 362–379. Abstracting synchronization in con- current

126 Katō argumentiert hier, dass das Recht jeder Nation auf Kriegsführung nicht durch mora- lische Bedenken eingeschränkt werden darf: „Wenn unser Land irgendwann in der Zukunft

Jérôme Fourel (X92), cofondateur et président du groupe X-Asie, « entrepreneur, avec plus de dix ans d’expérience à Taïwan, au Japon et en Californie » (F OUREL , 2003, p.