Systèmes temps réel et embarqués

Transcription

Systèmes temps réel et embarqués
M2P GLRE
Génie Logiciel, logiciels Répartis et Embarqués
Systèmes temps réel et embarqués
Concepts de base, expression des contraintes temporelles
Z. Mammeri
1. Introduction
Aujourd’hui, les applications temps réel et embarquées sont de plus en plus variées et elles prendront de
plus en plus de place dans notre vie quotidienne de demain. Réservés, il y a quelques années, aux
applications industrielles, les systèmes temps réel et embarqués font leur apparition dans beaucoup d’autres
secteurs tels que le transport, le multimédia, les consoles de jeux, ... En termes de complexité, les systèmes
temps réel et embarqués couvrent un large spectre allant du simple microcontrôleur (pour le contrôle de la
fermeture/ouverture d’une vanne, par exemple), jusqu’aux systèmes répartis (pour le contrôle du trafic
aérien, par exemple). Les enjeux économiques et les intérêts scientifiques liés aux systèmes temps réel et
embarqués sont multiples. C’est la raison pour laquelle on assiste, depuis les années soixante-dix, à une
profusion de langages, de méthodes, d’algorithmes, de protocoles de communication, etc., pour le temps réel
et l’embarqué.
Les travaux développés sur le temps réel et l’embarqué concernent des sujets diversifiés notamment : la
spécification et la conception d’applications, les exécutifs, les langages, les protocoles de communication, la
vérification et validation d’applications et de protocoles, le contrôle de procédés, l’automatique, les bases de
données, les systèmes experts et le multimédia. La diversité des compétences qui interviennent aujourd’hui
dans les applications dites temps réel et embarquées est telle qu’il est parfois difficile, surtout pour un
profane, de saisir parfaitement le sens du terme temps réel et embarqué. Le temps réel exprime une qualité
de service à fournir, pour certains, une nécessité de garantir des délais de réponse connus à l’avance,
pour d’autres.
Toutes les applications temps réel ont une caractéristique commune qui réside dans l’existence de
contraintes temporelles dont il faut tenir compte. Ces contraintes peuvent prendre diverses formes
(échéances, intervalles de temps, durée de validité, etc.) et s’appliquer à des objets variés. En effet, dans les
applications temps réel, les données ont une durée de vie limitée et deviennent obsolètes après un certain
temps, les événements apparaissent à des instants particuliers et doivent être pris en compte au bout de délais
connus à l’avance et les traitements (ou actions) ont souvent des instants de débuts, de fin et des durées
d’exécutions fixés.
Nous voulons, dans ce chapitre, clarifier le concept de contraintes de temps, en particulier leurs origines,
les formes d’expressions qu’elles prennent et le problème lié à leur dérivation tout au long du cycle de
conception et de développement d’une application temps réel. Les différents aspects des contraintes
temporelles sont traités à l’aide d’exemples simples pris dans différents domaines d’activités qui font appel
aux applications et systèmes temps réel.
2. Applications et systèmes temps réel et embarqués
2.1. Domaines d’applications
Jusqu’à une date récente, les systèmes temps réel et embarqués étaient destinés quasi-exclusivement aux
applications de contrôle/commande de procédés (ou de phénomènes) physiques (tels que des laminoirs ou
des usines de fabrication de voitures) et applications militaires. La notion de temps réel se confondait alors
avec ce type d’applications. Le développement de l’informatique aidant, les applications temps réel et
embarqués sont présentes aujourd’hui dans des domaines très variés comme le montre la liste suivante, même
si elle n’est pas exhaustive :
− télécommunications (transport de la parole, systèmes de commutation, …),
− domaine médical (assistance et supervision de malades, …),
− contrôle de différents équipements dans les voitures, bus, trains, avions, …,
− contrôle et régulation de trafic en milieu urbain,
Contraintes temporelles - Z. Mammeri
2
− guidage de véhicules en milieu urbain,
− industrie (contrôle/commande de procédés manufacturiers ou continus, …),
− domaine militaire (suivi de trajectoires de missiles, …)
− aérospatial (suivi de satellites, simulation de vols, pilotage automatique, …),
− multimédia (transport d’images et de voie, téléconférences, …),
− finance (suivi du cours des devises et actions, ...),
− loisirs (consoles de jeu, ...),
− domotique (sécurité d’habitations, …),
− contrôle/commande d’appareils électroménagers.
2.2. Définitions
La diversité des domaines d’applications rend difficile l’élaboration de définitions sur lesquelles tout le
monde s’accorde.
1. Systèmes embarqués
Voici quelques définitions pour cerner le concept de système embarqué :
- Un système embarqué (SE) est un système informatisé spécialisé qui constitue une partie intégrante
d’un système plus large ou une machine. Typiquement, c’est un système sur un seul processeur et dont les
programmes sont stockés en ROM. A priori, tous les systèmes qui ont des interfaces digitales (i.e. montre,
caméra, voiture…) peuvent être considérés comme des SE. Certains SE ont un système d’exploitation et
d’autres non car toute leur logique peut être implantée en un seul programme.
- Un système embarqué est une combinaison de logiciel et matériel, avec des capacités fixes ou
programmables, qui est spécialement conçu pour un type d’application particulier. Les distributeurs
automatiques de boissons, les automobiles, les équipements médicaux, les caméras, les avions, les jouets, les
téléphones portables et les PDA sont des exemples de systèmes qui abritent des SE. Les SE programmables
sont dotés d’interfaces de programmation et leur programmation est une activité spécialisée.
- Un système embarqué est une composante primordiale d’un système (i.e. un avion, une voiture…) dont
l’objectif est de commander, contrôler et superviser ce système.
- Un système embarqué est un système enfoui (embedded system)
Par rapport aux autres systèmes informatisés, les systèmes embarqués sont caractérisés par :
- Encombrement mémoire (mémoire limitée, pas de disque en général)
Consommation d’énergie (batterie : point faible des SE)
Poids et volume
Autonomie
Mobilité
Communication (attention : la communication affecte la batterie)
Contraintes de temps réel
Contraintes de sécurité
Coût de produits en relation avec le secteur cible
Contraintes temporelles - Z. Mammeri
3
2. Systèmes temps réel
Selon l’aspect abordé dans les systèmes temps réel, on choisit une définition qui s’approche le plus de la
problématique traitée. Ainsi, on assimile, selon le cas, un système temps réel à un système rapide, à un
système en interaction directe avec un procédé physique, à un système réactif, à un système qui ne fournit
pas de réponse en différé, à un système avec un comportement prédictible, à un système qui travaille sur des
données fraîches, à un système robuste, etc.
Cependant, toutes les applications temps réel (dites aussi applications contraintes par le temps ou encore
applications temps contraint) ont en commun la prépondérance du facteur temps. Elles doivent réagir en
tenant compte de l’écoulement du temps (on parle de timeliness property, en anglais). Cette caractéristique
fondamentale qui distingue globalement les applications temps réel des autres types d’applications
informatiques (de gestion ou autres) est exprimée par la définition suivante qui est la plus couramment
référencée dans la littérature :
A real-time system is defined as a system whose correctness of the system depends not only on the logical
results of computations, but also on the time at which the results are produced [STA 88].
Cette définition a conduit, en quelque sorte, à l’adage suivant que toute personne intervenant dans le cycle
de vie d’une application temps réel connaît ou devrait connaître : Un résultat juste mais hors délai est un
résultat faux.
En plus de l’existence de contraintes de temps, et selon les domaines d’applications, les définitions
consacrées à la notion d’applications temps réel font apparaître des propriétés fondamentales, notamment la
prédictibilité des comportements et la tolérance aux fautes. En effet, dans les applications temps réel dites
temps critique (telles que la commande de procédés industriels ou d’engins militaires), le respect des
contraintes de temps est une nécessité en toute circonstance (y compris les situations de surcharge des
processeurs et du réseau), et on parle alors de propriété de prédictibilité du comportement (ou predictability,
en anglais) du système. Il faut noter que le degré de prédictibilité varie d’une application à l’autre. Certaines
applications exigent une prédictibilité absolue (100%), d’autres se contentent d’un seuil fixé en dessous
duquel on considère que la qualité de service rendu est remise en cause.
Des définitions, comme celle que l’on trouve dans le Petit Larousse introduisent la notion d’urgence de
traitement (“ … élaboration immédiate de résultats ”). De telles définitions sont trop restrictives. Il est admis
aujourd’hui que le temps réel, dans son contexte général, n’implique pas nécessairement la rapidité, mais
plutôt, une exécution à temps pour tenir compte de la dynamique du phénomène auquel est associée une
application temps réel. Une contrainte du type “ lancer la sirène de l’usine à midi ” est bien une contrainte
temporelle, mais elle n’implique pas nécessairement une réponse immédiate dès que cette contrainte est
connue, mais plutôt une réponse à un instant précis, c’est-à-dire, à midi. La rapidité de réponse d’un système
est un paramètre de performance qu’il faut distinguer du concept de temps réel. Il est évident qu’un système
qui réagit très vite aux événements qu’il détecte a de fortes chances de convenir aux applications temps réel.
Il est à noter aussi que des performances minimales (en termes de temps de réponse, de délais de
communication, etc.) sont souvent exigées d’un système pour que celui-ci puisse être utilisé afin de répondre
à des contraintes de temps spécifiques. Des performances minimales sont nécessaires pour le temps réel,
mais elles ne sont pas suffisantes, il faut savoir les adapter correctement aux contraintes de temps à satisfaire,
en particulier par l’utilisation d’algorithmes d’ordonnancement adéquats. Une pratique courante consiste à
surdimensionner les systèmes utilisés pour être sûr de respecter les contraintes de temps imposées.
Par ailleurs, toute application temps réel est en interaction (forte ou faible selon les cas) avec son
environnement. Lequel environnement peut être un procédé industriel, un moteur d’avion, une ville (si on
s’intéresse à la pollution, par exemple), un malade, un groupe de participants à une téléconférence, un enfant
devant sa console de jeu, etc. La nature de l’environnement à une incidence directe sur la criticité des actions
entreprises dans une application temps réel.
2.3. Notion de criticité et d’importance des opérations
Contraintes temporelles - Z. Mammeri
4
La notion de “criticité” (ou criticality en anglais) a été introduite comme critère pour pouvoir classer les
applications temps réel selon la sévérité, en terme de coût engendré par le non-respect des contraintes
temporelles. On parle de faute temporelle, quand les contraintes de temps ne sont pas respectées.
On distingue généralement les fautes bénignes n’affectant pas de manière significative le service rendu
par le système et les fautes catastrophiques conduisant à des pertes de vies humaines, des pertes financières,
de la pollution de l’environnement, etc. [LAP 92]. En utilisant la notion criticité, on a coutume de classer les
systèmes temps réel en trois familles :
− Systèmes à contraintes temporelles critiques (hard real-time systems) où le non-respect des
contraintes de temps peut conduire à des défaillances avec des conséquences pouvant être graves. Si
l’échéance est dépassée, il y a faute. Si l’échéance est dépassée, il y a faute.
− Systèmes à contraintes temporelles souples (soft real-time systems) où le dépassement des échéances
est considéré comme une faute bénigne. Lorsqu’une échéance est dépassée, il n’y a pas faute ; le résultat peut
être exploitable même s’il est fourni après l’échéance.
− Systèmes à contraintes temporelles strictes (firm real-time systems) où le dépassement occasionnel
des échéances est toléré. Il y a faute (bénigne) si l’échéance n’est pas respectée.
EXEMPLES.
1. Les systèmes d’interception de missiles ou de contrôle d’atterrissage d’avions sont considérés comme
étant des systèmes à contraintes temporelles critiques. En effet, dans un système d’interception de missiles, si
un missile n’est pas intercepté à temps, cela peut conduire à des conséquences graves. Si une opération
d’atterrissage d’un avion commencée n’est pas achevée au bout d’un délai borné, un accident grave peut
survenir.
2. Les systèmes de téléconférences et les systèmes de réservation des compagnies aériennes sont considérés
comme étant des systèmes à contraintes temporelles souples. Dans un système de téléconférence, son et
image doivent être synchronisés, mais des dérives de synchronisation (dues à des messages tardifs) sont
souvent tolérées. Pour les systèmes de réservation des compagnies aériennes, si une requête de réservation
dure un peu plus longtemps que prévu, la seule conséquence regrettable peut être la perte d’un client qui
quitte l’agence, car il ne souhaite plus attendre davantage.
3. Certains systèmes de supervision d’installations industrielles sont considérés comme des systèmes à
contraintes strictes. Par exemple, des pièces fabriquées sur une chaîne de production sont déposées sur un
convoyeur et passent devant une caméra qui doit détecter certaines anomalies de fabrication. En fonction des
anomalies détectées par le système de reconnaissance, les pièces sont dirigées vers la cellule de fabrication
appropriée. La détection des anomalies doit se faire pendant que la pièce est en mouvement. Si la détection
d’anomalie ne s’est pas faite dans les temps, la pièce est recyclée sur le convoyeur pour une deuxième
analyse. On accepte que le système recycle une pièce sur dix car s’il recycle trop de pièces la chaîne de
production s’en trouve ralentie.
Les contraintes temporelles critiques doivent être respectées en toute circonstance. Pour les contraintes
temporelles souples, on peut, selon les domaines d’applications et surtout selon les choix du concepteur :
− Soit décider que toutes les opérations à contraintes temporelles souples ont la même importance et en
cas de surcharge du système, les opérations à sacrifier (c’est-à-dire, celles qui vont rater leurs échéances)
sont sélectionnées en fonction de l’ordre d’arrivée des requêtes associées à ces opérations.
− Soit décider d’affecter des niveaux d’importance qui seront utilisés pour choisir les opérations à
sacrifier. Avec cette deuxième approche, le système essaiera de minimiser les opérations tardives, mais aussi
de garantir le respect des opérations les plus importantes d’abord. Dans la pratique, le concepteur évite
souvent (par manque d’informations suffisantes, ou peut-être, parce qu’il considère que tout est important
pour lui) d’affecter des niveaux d’importance aux opérations à effectuer, ce qui rend cette approche peu
utilisée.
2.4. Schéma général de système temps réel
Contraintes temporelles - Z. Mammeri
5
Figure 1. Système de contrôle-commande
BVR : boîte vitesse robotisée
Figure 2. Exemple de système de contrôle commande
Contraintes temporelles - Z. Mammeri
6
Figure 3. Composants d’un système de contrôle-commande
Capteurs
Actionneurs
Environnement
Système de contrôle
Figure 4. Système temps embarqués et non embarqués
Contraintes temporelles - Z. Mammeri
7
2.5. Vues de systèmes temps réel et embarqué
a) Vues métier
- Chimiste
- Médecin
- Pilote
-…
Î
Î
Î
Formes, durées … des réactions chimiques
Types de maladie, paramètres biologiques…
Décollage, atterrissage, manette, altitude…
b) Vues de l’automaticien
Figure 5. Vue de l’automaticien
Contraintes temporelles - Z. Mammeri
8
c) Vues de l’informaticien
Figure 6. Vue de l’informaticien
Figure 7. Processus de modélisation
Contraintes temporelles - Z. Mammeri
9
Figure 8. Analyse des besoins
Figure 9. Identification de fautes et modes de marche
Contraintes temporelles - Z. Mammeri
10
2.6. Objets de base des applications temps réel et embarquées
Toute application temps réel est composée d’un ensemble d’actions qui opèrent sur des données en tenant
compte de l’écoulement du temps et des événements qui apparaissent au niveau du système informatique ou
de son environnement. Les trois concepts (actions, données et événements) sont les composants de base de
toutes les applications temps réel. Les contraintes temporelles sont exprimées sur ces trois types d’objets.
Nous définissons d’abord ces trois types d’objets et nous verrons ensuite les contraintes temporelles que l’on
peut leur associer.
Une action peut correspondre à tout traitement ayant une fonctionnalité bien précise au niveau de
l’application, cela peut être une tâche dans les systèmes temps réel, une transaction dans les bases de données
temps réel, une opération de transmission sur un réseau, un agent dans les systèmes à base de connaissances,
etc. Au cours de la phase de conception, des actions sont introduites, par raffinement d’autres actions. On
peut alors distinguer des actions simples et des actions composées qu’il faut raffiner lors d’une étape
ultérieure.
Une donnée représente toute information simple ou composée utilisée par une ou plusieurs actions pour
s’exécuter. Une mesure de température, un fichier contenant une image ou un paquet véhiculé par un réseau
sont des exemples de données.
Un événement désigne un changement d’état dans le système informatique ou dans son environnement.
“ température > 100° C ”, “ Fin de la tâche T1 ”, “ réception d’une image vidéo ”, “ Fin de transaction ” sont
des exemples d’événements. Les occurrences d’événements peuvent apparaître de manière périodique, à des
instants connus à l’avance ou de manière aléatoire. En général, l’occurrence d’un événement désigne le
passage de vrai à faux (ou de faux à vrai) d’une condition dite condition événementielle. L’action effectuée
pour traiter une occurrence d’événement est dite action événementielle.
Contraintes temporelles - Z. Mammeri
11
3. Origines des contraintes temporelles
Pour comprendre les origines des contraintes temporelles imposées à une application temps réel, il faut
remonter à l’environnement dans lequel ladite application est destinée à fonctionner. Pour aider à mieux
comprendre les origines des contraintes temporelles, nous commençons tout d’abord par fixer les idées à
l’aide de quelques exemples :
EXEMPLE. ⎯
1. Pour offrir une bonne qualité vidéo dans une application multimédia, 25 images par seconde sont
nécessaires.
2. Des pièces fabriquées sur une chaîne de production sont déposées sur un convoyeur et passent, avec
une vitesse de 1 m/s, devant une caméra qui doit détecter certaines anomalies de fabrication. En fonction des
anomalies détectées par le système de reconnaissance, les pièces sont dirigées vers une cellule de fabrication
appropriée. La détection des anomalies doit se faire pendant que la pièce est en mouvement. Par conséquent,
le traitement doit s’effectuer au bout d’un temps bien précis tenant compte de la vitesse du convoyeur, pour
permettre à la pièce d’être aiguillée vers la bonne cellule.
3. Un système de contrôle de trafic aérien prend des décisions concernant des avions qui veulent atterrir
en tenant compte de nombreux facteurs, tels que le nombre de pistes, la position des avions et leur réserve en
carburant, la vitesse du vent, les correspondances des passagers, etc. Le temps d’attente d’un avion avant
atterrir tient compte de tous ces facteurs.
4. Le temps d’accès à une base de données pour effectuer une réservation de place sur un vol ne doit pas
excéder deux minutes, pour éviter de longues attentes aux clients.
5. L’application doit être supportée par un réseau de type bus à jeton à 10 Mb/s déjà installé par
l’entreprise.
6. Pendant une répétition musicale distribuée, la musique jouée par un musicien à l’aide d’un instrument
connecté à une station de travail doit être acheminée vers tous les autres membres de l’orchestre au bout de
quelques millisecondes, pour que l’ensemble de l’orchestre soit synchronisé.
Les premiers travaux à avoir tenté de clarifier le concept de contraintes temporelles sont ceux de
Dasarathy [DAS 85] et Taylor [TAY 80] qui ont proposé une classification des contraintes de temps en deux
catégories : des contraintes comportementales qui imposent des limites sur les inter-arrivées de stimuli au
système, des contraintes de performance qui imposent des limites sur les temps de réponse du système,
Cette classification a été améliorée par Ramamritham [RAM 96] pour distinguer :
− des contraintes temporelles liées à l’environnement (c’est-à-dire, ayant des origines externes), c’est le
cas des exemples 1, 2, 3, 4 et 6 ci-dessus,
− et des contraintes temporelles liées à des choix de conception et d’implantation (c’est-à-dire, ayant des
origines internes), c’est le cas de l’exemple 5 ci-dessus.
3.1. Origines externes
Dans ce cas, les contraintes temporelles sont inhérentes à la dynamique de l’environnement et elles
peuvent correspondre, en général, à :
− Des caractéristiques physiques (telles que la vitesse d’un avion) ;
− Des caractéristiques liées aux lois de commande du système physique (telles que les boucles de
régulation) ;
− Une qualité de service requise en terme de délai de réponse tolérable (par exemple, un temps maximum
pour autoriser un avion à se poser, une fois que le pilote a émis une demande d’atterrissage, ou encore une
fréquence d’échantillonnage du son, pour offrir une certaine qualité audio) ;
Contraintes temporelles - Z. Mammeri
12
− La perception sensorielle et le temps de réaction de l’homme (par exemple, tenir compte du temps entre
lequel un système de contrôle signale une alarme indiquant que le niveau bas de carburant est atteint et
l’instant de réaction du pilote à cette alarme pour se poser en urgence) ;
− Des contraintes à caractère commercial ou autres (par exemple, les produits commandés doivent être
livrés x jours au plus tard après la réception de la commande).
Les contraintes temporelles ayant leur origine dans l’environnement de l’application temps réel sont
imposées et l’application doit y faire face. La compréhension des origines des contraintes temporelles est
importante. En effet, ce sont ces origines qui nous renseignent sur les contraintes temporelles qu’il faut
impérativement respecter et celles que l’on peut rater de temps à autre.
3.2. Origines internes
Une fois que les contraintes inhérentes à l’environnement sont explicitées, le développement d’une
application temps réel conduit à faire des choix de :
− Conception, c’est-à-dire :
- d’architecture centralisée ou répartie (répartition des données, du contrôle),
- d’actions périodiques (avec les périodes adéquates) ou apériodiques ,
- d’actions critiques ou actions non critiques,
− Une architecture matérielle et logicielle pour supporter l’application, en particulier choix de :
- processeurs avec des vitesses particulières,
- système d’exploitation (intégrant des algorithmes d’ordonnancement),
- réseau offrant des débits et des temps de réponse donnés avec un coût qui tient compte de la nature
de l’application.
Les choix précédents conduisent à introduire des contraintes temporelles en termes de périodes,
d’échéances (ou deadlines), de durées de vie des données, de délais de communication, de temps d’exécution
pour chaque action, de temps de réaction à un événement, etc. Il est clair que les décisions prises à une étape
du cycle de développement ont une incidence directe sur les contraintes imposées à l’étape suivante. Par
exemple, si on décide de placer deux tâches sur deux machines différentes, il va falloir préciser les
contraintes temporelles imposées aux messages à partir de celles imposées aux tâches communicantes. On
parle dans ce cas de dérivation de contraintes d’un niveau à partir de celles du niveau supérieur.
Contraintes temporelles - Z. Mammeri
13
4. Types d’expression des contraintes temporelles
Une contrainte temporelle sur une action, une donnée ou un événement peut s’exprimer en faisant
référence au temps quantifié (temps explicite) ou au temps non quantifié (temps logique).
4.1. Expressions à l’aide du temps quantifié
Le temps explicite fait référence aux instants (temps absolu) ou aux intervalles de temps (temps relatif).
Généralement le temps explicite est exprimé en utilisant l’une des formes suivantes :
− un instant (ou une date),
− une fenêtre temporelle (ou un intervalle de temps),
− une durée (ou un délai ou encore une période),
Un instant (ou une date) exprime un point particulier sur l’axe du temps. Ce point peut être une constante
(par exemple "midi") ou l’instant d’occurrence d’un événement (par exemple, "début d’une transaction sur
une base de données").
Une fenêtre temporelle (un intervalle, un délai ou une période) exprime un segment sur la droite du
temps. Une fenêtre temporelle (ou un intervalle de temps) est définie à l’aide d’un couple d’instants qui en
définissent le début et la fin.
Avec la notion de durée (ou de délai), on introduit parfois la notion de minimum, de maximum ou de
moyenne, pour indiquer, non pas une valeur exacte à respecter, mais plutôt une borne inférieure ou
supérieure ou une moyenne à respecter. Ces notions sont, en général, associées à la durée d’exécution des
actions. La durée minimale est exigée pour obtenir des résultats dans le meilleur des cas, la durée maximum,
dans le pire des cas. La durée moyenne est utilisée pour tenir compte de la distribution de la charge du
système et permet, entre autres, de déterminer la probabilité de respect des contraintes de temps des
opérations non temps critique en fonction de la charge du système.
4.2. Expressions à l’aide du temps logique
Le temps logique est utilisé pour exprimer des relations entre intervalles de temps, non nécessairement
mesurés explicitement, durant lesquels s’exécutent des actions, ou entre des occurrences d’événements. Il
permet, par exemple, d’exprimer qu’un événement E1 apparaît avant ou après un autre événement E2. Il a
été introduit par Lamport [LAM 78].
Les opérateurs introduits par Allen constituent une extension de ceux introduits par Lamport et permettent
d’exprimer les relations usuelles entre intervalles de temps (Before, Meets, During, Starts with, etc.) [ALL
83]. Il faut signaler que nous ne traitons pas ici les opérateurs modaux indiquant des aspects temporels tels
que un jour, parfois, infiniment, souvent, toujours, etc., étudiés par les linguistes et en intelligence artificielle
pour raisonner sur le temps, et qui ne sont pas utilisés dans les applications temps réel actuelles.
Il est important de souligner que l’analyse des contraintes exprimées à l’aide du temps logique permet
d’élaborer et de vérifier des propriétés logiques qui apportent des informations très intéressantes sur les
systèmes temps réel, en particulier les propriétés de sûreté et de vivacité.
Contraintes temporelles - Z. Mammeri
14
5. Contraintes temporelles associées aux événements, données et actions
5.1. Contraintes temporelles associées aux événements
Une occurrence d’événement représente un changement d’état significatif qui déclenche une action
événementielle explicitement spécifiée. C’est au travers des événements qu’une application temps réel réagit
aux changements d’état de son environnement (on parle dans ce cas d’événements externes ou de stimuli et
réponses) et du système informatique (on parle dans ce cas d’événements internes).
Selon la nature des événements (qu’ils soient internes ou externes), et donc selon le sens des actions
événementielles qui leur sont associées, la prise en compte des occurrences successives peut être interprétée
de plusieurs manières : une seule occurrence à la fois, toutes les occurrences doivent être prises en compte,
etc. Cela a conduit à distinguer trois types d’événements :
− Evénements fugaces : il s’agit d’événements destinés à être traités immédiatement par les actions qui
sont en attente de ces événements. Si aucune action n’est en attente d’un événement fugace, l’occurrence de
celui-ci est perdue.
EXEMPLE. ⎯ Les systèmes de guidage de véhicules en milieu urbain renseignent, en temps réel, les usagers
sur la présence de chantiers, accidents et bouchons concernant toute une ville, un quartier ou un itinéraire.
Quand un accident est signalé par le PC de circulation, seuls les usagers ayant choisi des itinéraires passant
par le point d’accident sont avertis par leurs systèmes embarqués qui leur proposent alors de nouveaux
itinéraires. Dans ce cas, l’événement “ accident de circulation ” est considéré comme fugitif pour les usagers.
Cet événement est, par contre, nettement mémorisé par les personnes subissant l’accident.
− Evénements mémorisés : contrairement à un événement fugace, une occurrence d’événement
mémorisé est enregistrée jusqu’à ce qu’elle soit prise en compte. La question qui se pose ensuite est que se
passe-t-il si plusieurs occurrences sont détectées alors que la première de ces occurrences n’est pas encore
complètement traitée ? Selon la nature de l’événement, on peut :
- soit traiter une seule occurrence à la fois et toutes celles qui arrivent entre temps sont ignorées. On
parle, dans ce cas, d’événement de type booléen.
EXEMPLE. ⎯ On considère un émetteur qui diffuse des messages vers un ensemble de récepteurs. Si un des
récepteurs ne reçoit pas correctement un message, il renvoie un acquittement négatif. La réception d’un
acquittement négatif, par l’émetteur, constitue un événement (appelons-le “ erreur de communication ”).
Après diffusion d’un message, l’émetteur attend pendant un certain temps. Si un ou plusieurs acquittements
négatifs ont été reçus, l’émetteur rediffuse le message concerné à tous les récepteurs. Dans ce cas, on
considère que l’événement “ erreur de communication ” est de type booléen, puisque l’action de
retransmission (c’est-à-dire, l’action de prise en compte de l’événement) est déclenchée une seule fois pour
tous les acquittements négatifs correspondant à un même message.
- Soit traiter obligatoirement toutes les occurrences de l’événement. On parle, dans ce cas,
d’événement à compte.
EXEMPLE. ⎯ Un robot met des bouteilles dans des boîtes. L’arrivée d’une bouteille devant le robot est
signalée via un événement “ présence bouteille ”. Si une bouteille arrive alors que le bras du robot est en
train de mettre la bouteille précédente dans une boîte, cette dernière bouteille est prise en compte dès que le
bras du robot devient libre. Ainsi toutes les occurrences de l’événement sont prises en compte.
Le système informatique perçoit une occurrence d’événement comme un signal défini, du point de vue
temporel, par trois paramètres : un instant de signalisation de l’occurrence, un instant de prise en compte de
l’occurrence (c’est-à-dire, l’instant de lancement de l’action événementielle) et un instant d’acquittement
(c’est-à-dire, l’instant d’effacement de l’occurrence). Les contraintes temporelles, pour la prise en compte de
Contraintes temporelles - Z. Mammeri
15
l’événement, peuvent être exprimées sur la durée de vie des occurrences et/ou sur les instants et/ou l’ordre
d’occurrences d’événements.
5.1.1. Contraintes temporelles sur la durée de vie d’événement
Pour tenir compte de la dynamique de l’application, un événement détecté doit être traité au bout d’un
délai maximal connu à l’avance. Ce délai est appelé durée de vie de l’événement et désigne l’intervalle de
temps pendant lequel l’action événementielle doit être exécutée et terminée une fois l’occurrence de
l’événement détectée. Il s’agit ici d’une contrainte exprimée à l’aide du temps quantifié.
EXEMPLE. ⎯ Si on considère qu’un débordement a lieu 10 secondes après que le niveau haut du liquide
dans une cuve est atteint et qu’aucune opération de fermeture de vanne n’a été réalisée, alors l’événement de
détection du niveau haut a une durée de vie de 10 secondes.
Le concepteur peut aussi raisonner sur la durée de vie d’un événement en utilisant le temps logique. Une
occurrence d’événement cesse d’être valide dès qu’un autre événement est détecté.
EXEMPLE. ⎯ Une occurrence de l’événement “ vanne ouverte ” reste valide jusqu’à ce que l’événement
“ vanne fermée ” soit détecté.
5.1.2. Contraintes temporelles sur les instants et l’ordre d’occurrence d’événements
Ces contraintes indiquent à quel instant absolu ou relatif une occurrence d’événement va avoir lieu. Des
expressions usuelles de ce type de sont les suivantes :
− un événement doit avoir lieu à un instant précis.
EXEMPLE. ⎯ La sirène doit sonner trois fois à midi le premier mercredi de chaque mois.
− Un délai minimum, maximum ou moyen entre les occurrences d’un même événement ou de deux
événements différents. Ceci permet d’exprimer des relations entre un stimulus et une réponse, entre deux
stimuli, etc. Les contraintes sur les délais maximum et minimum entre occurrences d’événements décrivent
en quelque sorte le débit d’événements que peut supporter le système temps réel.
EXEMPLE. ⎯ Selon la norme ITU B112, pendant la composition d’un numéro téléphonique, lorsqu’un
chiffre est tapé, le suivant doit l’être après 66 ms au minimum et 10 à 20 secondes (selon le réseau) au
maximum.
− Un événement doit avoir lieu avant (ou après) un autre événement explicite, ou avant (ou après) un
autre événement parmi un ensemble d’événements.
− Un événement doit avoir lieu en même temps qu’un autre événement (la notion de simultanéité
d’événements signifie que les instants d’occurrence d’événements sont distants d’une quantité inférieure à
l’intervalle minimal de datation des événements dans l’application considérée). En particulier, si on se place
dans le contexte des systèmes répartis, la simultanéité d’événements résulte de l’incapacité à définir une
relation avant ou après entre événements apparaissant sur des sites différents, à cause de l’existence de vues
(pouvant être différentes d’un site à l’autre) engendrées par les délais de communication variables.
Il est à noter que les contraintes énumérées précédemment ne s’appliquent qu’aux événements mémorisés.
Les événements fugaces, de par leur nature, n’imposent pas de contraintes temporelles explicites sur leur
prise en compte.
Contraintes temporelles - Z. Mammeri
16
5.2. Contraintes temporelles associées aux données
Selon le niveau hiérarchique de l’application auquel on se place, une donnée peut être une mesure d’une
grandeur physique, une variable locale, un fichier, un paquet en cours d’acheminement dans un réseau, etc.
Une donnée est produite à un instant (dit instant de production) par une action, dite producteur, et est utilisée
à un autre instant (dit instant d’utilisation ou de consommation) par une autre action, dite utilisateur ou
consommateur. Pour prendre des décisions correctes tenant compte de l’état réel de l’environnement, les
données manipulées par une application temps réel doivent être cohérentes du point de vue temporel. Les
contraintes de cohérence de données temps réel peuvent s’exprimer de trois manières : par des contraintes
individuelles (ou de durée de validité), des contraintes de production ou des contraintes de groupe
(contraintes de corrélation).
− Durée de validité (ou contrainte de fraîcheur) : la durée de validité d’une donnée temps réel correspond
à l’intervalle de temps maximum séparant l’instant de consommation de l’instant de production de cette
donnée. Une donnée peut avoir, selon la nature de l’application, une durée de validité unique pour tous les
consommateurs, ou bien une durée de validité propre à chaque consommateur (ou à un groupe de
consommateurs).
EXEMPLE. ⎯ Dans un jeu vidéo, des disques sont lancés et le joueur doit les détruire en vol. Un disque n’est
présent à l’écran que pendant une seconde (durée de validité) et le joueur doit réagir vite pour marquer des
points.
− Contraintes de production : elles expriment des contraintes sur le rythme de production de valeurs
d’une donnée. En général, elles s’appliquent aux données produites périodiquement et spécifient les
intervalles de temps minimum ou maximum entre les instants de production de deux valeurs d’une même
donnée.
EXEMPLE. ⎯ Un système de surveillance de l’entrée principale d’un immeuble doit prendre et enregistrer
une image par seconde.
− Contraintes de corrélation : dans une application temps réel, une action peut utiliser plusieurs données,
mais pour fournir un résultat temporellement correct, les données utilisées doivent être produites dans un
même intervalle de temps donné. On parle, dans ce cas de contraintes de corrélation.
EXEMPLE. ⎯ L’animation d’une réunion à l’aide d’un système de téléconférence nécessite que l’application
multimédia sous-jacente utilise des sons et des images échantillonnés en même temps, pour que le geste et la
voix soient coordonnés.
5.3. Contraintes temporelles associées aux actions
Dans une application temps réel, les actions (c’est-à-dire, les tâches, les processus, les agents, etc. selon
le domaine d’application) opèrent sur des données temporelles en tenant compte de l’écoulement du temps et
des occurrences d’événements. Généralement, dans les applications temps réel, les actions sont activées
périodiquement, à des instants fixes ou sur occurrences d’événements. Pour tenir compte des contraintes de
validité des données et de durée de vie des événements, la durée d’exécution des actions est bornée. Par
ailleurs, la coopération entre différentes actions composant une application temps réel, conduit à imposer des
contraintes de précédence à ces actions. Ainsi, les principales contraintes temporelles que l’on peut associer à
une action peuvent avoir les formes suivantes.
5.3.1. Contraintes exprimées sur une seule action
Ces contraintes correspondent en général à :
− une période (pour des actions telles que la scrutation de capteurs),
− un instant pour démarrer la première instance d’une action périodique,
Contraintes temporelles - Z. Mammeri
17
− un instant (cet instant peut être un temps absolu ou une occurrence d’événement) au plus tôt pour le
démarrage d’une action,
− un instant au plus tard, pour démarrer une action,
− un instant au plus tard (ou échéance absolue), pour terminer une action,
− un temps maximum d’exécution (ou échéance relative)
− un temps maximal d’attente d’une ressource,
− un temps minimal et/ou maximal d’utilisation d’une ressource,
− un temps minimum d’exécution affecté à l’action pour que celle-ci puisse produire un résultat
approximatif mais correct (ce type de contraintes est employé dans les applications où des actions sont
conçues pour fournir des résultats avec une qualité qui dépend du temps d’exécution qui leur est imparti. De
telles actions sont appelées anytime algorithms).
EXEMPLE. ⎯ Pour éviter une attente trop longue aux utilisateurs du Web, les algorithmes de recherche et
d’affichage d’images fonctionnent selon le principe des anytime algorithms : l’utilisateur reçoit une première
image esquissant les grandes lignes d’une scène, il peut alors, dès la réception de la première version de
l’image, changer de requête, ou bien attendre jusqu’à obtenir une image avec une grande précision. Plus
l’utilisateur attend, plus l’image se précise.
5.3.2. Contraintes de relations entre actions (contraintes de synchronisation)
Il s’agit d’exprimer des contraintes sur les intervalles de temps durant lesquels les actions sont exécutées.
Souvent ce type de contraintes est réduit à des contraintes de précédence. En utilisant les opérateurs d’Allen,
on peut exprimer toute une variété de contraintes (Ik désigne l’intervalle de temps d’exécution d’une action
Ak) :
− I1 Before I2 : l’action A1 doit s’exécuter avant l’action A2 ;
− I1 Meets I2 : l’une des deux actions A1 ou A2 doit commencer immédiatement quand l’autre se termine ;
− I1 During I2 : l’action A1 commence son exécution après le début de l’action A2 et se termine avant la
fin de l’action A2 ;
− I1 Starts with I2 : l’action A1 doit commencer en même temps que l’action A2 ;
− I1 Finishs with I2 : l’action A1 doit se terminer en même temps que A2 ;
− I1 Overlaps I2 : les deux actions A1 et A2 ne commencent pas et ne se terminent pas en même temps,
l’action qui commence la première se termine la première et les deux intervalles I1 et I2 ont une intersection
non nulle ;
− I1 Equal I2 : les actions A1 et A2 doivent commencer et se terminer en même temps.
Contraintes temporelles - Z. Mammeri
18
6. Dérivation des contraintes temporelles
6.1. Objectif, principe et formes de dérivation de contraintes temporelles
En étudiant de près les différentes formes d’expression de contraintes temporelles sur les trois types
d’objets de base (actions, données et événements), on remarque beaucoup de similitudes d’expression. Etant
donné les liens étroits entre les trois types d’objets de base, nombreux sont ceux qui se posent la question
suivante : peut-on déduire (manuellement ou automatiquement) les contraintes temporelles associées à un
d’objet à partir de celles déjà imposées à un autre objet ? Cette question n’est pas une simple curiosité, car le
jour où on saura y répondre par l’affirmative, on pourra systématiser le passage d’une phase à l’autre dans le
cycle de développement d’une application temps réel et vérifier plus facilement les aspects temporels des
entités qui apparaissent au niveau de chaque phase.
Le premier niveau de dérivation est celui qui consiste à traduire les caractéristiques physiques et les
contraintes liées à la dynamique de l’environnement en termes de contraintes temporelles sur des objets
informatiques. Par exemple, à partir d’une grandeur physique, telle que la vitesse d’un moteur, on peut
déduire des périodes d’échantillonnage, des périodes des boucles de régulation, etc. Dans le cas général qui
nous intéresse ici, ce passage ne peut être systématique (c’est-à-dire, avec des règles explicites, applicables et
efficaces pour tous les domaines), car il induit beaucoup de choix de dérivation qui dépendent de multiples
facteurs tels que la méthode de conception retenue, les hypothèses initiales sur l’architecture support
(nombre de machines, systèmes d’exploitation, algorithmes d’ordonnancement, protocoles de
communication, etc.), les coûts envisagés pour l’application et l’architecture de l’application (répartition ou
non, mécanismes de redondance et de tolérance aux fautes, etc.). Même pour les exemples simples, tels que
des actions périodiques, la dérivation de contraintes temporelles pour les niveaux inférieurs est complexe.
Par exemple, une contrainte du type “ produire 100 voitures par jour ” conduit à dériver quasiment toutes les
contraintes temporelles que l’on retrouve dans une usine de fabrication de voitures. Il est donc difficile, voire
impossible, d’automatiser complètement la notion de dérivation de contraintes temporelles.
Il existe aujourd’hui beaucoup de méthodologies, de méthodes, d’outils et de langages, pour la conception
et la description d’applications temps réel. Mais, il n’existe pas de travaux proposant une démarche
systématique permettant de déduire les contraintes temporelles des objets informatiques à partir des
caractéristiques de l’environnement considéré. Quelques rares embryons de méthodes ont été proposés
seulement. Une des études les plus conséquentes est celle de Gerber et al [GER 95] qui ont proposé une
méthode de dérivation des contraintes (périodes et échéances) de tâches, à partir de contraintes sur les
données (durée de validité et contrainte de corrélation), avec comme hypothèses : architecture
monoprocesseur, des tâches périodiques, des périodes harmoniques, les tâches ayant des contraintes de
précédence doivent s’exécuter avec la même période. Une autre étude est celle proposée par Törngren [TÖR
98] pour dériver les contraintes temporelles dans les systèmes de contrôle/commande. Törngren montre, en
particulier, la dérivation des périodes d’échantillonnage à partir des périodes de boucles de régulation. Il
étudie aussi les conséquences des variations dues aux systèmes informatiques (variation des délais de
communication et des délais d’ordonnancement, dérive des horloges, etc.) sur la dérivation de contraintes
temporelles des actions composant une application temps réel et distribuée.
Avec trois types d’objets, plusieurs formes de dérivation sont possibles :
− dériver des contraintes temporelles d’une instance d’un type d’objet à partir de celles d’une instance
d’un objet d’un autre type (soit six formes de déduction)
− dériver les contraintes d’une instance d’un type d’objet à partir d’une autre instance du même type
d’objet (soit trois formes de déduction).
On construit souvent une application temps réel par raffinements successifs. En raffinant une action
composée (par exemple, une production de n pièces ou une transaction sur une base de données distribuée),
on introduit de nouvelles actions plus élémentaires (qui deviennent des tâches, au sens des exécutifs temps
réel, à la fin de la décomposition), de nouvelles données et éventuellement de nouveaux événements. Ainsi,
on est souvent amené à déduire les contraintes d’un objet appartenant à un niveau donné à partir des
Contraintes temporelles - Z. Mammeri
19
contraintes et caractéristiques du niveau supérieur. Par conséquent, le nombre de formes de dérivations
possibles devient vite très élevé. Souvent, le processus de dérivation des contraintes temporelles des objets a
pour objectif d’aboutir, à la fin de la décomposition de l’application et des différentes dérivations de
contraintes, à des tâches temps réel et éventuellement à des messages échangés entre ces tâches dont il faut
garantir les contraintes temporelles finales en utilisant les algorithmes d’ordonnancement adéquats. Cet
objectif conduit à se focaliser sur certaines formes de dérivation et pas sur d’autres. Ainsi, les formes de
dérivations les plus répandues dans le domaine des applications temps réel sont : (1) la dérivation des
contraintes d’actions à partir de celles de données, d’événements ou d’autres actions, et (2) la
dérivation des contraintes temporelles d’actions, de données et d’événements, obtenus après
décomposition d’une action composée en actions plus élémentaires. Nous allons développer ces deux
formes de dérivation de contraintes. Il est cependant important de noter que les autres formes de dérivation
sont moins répandues, mais elles peuvent être utiles dans certains cas, par exemple dans une base de données
temporelles, la durée de validité d’une donnée, quand elle n’est pas spécifiée, peut être déduite à partir des
contraintes d’actions ou d’événements associés à la manipulation de cette donnée.
6.2. Dérivation de contraintes temporelles entre objets de même niveau
Comme on a trois types d’objets, il existe neuf formes de dérivation de contraintes temporelles entre
objets de même type ou de types différents. Nous nous limitons ici à la dérivation de contraintes temporelles
d’actions à partir de celles de données, d’événements ou d’autres actions.
6.2.1. Dérivation de contraintes temporelles d’actions à partir des données
Les actions constituant une application temps réel manipulent des données contraintes par le temps, par
conséquent les contraintes des données se répercutent directement sur les actions :
− Quand on se place dans le contexte d’actions qui ne peuvent commencer leur exécution que si toutes
leurs données en entrée sont disponibles, l’instant de production d’une donnée détermine la date au plus tôt
pour démarrer l’exécution des actions qui utilisent cette donnée.
− La durée de vie d’une donnée permet de déduire la date au plus tard d’exécution de chaque action
utilisant cette donnée.
− Une contrainte de corrélation entre données imposent à n (n>1) actions (des producteurs) de produire
leurs données dans une fenêtre temporelle de durée fixée V. On peut déduire les contraintes temporelles sur
les actions de plusieurs manières, en particulier selon les deux manières suivantes :
- Si on note t(↓(Ai)) (i=1, n) l’instant de fin d’exécution de l’action Ai, concernée par la contrainte de
corrélation, alors la contrainte suivante doit être respectée :
∀i(1≤i≤n), ∀j(1≤j≤n), i≠j ⇒⏐t(↓(Aj)) - t(↓(Ai ))⏐≤ V.
- Si la liste des données concernées par la contrainte de corrélation est utilisée de manière périodique,
alors peut décider que les n actions correspondantes soient périodiques et fixer ensuite V comme période
pour toutes les n actions. Cela conduit évidemment à un surdimensionnement du système dans certains cas.
− Une contrainte sur la production d’une donnée se traduit, soit en termes de date au plus tôt, soit en
termes de contrainte de période, pour l’action de production (voir exemple suivant).
EXEMPLE. ⎯ On considère la validité temporelle d’une variable X (par exemple, la température d’un four).
La variable X est valide (c’est-à-dire qu’elle reflète bien la température du four) si elle est échantillonnée
selon une fréquence adéquate par une action A. Il faut donc associer la bonne période, P, à l’action A qui
permet de mettre à jour la variable X. On suppose que la valeur produite par l’action A durant une exécution
n’est observable qu’à la fin de cette exécution.
Contraintes temporelles - Z. Mammeri
20
Une première possibilité de conception de l’action A est dictée par l’existence d’un exécutif intégrant
l’algorithme d’ordonnancement Rate Monotonic. On peut alors définir une action A avec une durée
d’exécution égale à e unités de temps et une période égale à P unités de temps. Comme l’action A est
ordonnancée par Rate Monotonic, la date au plus tôt pour commencer la kème exécution de A est égale à t0 +
p*(k-1) et la date au plus tard pour terminer cette exécution est t0 + p*k. t0 étant l’instant de début de la
première exécution de l’action A. Dans ce cas, la durée maximale entre deux fins d’exécution successives de
l’action A est égale à 2*P – e unités de temps (voir figure 10a). Ainsi, deux valeurs de la variable X sont
produites à 2*P - e unités de temps d’intervalle dans le pire des cas. Cela veut dire que si on veut avoir une
durée de validité de D unités de temps, il faut choisir (D + e)/2 comme valeur pour la période P.
Une deuxième solution pour l ’action A est dictée par l’existence d’un exécutif qui permet de garantir à
une action périodique d’être activée toujours au même instant par rapport au début de sa période et sans
interruption. Dans ce cas, la période P de l’action A doit être égale à D.
2*P - e
(a)
temps
e
P
P
P
P
P
P
P
(b)
temps
P
Instant de début
d’exécution
P
P
Instant de fin d’exécution = instant de
disponibilité d’une nouvelle valeur
Figure 10. Exemple d’ordonnancement d’une action périodique
6.2.2. Dérivation de contraintes temporelles d’actions à partir d’événements
Dans les systèmes temps réel, en particulier ceux conçus selon l’approche event-diven, les actions sont
exécutées en tenant compte des occurrences d’événements. Par conséquent, les contraintes imposées sur les
occurrences d’événements se répercutent directement sur les actions. La dérivation des contraintes des
actions à partir de celles des événements dépend du type d’événements considérés (c’est-à-dire, événements
booléens ou à compte). On note :
E : un événement.
AE : ensemble des actions événementielles associées à E.
A : une action appartenant à l’ensemble AE.
P(A) : période de l’action A.
D(A) : échéance relative de l’action A.
t(↑(A, j) : date au plus tôt pour lancer la jième exécution de l’action A.
t(↓ (A, j) : date de fin d’exécution de la jième exécution de l’action A.
t(E, k) : instant de la kième occurrence de l’événement E.
δ(E) : durée de vie de l’événement E.
Imin(E) : intervalle minimum entre occurrences de l’événement E.
Contraintes temporelles - Z. Mammeri
21
a) Dérivation de contraintes temporelles dans le cas d’événements à compte
Dans ce cas, à chaque occurrence d’un événement E correspond une exécution d’une ou plusieurs actions
événementielles. On peut déduire les contraintes temporelles des actions de la manière suivante :
− Si une action A permet la prise en compte d’un événement E, sa date au plus tôt et sa date au plus tard
sont dérivées à partir de l’instant d’occurrence de l’événement et de la durée de vie de l’événement E.
∀k≥1, ∀A∈AE ⇒ t(E, k) ≤ t(↑(A, k) ∧ D(A) = δ(E).
− Pour les applications à contraintes de temps critiques, la contrainte sur l’intervalle de temps
minimum entre occurrences d’un même événement E permet de dériver la période des actions
événementielles correspondantes.
∀A∈ AE ⇒ P(A) = Imin(E).
− Pour les applications à contraintes de temps non critiques, les intervalles de temps maximum et minimum
entre occurrences d’un même événement permettent de dériver une période moyenne qui permet, à la fois, de
prendre en compte un maximum d’occurrences d’événements et de ne pas trop surdimensionner le système.
− Si un événement E1 correspond à un stimulus et un autre événement E2 correspond à une réponse à ce
même stimulus, la contrainte temporelle sur l’intervalle de temps séparant l’occurrence de E1 de celle de E2,
permet de dériver l’échéance relative de l’action associée à l’événement E1.
b) Dérivation de contraintes temporelles dans le cas d’événements booléens
Dans ce cas, certaines occurrences d’événements peuvent être ignorées. On peut déduire les contraintes
temporelles des actions de la manière suivante :
− Si une action A permet la prise en compte d’un événement booléen E, sa date au plus tôt et sa date au
plus tard sont dérivées à partir de l’instant d’occurrence de l’événement et de la durée de vie de l’événement
E:
∀A∈AE, ⇒ t(E, 1) ≤ t(↑(A, 1) ∧ D(A) = δ(E) ∧
∀i>1, ∃ k, k>i, t(↓(A, i) ≤ t(E, k) ≤ t(↑(A, i+1).
− Le choix d’un événement de type booléen signifie que le concepteur ne s’intéresse pas aux intervalles
de temps minimum ou maximum séparant les occurrences de cet événement, mais seulement à la prise en
compte d’une seule occurrence en cas d’avalanche de l’événement. Les contraintes sur l’intervalle de temps
minimum ou maximum entre occurrences d’un événement booléen sont donc sans importance pour ce type
d’événements.
− Comme dans le cas d’événements à compte, la contrainte sur l’intervalle de temps séparant deux
occurrences (des occurrences prises en compte) de deux événements E1 et E2 (un stimulus et une réponse)
permet de dériver l’échéance relative de l’action associée à l’événement E1.
EXEMPLE. ⎯ On se place dans le cadre de la composition d’un numéro de téléphone, avec un
fonctionnement simple. On suppose que deux chiffres consécutifs doivent être espacés de 66 ms au moins et
de 10 secondes au plus, que l’abonné tape son premier chiffre 10 secondes au plus après avoir décroché et
qu’un numéro de téléphone est composé de dix chiffres. Si ces conditions ne sont pas respectées, un signal
sonore d’anomalie est renvoyé à l’abonné. Nous notons :
Cpt_Chiffres : nombre de chiffres correctement saisis.
Cpt_Attente : temps d’attente du prochain chiffre.
t(E) : instant d’occurrence de l’événement E.
E_Décrocher : événement qui permet de détecter que l’abonné a décroché.
E_Chiffre : événement qui permet de détecter qu’un chiffre a été tapé.
E_Anomalie : événement qui permet de signaler une anomalie.
E_Appel : événement qui permet d’indiquer la fin de numérotation.
Contraintes temporelles - Z. Mammeri
22
En optant pour une spécification événementielle, on peut fixer les contraintes initiales suivantes :
(1) Temps minimal entre occurrences successives de E_Chiffre = 66 ms.
(2) Temps maximal entre occurrences successives de E_Chiffre = 10 s.
(3) Temps maximal entre occurrences de E_Décrocher et E_Chiffre = 10 s.
On suppose que l’on a choisi une action A1 qui, à chaque exécution, permet de lire un chiffre tapé et
de vider le registre qui sert d’interface entre cette action et son environnement. Si plusieurs caractères
sont tapés pendant que l’action A1 s’exécute, le résultat de la lecture devient indéterministe (un seul des
caractères tapés est lu). Avec les contraintes précédentes, on peut dériver les contraintes suivantes :
(4) L’action A1 est périodique avec une période de 66 ms.
(5) Echéance relative de A1 = 66 ms.
(6) Date de la première exécution de A1 = t(E_Décrocher).
(7) Date de suspension de A1 = Minimum(t(E_Appel), t(E_Anomalie)).
Ainsi, à chaque exécution de A1, si le registre de saisie n’est pas vide, Cpt_Chiffres est incrémenté de
un et Cpt_Attente est remis à zéro, sinon Cpt_Attente est augmenté de 66 ms. Si Cpt_Chiffres = 10, alors
signaler l’événement E_Appel. Si Cpt_Attente = 20 s, alors signaler E_Anomalie.
6.2.3. Dérivation de contraintes temporelles d’actions à partir d’autres actions
Les actions composant une application temps réel coopèrent pour la réalisation d’une même objectif
global commun. C’est la raison pour laquelle il existe souvent des contraintes de précédence entre les
actions. D’autres types de contraintes exprimées à l’aide des opérateurs d’Allen peuvent aussi apparaître
entre actions d’une application temps réel. Connaissant la contrainte de relation entre deux actions et des
contraintes temporelles d’une des deux actions, on peut dériver des contraintes temporelles de l’autre action
ou des deux actions.
EXEMPLE. ⎯ On considère deux actions périodiques A1 et A2 pour lesquelles les contraintes suivantes ont
déjà été fixées :
(1) A1 précède A2.
(2) Période de A1 = 100 ms.
(3) Chaque exécution de A1 est suivie d’une exécution de A2.
(4) Durée maximum d’exécution d’une action A = Δmax(A).
En se plaçant dans le cas où les deux actions fonctionnent selon un mode synchronisé (qui garantit à toute
action périodique de commencer son exécution à un instant fixe par rapport au début de sa période), on peut
dériver les contraintes suivantes :
(6) ↑(A2,1) ≥ ↑(A1,1) + Δmax(A1)
(5) Période de A2 = 100 ms.
(7) ∀i (i>1), A∈{A1, A2}, ↑(A,i) - ↑(A,i-1) = 100 ms. (↑(A,i) : ième exécution de A).
6.3. Dérivation de contraintes temporelles par décomposition d’actions
La structure fonctionnelle détaillée et les contraintes temporelles d’une application temps réel ne
s’obtiennent pas en général en une seule phase. Les concepteurs d’applications temps réel sont habitués aux
techniques de raffinements successifs pour élaborer les objets de base composant une application. Ce
principe permet d’appréhender la complexité des applications aussi bien dans le domaine du temps réel que
dans d’autres domaines.
A un stade de la conception d’une application apparaissent des actions qui peuvent être élémentaires et
qui ne nécessitent plus de décomposition ou des actions composées (pouvant être des sous-systèmes
complexes) et qui nécessitent une décomposition pour obtenir des actions élémentaires. La décomposition
d’une action ayant ses propres contraintes temporelles conduit à l’introduction de nouveaux objets (des
actions, des données et des événements) ayant des contraintes temporelles dérivées de celles de l’action
Contraintes temporelles - Z. Mammeri
23
composée qui leur a donné lieu. Le nombre d’objets introduits par la décomposition d’une action composée
dépend des choix du concepteur. Par conséquent, une dérivation automatique des contraintes temporelles est
loin d’être évidente. A notre avis, le raisonnement pour l’obtention des contraintes temporelles des objets
d’un niveau à partir de celles des objets de niveau supérieur ne peut se faire qu’au cas par cas en prenant en
compte des facteurs directement liés au niveau auquel on se trouve. A titre d’exemple, nous montrons
comment on peut déduire les contraintes temporelles des actions de communication et l’échéance relative de
messages à partir d’une contrainte spécifiée dans une opération d’envoi d’une variable par un producteur
vers un consommateur.
EXEMPLE. ⎯ On se place dans le cadre du modèle producteur-consommateur avec un producteur et un
consommateur interconnectés via un réseau de communication avec trois couches seulement (couche
application, couche MAC et couche physique). Les entités producteur et consommateur utilisent les services
de leur couche application pour communiquer. Le producteur produit une variable Y dont la durée de validité
est Δt et appelle un service pour transmettre la donnée au consommateur.
Si on analyse le déroulement de la communication entre le producteur et le consommateur, on peut identifier
les événements et les actions suivants :
− Evénement E1 : instant de soumission d’un message M contenant une valeur de la variable Y, par le
producteur, à la couche application du producteur.
− Action A1 : Traitement du message M par la couche application du producteur et passage de ce message
à la couche MAC.
− Action A2 : Traitement et attente du message M au niveau de la couche MAC du producteur,
− Action A3 : Transmission et propagation du message M sur le médium.
− Action A4 : Réception et traitement du message M par la couche MAC du consommateur, puis passage
de ce message à la couche application.
− Action A5 : Traitement du message M par la couche application du consommateur, puis passage de ce
message au consommateur.
− Evénement E2 : instant d’arrivée du message M chez le consommateur.
La contrainte temporelle initiale peut s’exprimer sur la variable Y par “ durée de validité = Δt ”. Cette
contrainte permet de déduire de manière triviale la contrainte sur les événements E1 et E2 qui peut s’exprimer
par “ E2 au plus tard Δt après E1 ”, puis les contraintes sur les actions A1 à A5 de la manière suivante :
− tout d’abord il existe une relation de précédence entre toutes les actions. Si on note
↑(Ai)(respectivement ↓(Ai)) l’événement indiquant le début (resp. la fin) de l’action Ai, alors on a la
contrainte : " ↑(Ai+1) Après ↓(Ai)(i=1, ...,4) ".
− Si on note Δt_max(Ai) la durée maximale d’exécution de l’action i, on a alors la contrainte suivante :
" Δt ≥ ∑ i = 5 Δt _ max( Ai ) ". Pour pouvoir respecter cette contrainte, on doit déterminer la durée Δt_max(Ai) de
i =1
chaque action. Il faut noter qu’un tel calcul dépend de beaucoup de facteurs (systèmes d’exploitation,
vitesses des processeurs, protocoles au niveau application et MAC, etc.). On peut faire ce calcul de plusieurs
manières selon les caractéristiques du système considéré et selon les hypothèses que l’on se fixe. A titre
d’exemple, on peut raisonner de la manière suivante :
- On suppose que l’on connaît les machines cibles sur lesquelles sont placées les entités producteur et
consommateur (on connaît en particulier, les vitesses des processeurs, les systèmes d’exploitation et les
protocoles de communication). On peut alors, plus ou moins difficilement selon les cas, fixer les durées
maximales des actions A1 et A5. La durée maximale de l’action A4 peut être calculée facilement si on fait
l’hypothèse que le niveau MAC passe immédiatement toute trame reçue au niveau application.
Contraintes temporelles - Z. Mammeri
24
- On suppose que le réseau est connu. Pour un réseau avec un débit et une longueur fixés, on peut
connaître la durée maximale de l’action A3 (cette durée correspond du délai maximum de transmission et de
propagation du message contenant la variable Y).
- Après avoir calculé les durées maximales des actions A1, A3, A4 et A5, il reste à calculer la durée
maximale associée à l’action A2. Ainsi, on peut dériver l’échéance relative du message M au niveau MAC,
Dmac.
Dmac = Δt - (Δt_max(A1) + Δt_max(A4) + Δt_max(A5)).
On dérive ainsi la contrainte temporelle à imposer au réseau à partir de la durée de validité de la variable
Y et de certaines hypothèses sur les machines cibles.
Contraintes temporelles - Z. Mammeri
25
7. Techniques de spécification des systèmes temps réel
Dans les sections précédentes, nous avons présenté les contraintes temporelles en insistant sur leurs
origines et la manière de les déduire à partir des objets constituant une application temps réel. Une fois les
contraintes de temps élaborées, ces contraintes doivent être clairement spécifiées et respectées au moment de
l’exécution. Dans cette section, nous abordons les principales techniques de spécification des applications
temps réel. Il faut signaler qu’un aspect important à prendre en compte lors de la conception et la mise en
œuvre d’applications temps réel est la sûreté de fonctionnement, en particulier, la spécification du
comportement d’une application face aux fautes temporelles des tâches ou des messages.
Deux approches sont habituellement utilisées pour classer les techniques de spécification. La première se
base sur le degré de formalisme utilisé par les techniques, la seconde sur les possibilités offertes en termes de
capacité de description et de mécanismes opérationnels. Les techniques opérationnelles sont celles définies
en termes d’états et de transitions, elles sont proches de l’exécution. Les techniques descriptives sont
généralement fondées sur des notations mathématiques permettant de fournir des spécifications rigoureuses
qui peuvent être automatiquement traitées pour vérifier des propriétés telles que la sûreté (c’est-à-dire,
absence d’interblocage, d’erreur, etc.) et la vivacité (c’est-à-dire, terminaison des actions, occurrence des
événements attendus, etc.).
L’évaluation d’une technique prend en compte trois aspects : l’aspect structurel (qui concerne la
décomposition d’un système en sous-systèmes), l’aspect fonctionnel (qui concerne les activités de
transformation des données) et l’aspect comportemental (qui concerne les réactions du système aux stimuli
externes et aux événements internes, c’est-à-dire ce qui concerne les aspects temporels). Selon les
techniques, les contraintes de temps peuvent s’exprimer de manière explicite ou implicite.
7.1. Techniques descriptives
Ces techniques sont souvent fondées sur un formalisme mathématique et produisent des spécifications
précises, rigoureuses et donnent une vue abstraite du système. Le système est décrit par des propriétés,
forçant le spécifieur à exprimer ce que le système doit faire plutôt que de dire comment le système va le
faire. Les spécifications formelles peuvent être traitées automatiquement pour en vérifier la complétude et la
cohérence. Cette vérification fait appel à des prouveurs de théorèmes. Il faut noter que ces techniques sont
peu utilisées dans le domaine du temps réel, comparées aux techniques opérationnelles, à cause, à la fois, du
manque d’outils d’utilisation et des difficultés de spécifier formellement des systèmes complexes que sont
les systèmes temps réel. Plusieurs classifications des techniques descriptives ont été proposées, en voici une :
− Techniques descriptives fondées sur les méthodes algébriques : il s’agit de méthodes basées sur les
types abstraits. Avec ces techniques, un système est décrit avec différents niveaux d’abstraction allant du
plus simple au plus compliqué. Un système est vu comme un type abstrait et sa spécification consiste à
décrire sa syntaxe (décrivant les domaines des opérateurs du type) et sa sémantique (décrite par des
expressions mathématiques). La complétude d’une spécification peut être vérifiée si les propriétés attendues
sont vérifiées par les axiomes. Une des techniques descriptives qui commence à émerger, pour la
spécification de systèmes temps réel, est LOTOS et, plus exactement ses extensions telles que RT-LOTOS et
ET-LOTOS.
− Techniques descriptives fondées sur les logiques mathématiques : ces techniques permettent de décrire
le comportement d’un système à l’aide de règles qui spécifient comment le système peut évoluer. Pour
prendre en compte les aspects temporels, il est fait appel aux logiques temporelles. Plusieurs techniques se
plaçant dans cette catégorie ont été proposées depuis de nombreuses années : RTL (Real-Time Logic), CTL
(Computational Tree Logic), RTIL (Real-Time Interval Logic), TCTL (Timed CTL ), TPTL (Timed
Propositional Temporal Logic).
Contraintes temporelles - Z. Mammeri
26
7.2. Techniques opérationnelles
Les techniques opérationnelles se divisent en deux catégories : les techniques fondées sur les modèles à
transitions (machines d’états et réseaux de Pétri) et les techniques fondées sur des notations abstraites.
Les machines d’états finis (MEF) permettent de vérifier des propriétés telles que l’atteignabilité des états.
Il faut noter qu’avec les MEF, le nombre d’états croit avec la complexité du problème traité et la vérification
de propriétés devient complexe aussi. Pour être adaptées aux systèmes temps réel, les MEF doivent fournir
des possibilités d’expression des contraintes de temps (échéances, périodes, etc.). C’est la raison pour
laquelle beaucoup d’extensions de MEF ont été proposées. Par ailleurs, pour appréhender la complexité des
systèmes, une MEF peut être décomposée en plusieurs MEF communicantes. Des langages fondés sur les
MEF, comme PAISLey (Process-oriented Applicative and Interpretable Specification Language), SDL
(Specification and Description Language), Esterel et Statecharts, sont utilisés pour la spécification de
systèmes temps réel.
En ce qui concerne les techniques opérationnelles fondées sur les réseaux de Pétri (RdP), plusieurs
extensions des RdP de base ont été proposées pour prendre en compte des contraintes temporelles. Il s’agit
notamment :
− des RdP temporisés dans lesquels on introduit une durée minimale pendant laquelle une transition doit
rester autorisée pour être tirée et une durée maximale qui indique la durée pendant laquelle une transition
peut rester autorisée avant être tirée,
− des RdP stochastiques dans lesquels une variable aléatoire est associée à chaque transition pour
représenter le délai de tir de la transition,
− d’autres techniques fondées sur les RdP telles que les machines HMS (Hierarchical Multi-State
machines).
Les techniques opérationnelles fondées sur les modèles à transitions ont l’avantage de conduire à des
spécifications exécutables et sur lesquelles on peut prouver certaines propriétés. Des vérifications de
propriétés (telle que l’absence d’interblocage) sont possibles avec les RdP.
Les techniques basées sur des notations abstraites sont adaptées à l’analyse et la conception de systèmes,
par décomposition du système en sous-systèmes. Elles sont souvent destinées à fournir une représentation
visuelle du système pour réduire en quelque sorte l’effort du spécifieur. En général, elles ne modélisent pas
l’aspect comportemental des systèmes et par conséquent elles ne sont pas directement utilisables pour une
simulation ou une exécution du système. Par ailleurs, elles sont souvent informelles ou semi-formelles. Ces
techniques incluent des extensions des méthode SADT (telles que DARTS – Design Approach for Real-Time
Systems) – et SDRTS – Structured Design for Real-time Systems) ou HOOD (telles que HRT-HOOD – Hard
Real-Time HOOD) largement utilisées dans la spécification d’applications non temps réel.
7.3. Techniques mixtes
Un outil idéal pour la spécification de systèmes temps réel devrait avoir les propriétés suivantes :
− il doit être facile à comprendre et à manipuler (une interface graphique est souvent souhaitée pour
construire une spécification),
− il doit permettre la réutilisation de spécification déjà existantes,
− il doit permettre de vérifier formellement et de valider une spécification à tous les niveaux du cycle de
vie d’un système,
− la spécification obtenue doit permettre des validations à l’aide de simulation.
Ces propriétés sont parfois en contradiction les unes avec les autres et ne peuvent être respectées par une
approche qui est soit opérationnelle, soit descriptive. C’est la raison pour laquelle certains travaux proposent
Contraintes temporelles - Z. Mammeri
27
des techniques mixtes respectant le plus possible des quatre propriétés précédentes. Il faut noter cependant
que la politique d’extension des outils et méthodes tend à essayer d’intégrer tout dans toutes les techniques,
ce qui conduit inéluctablement à des techniques complexes et difficiles à appréhender et à mettre en œuvre.
Comme exemple de technique mixte, nous pouvons citer ESM/RTTL qui est une approche intégrant les
machines d’états (Extended State Machines) et la logique temporelle RTTL.
Il faut souligner qu’une technique de spécification n’est réellement utile pour un spécifieur que
lorsqu’elle est accompagnée d’outils permettant de décrire, vérifier, simuler des comportements, de générer
des implantations, etc. Au niveau commercial, peu d’outils existent pour appréhender les contraintes
temporelles. Depuis une date récente, la presse spécialisée présente de plus en plus de produits pour le temps
réel, allant des processeurs, jusqu’aux ateliers logiciels. Rares sont les études comparatives qui permettent
de situer les différentes propositions les unes par rapport aux autres. Le marché n’est qu’à ses débuts.
Bibliographie
[ALL 83] ALLEN J.F., “ Maintaining knowledge about temporal intervals ”, Comm. of ACM, vol. 26, n° 11, p. 832-843, 1983.
[DAS 85] DASARATHY B., “ Timing constraints of real-time systems: constructs for expressing them, methods for validating them ”,
IEEE T.S.E., 17:34-44, 1985.
[GER 95] GERBER R., HONG S., and SAKSENA M., “ Guaranteeing real-time requirements with resource-based calibration of periodic
processes ”, IEEE T.S.E., vol. 21, n° 7, p. 579-592, 1995.
[LAM 78] LAMPORT L., “ Time, clocks and ordering of events in distributed systems ”, Communication of ACM, vol. 21, n° 7, 1978,
p. 558-565.
[LAP 92] LAPRIE J.-C., Dependability: basic concepts and terminology, Springer Verlag Editions, 1992.
[RAM 96] RAMAMRITHAM, K. “ Where do time constraints come from and where do they
Management, vol. 7, n° 2, p. 4-10, 1996.
go ? ”, Journal of Database
[STA 88] STANKOVIC J.A., and RAMAMRITHANM K., “ Hard real-time systems: A tutorial ”, IEEE Computer Society Press, 1988.
[TAY 80] TAYLOR B., “ Introducing real-time constraints into requirements and high level design of operating systems ”, Proceed.
of Nat. Telecommunications Conference, Houston, TX, vol. 1, p. 18.5.1-18.5.5, 1980.
[TÖR 98] TÖRNGREN M., “ Fundamentals of implementing real-time control applications in distributed computer systems ”, Journal
of Real-Time Systems, 14, 219-250, 1998.
Contraintes temporelles - Z. Mammeri
28