L'approche asynchrone
l'approche asynchrone perception continue des occurrences d'événements prise en compte de l'ordre des occurrences immédiate, même si le traitement est différé ordonnancement des tâches associées préemption des tâches (priorités) facultative ou impérative avortement ou suspension reprise au point d'interruption ou recommencement
l'approche asynchrone mémorisation des occurrences signification des répétitions structures de mémorisation non bornées durées des traitements des occurrences non majorées pas de notion de simultanéité, mais perception de précédences répartition des applications plus aisée que dans le formalisme synchrone synchronisation ponctuelle des horloges
Le langage Electre développé à partir des années 80 à Nantes (IRCyN) manipule des modules → tâches événements
Le langage Electre les opérateurs du langage permettent de construire des structures de modules : séquentialité (;) répétition(loop) disjonction exclusive (|) entre structures d'événements : exécution exclusive de la première des branches activées parallélisme (||) : attente non exclusive pour une exécution concurrente des branches activées entre modules et événements activation d'un module par un événement (e:A active A sur l'occurrence de e) préemption (A await e suspend l'exécution en cours de A à l'occurrence de e)
Le langage Electre les opérateurs binaires et les qualifications des modules et des événements permettent de préciser les conditions d'exécution et de mémorisation
Le langage Electre exemple d'un téléphone exécution simultanée de 2 tâches une pour décrire le comportement du système une (PHONE) pour simplement générer aléatoirement les événements dec (décrocher) et occ (occupé) les événements dec et occ peuvent se produire après l'exécution d'une séquence : COMPOSE suivi de la répétition d'une sonnerie la répétition est interrompue par la première des occurrences de dec (qui active PARLE) ou occ (qui active la répétition de la sonnerie OCCUPE) toute la structure peut être interrompue par racc (raccroche)
PROGRAM telephone [. [COMPOSE ; [loop SONNE end_loop] watching. { PROGRAM telephone [ [COMPOSE ; [loop SONNE end_loop] watching { dec : PARLE | occ : [loop OCCUPE end_loop] } ] || PHONE ] watching {racc} END_telephone
Le langage Electre exemple de synchronisation lecteurs-écrivain partage d'une ressource plusieurs lecteurs peuvent travailler simultanément un seul écrivain peut accéder, à l'exclusion de tout autre utilisateur (écrivain ou lecteur) 3 lecteurs, 1 écrivain pas de priorités PROGRAM lecteurs_ecrivain loop await {l1 : LIRE1 || l2 : LIRE2 || l3 : LIRE3} | e : ECRIRE end loop end lecteurs_ecrivain
Le langage Electre avec une priorité pour éviter les coalitions d'écrivains PROGRAM lecteurs_ecrivain loop await {l1 : ! LIRE1 || l2 : LIRE2 || l3 : LIRE3} watching e : ECRIRE end loop end lecteurs_ecrivain (note : le symbole ! indique la non-interruptibilité) ECRIRE LIRE1 LIRE2 LIRE3 l1 l2 e l3 l1
Le langage Electre on peut également indiquer la mémorisation des occurences d'événement (symbole #) PROGRAM lecteurs_ecrivain loop await {l1 : ! LIRE1 || #l2 : LIRE2 || #l3 : LIRE3} watching e : ECRIRE end loop end lecteurs_ecrivain ECRIRE LIRE1 LIRE2 LIRE3 l1 l2 l3 e l1 l3
Le langage Electre ou indiquer que le traitement de l'occurence doit reprendre au début (symbole >) PROGRAM lecteurs_ecrivain loop await {l1 : ! LIRE1 || #l2 :> LIRE2 || #l3 : LIRE3} watching e : ECRIRE end loop end lecteurs_ecrivain ECRIRE LIRE1 LIRE2 LIRE3 l1 l2 l3 e l1 l3
description des systèmes temps réels un système temps réel classique peut le plus souvent être vu à 2 niveaux un niveau local où un, ou des processeurs fortement couplés, exécutent des fonctions et des commandes échanges de flots de données semi-continus et d'événements ponctuels chaque sous-système a son horloge pas d'horloge commune peuvent être modélisés par une approche synchrone un niveau global où les systèmes locaux sont faiblement couplés possibilités de dérives d'horloges, de gigue pas de synchronisation entre les données et les fonctions nécessité de mémoriser les données peuvent être modélisés par une approche asynchrone
description des systèmes temps réels chaque calculateur local implémente des fonctions cycliques des fonctions apériodiques fonctionnant dans un modèle synchrone (LUSTRE, ESTEREL) l'asynchronisme est géré par un séquenceur mémorisation des signaux reçus pendant l'exécution des fonctions gestion de l'exécution des fonctions fonctionnant dans un modèle asynchrone (ELECTRE)
langages de programmation