Académique Documents
Professionnel Documents
Culture Documents
Septembre 2021
Cours de Système Expert et Temps réel, L2 Informatique
1
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
2
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
3
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
Interface utilisateur
Cœur du
Maintenance
(auto-test,
redondance,…)
Les supports physiques du dialogue homme-machine peuvent être très variés : il peut s‟agir
d‟un pupitre conventionnel, d‟un ensemble clavier-écran, de dispositifs mettant en œuvre des
technologies vocales avancées (analyse et synthèse de la parole), etc.
Les entités physiques sont des procédés industriels, des machines et autres dispositifs
physiques. Ces entités fournissent par l‟intermédiaire de capteurs des signaux électriques. En
sens inverse, des actionneurs commandés électriquement permettent d‟agir sur ces entités.
1.2.2. Système qui doit effectuer des traitements simultanés
Un système temps réel doit être capable d‟assurer simultanément :
l‟observation de grandeurs caractérisant l‟évolution de l‟activité des entités,
la prise en compte d‟événements survenant de façon aléatoire,
l‟évaluation, à partir des événements et des observations, des décisions à prendre,
la génération d‟actions en direction des entités pour assurer la cohérence de l‟ensemble de
l‟application.
Le nombre de traitements simultanés que doit assurer un système temps réel dépend du nombre
des entités de son environnement et de la diversité de leur activité, et donc, du nombre des
entrées et des sorties que le système doit gérer, de la richesse des fonctionnalités du système.
Le degré de simultanéité de ces traitements est fonction de la technique de réalisation du
système informatique. La simultanéité est complète lorsqu‟une unité centrale (CPU) est
attribuée à chaque traitement à effectuer (on parle de systèmes multiprocesseurs). Il y a
pseudo-simultanéité lorsqu‟ un processeur unique partage son activité pour satisfaire plusieurs
traitements (on parle de systèmes monoprocesseurs).
1.2.3. Les activités respectent des contraintes de temps
Nous avons déjà indiqué que dans les applications temps réel le facteur temps constitue une
contrainte essentielle à respecter, que c‟est même un facteur prépondérant pour évaluer la
qualité de service du système de commande.
4
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
5
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
Le temps réel est à contraintes strictes lorsque les conséquences d‟une seule faute temporelle
peuvent être catastrophiques.
le temps réel est à contraintes relatives lorsque des fautes temporelles engendrent des dégâts
dont le coût, rapporté à leur probabilité d‟occurrence, est estimé tolérable pour l‟exploitant de
l‟application.
A propos du temps chronométrique et du temps chronologique
On se préoccupe des applications dont la fonction est de piloter (ou de suivre) en temps réel un
environnement par un système informatique. Il est alors commode de scinder de telles
applications en deux parties : le système informatique et le procédé, c‟est-à-dire
l‟environnement auquel ce système informatique est connecté et dont il doit commander le
comportement.
Le fait qu‟un système informatique intègre une gestion du temps constitue une spécificité
fondamentale qui le distingue d‟un système informatique classique. En effet, la validité des
résultats produits par une application temps réel ne dépend pas seulement de la justesse des
calculs, mais aussi de leur instant de production : un résultat juste mais hors délai est un résultat
faux, et est considéré comme une faute temporelle.
Or, dans une application temps réel les deux partenaires que sont le procédé et le système sont
régis par des règles d‟évolution différentes. Le procédé est régi par une dynamique propre
pouvant être exprimée par des mesures précises de durée, c‟est-à-dire par un temps
chronométrique. Un système informatique organise la succession des instructions de la
machine, et génère ainsi un temps chronologique. La conduite d‟une application temps réel par
un système informatique réside dans le bon contrôle de la concordance de ces deux temps.
Comme le temps chronométrique est régi par le procédé et en constitue une donnée intangible,
c‟est au système informatique de mettre le cadencement de ses actions en phase avec l‟horloge
du procédé.
1.2.4. Système dont le comportement est à la fois prévisible et déterministe
Selon la méthode employée par le système informatique pour prendre en compte puis répondre
aux événements externes, on obtiendra des temps de réaction plus ou moins longs et surtout
plus ou moins prévisibles.
L‟un des aspects importants des systèmes temps réel est la prévisibilité du comportement du
système. Un système temps réel doit être conçu de telle façon que ses performances soient
définies dans le pire des cas, alors que dans les systèmes classiques on s‟intéresse au traitement
du cas « moyen ». La prévisibilité est ce qui permet de déterminer à l‟avance si un système va
respecter ses contraintes temporelles. La prévisibilité est d‟autant plus forte que l‟on connaît
avec précision les paramètres liés aux calculs des activités : le temps global de calcul de chaque
activité, leur périodicité, etc. Tous ces éléments conduisent à choisir la politique
d‟ordonnancement des activités de telle manière que le comportement du système soit
prévisible.
Le déterminisme est le but que l‟on cherche à atteindre afin de prédire le comportement
temporel d‟un système : il s‟agit d‟enlever toute incertitude sur le comportement des activités
individuelles et sur leurs comportements quand elles sont mises ensemble dans le contexte
d‟exécution du système. Dans le cas du temps réel à contraintes strictes, on cherche à savoir si
6
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
toutes les échéances de toutes les activités seront respectées. Dans le cas du temps réel à
contraintes relatives, on cherche à connaître, par exemple, le retard moyen des activités.
Les principaux facteurs qui entraînent des variations dans le comportement du système, et sont
donc source de non-déterminisme, sont les suivants :
charge de calcul : variation des durées d‟exécution des activités,
entrées/sorties : profil d‟arrivée, durées des communications, temps de réaction,
interruptions : temps de réaction du système,
fautes et exceptions matérielles ou logicielles.
Le déterminisme absolu est difficile à atteindre ; cependant, les systèmes auront un
comportement temporel plus déterministe s‟ils utilisent les services d‟un support d‟exécution
qui masque les fluctuations mentionnées ci-dessus. Par ailleurs, certaines méthodes
d‟ordonnancement des activités du système permettent une analyse a priori du comportement
de ce dernier.
En définitive, un système temps réel est un système déterministe dans le sens où il doit offrir
des temps de réponse garantis aux diverses sollicitations de son environnement ; et ce, quel que
soit le contexte ou l‟état du système au moment où surviennent ces sollicitations. Le
déterminisme est un des concepts clés des systèmes temps réel.
1.2.5. Système qui possède une grande sûreté de fonctionnement
La sûreté de fonctionnement du système est son aptitude à minimiser la probabilité d‟apparition
de défaillances, et à minimiser leurs effets quand, malgré tout, elles se produisent.
Les principales composantes de la sûreté de fonctionnement sont :
La sécurité : c‟est l‟aptitude à éviter des événements catastrophiques pour l‟application
considérée.
La fiabilité : c‟est la probabilité qu‟un système fonctionne correctement durant une période de
temps T.
La maintenabilité : c‟est la facilité que possède un système à supporter des changements pour
satisfaire les demandes des utilisateurs et pour corriger les défauts détectés.
Qui dit sécurité dit protection de l‟utilisateur et du matériel afin d‟éviter des incidents ou des
détériorations. Comme les conséquences d‟une défaillance peuvent être catastrophiques, le
système doit donc être en mesure d‟assurer en toutes circonstances la sécurité du dispositif qu‟il
commande.
Autrement dit, le dépassement d‟une valeur critique ou l‟occurrence d‟un événement accidentel
doit pouvoir être détecté à tout instant, et le traitement de cet incident doit interrompre les
opérations en cours.
Le système doit de plus garantir un service minimal ; et ceci, même en cas de panne du
matériel, d‟événements accidentels ou d‟erreurs humaines. La fonction sécurité doit donc être
prioritaire sur toutes les autres fonctions assurées par le système.
Autre aspect important des systèmes temps réel : la fiabilité. Il est en effet difficile de prédire le
comportement d‟un système dont les composants matériels et logiciels ne sont pas fiables. Pour
cette raison, les systèmes temps réel sont souvent conçus de façon à être tolérants aux fautes.
7
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
En résumé, dans l‟ensemble des systèmes informatiques, les systèmes temps réel présentent
des spécificités telles qu‟ils constituent un domaine à part entière.
Un système temps réel, c‟est donc tout à la fois :
un système informatique en interaction avec son environnement,
un système qui doit effectuer des traitements simultanés,
un système qui effectue ses activités en respectant des contraintes de temps,
un système dont le comportement est à la fois prévisible et déterministe,
un système qui possède une grande sûreté de fonctionnement.
1.3. Architecture matérielle d’une application temps réel
Nous appelons architecture matérielle, l‟ensemble des composants physiques qu‟il est
nécessaire d‟ajouter à un processus pour réaliser l‟application temps réel. L‟architecture
matérielle est donc composée d‟un calculateur, de capteurs et d’actionneurs.
1.3.1. Calculateur
Le calculateur peut être composé d‟un ou plusieurs microprocesseurs, de circuits intégrés
spécialisés tels que des ASIC ou des FPGA ainsi que des médias de communication.
1.3.1.1 ASIC et FPGA
Les ASIC et les FPGA sont des circuits intégrés que l‟on peut configurer pour réaliser à bas
coût des fonctions “câblées” simples dont les temps de réaction sont extrêmement courts. La
programmation de ces circuits n‟est pas évidente car elle nécessite l‟utilisation de
programmateurs ou de procédures spécialisés. Ces circuits n‟intègrent pas de séquenceur
d‟instructions, ils ne sont donc capables que d‟exécuter une seule fonction.
1.3.1.2 Microprocesseurs, microcontrôleurs
Un microprocesseur est composé d‟un CPU2 et d‟unités de communication pour communiquer
avec des périphériques externes ou d‟autres microprocesseurs.
Le CPU est une machine séquentielle constituée généralement d‟un séquenceur d’instruction
(SI), d‟une unité de traitement (UT) et d‟une mémoire. Les dernières générations de
microprocesseurs peuvent aussi intégrer une unité de calcul flottant (FPU) dont le but est de
considérablement accélérer certains calculs mathématiques (multiplication, division, sinus,
arrondi, etc.).
Un microcontrôleur est un microprocesseur intégrant un certain nombre d‟interfaces
supplémentaires (mémoires, timers, PIO3, décodeurs d‟adresse, etc.). Ces nombreuses entrées-
sorties garantissent un interfaçage aisé avec un environnement extérieur tout en nécessitant un
minimum de circuits périphériques ce qui les rend particulièrement bien adaptés aux
applications temps réel embarquées.
Du fait de leur forte intégration en périphérique (certains microcontrôleurs vont jusqu‟à intégrer
des fonctions spécialisées dans la commande des moteurs), les microcontrôleurs sont souvent
moins puissants que les microprocesseurs; le CPU qu‟ils intègrent est généralement en retard
d‟une ou même deux générations.
8
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
Dans la suite du cours, nous utiliserons le terme de processeur pour désigner indifféremment un
microprocesseur ou un microcontrôleur. De ce point de vue le processeur est simplement un
circuit qui intègre un CPU.
1.3.1.3 Médias de communication
Lorsque le calculateur intègre plusieurs processeurs on dit que l‟architecture matérielle du
système est multiprocesseur ou parallèle. Les médias de communications sont les éléments qui
permettent aux processeurs d‟un calculateur multiprocesseur d‟échanger des données. On peut
classer ces médias de communication selon trois catégories principales :
média point à point SAM ( Sequential Access Memory. L‟accès à ce type de liaison est de
type FIFO -First In First Out- pour lequel l‟ordre d‟émission des données est aussi l‟ordre de
réception) aussi appelée lien : c‟est une liaison bidirectionnelle entre deux mémoires SAM
de deux processeurs différents ;
média multipoint SAM ou bus SAM: c‟est une liaison multidirectionnelle qui relie les
mémoires SAM de plus de deux processeurs ;
média multipoint RAM ou bus RAM: c‟est aussi une liaison multidirectionnelle, mais ici
contrairement aux médias précédents la communication est réalisée à travers une mémoire
commune de type RAM5
1.3.2. Transducteurs
Le calculateur interagit avec le processus par l‟intermédiaire de transducteurs. Ceux qui
permettent d‟observer le processus sont appelés capteurs et ceux qui permettent d‟agir sur le
processus sont appelés actionneurs.
1.3.2.1 Capteur
Un capteur est un dispositif conçu pour mesurer une grandeur physique (température, pression,
accélération, etc.) en la convertissant en une tension ou un courant électrique. Le signal
électrique issu d‟un capteur est un signal analogique qui doit être discrétisé pour pouvoir être
traité par le calculateur. Cette discrétisation ou numérisation est réalisée par un circuit appelé
Convertisseur Analogique-Numérique (C.A.N). Il est utilisé pour échantillonner le signal
électrique issu du capteur, c‟est-à-dire mesurer- le plus souvent à des intervalles réguliers- la
valeur de ce signal électrique et ainsi produire une suite de valeurs binaires qui constituent le
signal discrétisé ou signal numérique.
L‟opération de codage de la valeur échantillonnée en un nombre binaire codé sur n bits est
appelée quantification. La résolution de la quantification et donc la précision de la mesure
dépend du nombre de bits utilisés pour coder la valeur (la valeur peut être codée sur 2n
niveaux) .
Dans le cas particulier où le codage est réalisé à l‟aide d‟un seul bit, le capteur est appelé
capteur binaire, le signal qu‟il délivre est un signal booléen qui par définition ne peut prendre
que deux valeurs (0 ou 1). Ce type de capteur est utilisé pour déterminer l‟état d‟un phénomène
modélisé par deux états exclusifs (exemple : présence/non-présence d‟un objet, seuil de
température atteint/nonatteint, récipient vide/non-vide, etc.).
9
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
1.3.2.2 Actionneur
FIG. 3 – Actionneur
Pour reconstruire un signal analogique à partir de la suite des valeurs numériques qui
constituent le signal numérique de commande, le C.N.A maintient grâce à un bloqueur, la
valeur du signal analogique à la même valeur pendant le laps de temps nécessaire au
calculateur pour produire la valeur suivante. Le signal obtenu est ensuite lissé par un filtre. Il
est à noter que ce signal analogique de commande ne peut être appliqué directement à l‟entrée
de l‟actionneur. Il est nécessaire d‟intercaler un amplificateur entre le C.N.A et l‟actionneur qui
fournira à ce dernier la puissance nécessaire à la création du phénomène physique pour lequel il
est conçu.
Certains actionneurs ne nécessitent pas l‟utilisation d‟un C.N.A car ils peuvent directement être
commandés par des signaux numériques, c‟est le cas par exemple :
d‟une vanne hydraulique qui peut être commandée par un signal booléen (ouverte/fermée) ;
10
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
d‟un moteur à courant continu piloté par un pont de transistors (rôle d‟amplificateur de
puissance) commandé par un signal booléen dont le rapport cyclique déterminera la tension
moyenne appliquée au moteur.
1.4. Notion de « Système Temps réel embarqué »
1.4.1. Définitions
11
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
physiques externes. Dans le deuxième cas, le système peut être dans une armoire électrique
placée dans une pièce différente de la pièce où se situe le robot. Ce système temps réel est donc
indépendant du bras manipulateur, il n‟est pas intégré à son environnement (bras + objets
manipulés).
Les systèmes embarqués sont généralement soumis à des contraintes spécifiques de coûts pris
au sens large du terme. Ces contraintes sont dues, d‟une part, au type d‟applications couvertes
par ce type de système, d‟autre part, à l‟intégration du système à son environnement. Ces
contraintes particulières de coût sont de plusieurs types : encombrement, consommation
d‟énergie, prix, etc.
Prenons l’exemple d‟un système temps réel embarqué dans un robot dont la mission est
d‟explorer des canalisations. Ce système sera soumis à des contraintes d‟autonomie car il devra
intégrer et gérer au mieux sa propre source d‟énergie et sera soumis à de fortes contraintes
d‟encombrement.
D‟autres applications telles que les applications automobiles nécessitent l‟utilisation de
systèmes embarqués dont les contraintes sont principalement des contraintes de coût financier
(forte compétitivité du secteur commercial), d‟encombrement (habitabilité du véhicule) et de
consommation d‟énergie.
Concevoir un système temps réel embarqué nécessite une bonne maîtrise des coûts matériels
mais aussi une bonne maîtrise des coûts de développement car ces derniers représentent une
grande part du coût financier d‟une application.
1.5. Domaines d’applications des systèmes temps réel et embarqués
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,
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.
12
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
13
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
14
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
Alors que le goulot d'étranglement était les ressources en calcul, de nos jours il est situé plutôt
au niveau des communications. Ce sont elles qui définissent désormais l'architecture, et non
plus les ressources de calcul. Le premier exemple est basé sur des communications par bus : ce
modèle de communication consomme peu de surface, mais risque de devenir un goulot
d'étranglement. Le deuxième est basé sur des communications en barres croisées très
performantes mais aussi très coûteuses en surface. Le troisième exemple donne une solution
intermédiaire, par réseau commuté.
Enfin le dernier exemple montre qu'il est possible de mixer plusieurs modèles de
communication, et d'apporter de la hiérarchie dans l'architecture.
Autour de ce modèle d'architecture centré sur les communications, se greffent les autres
modèles d'architecture : architectures des éléments de calcul et des mémoires. L'architecture
des éléments de calcul consiste à définir quels sont les éléments principaux et quels sont leurs
périphériques de manière à les grouper dans une architecture locale. L'architecture des
mémoires sert à définir quelles sont les mémoires locales à un groupe et quelles sont celles qui
seront partagées.
Parties logicielles des systèmes embarqués de troisième génération :
Les parties logicielles ont beaucoup gagné en importance dans les systèmes embarqués.
Plusieurs systèmes d'exploitation sont parfois nécessaires pour les divers processeurs de
l'architecture. De plus, la complexité et la diversité des architectures possibles font qu'il devient
de plus en plus nécessaire d'abstraire les tâches logicielles des détails du matériel. Toute cette
complexité est donc reportée dans les systèmes d'exploitation, qui deviennent de plus en plus
complexes.
Cette complexité logicielle et matérielle entraîne de nombreuses alternatives. En particulier,
l'aspect multiprocesseur apporte des alternatives pour les systèmes d'exploitation : il peut y
avoir un seul système pour tous les processeurs (solution difficilement applicable lorsque les
processeurs sont hétérogènes), ou il peut y avoir un système par processeur (solution qui peut
être plus coûteuse).
1.7.4. Les systèmes embarqués spécifiques
Lorsqu'un système est utilisé pour une tâche bien précise, il est souvent plus efficace et
économe s'il est spécifique à cette fonctionnalité que s'il est général. Les systèmes embarqués
sont très souvent utilisés dans ces conditions, et il est donc intéressant qu'ils soient conçus
spécifiquement pour les fonctions qu'ils doivent remplir. Notamment, les contraintes citées
dans la section précédente ne peuvent souvent être respectées que si le système est conçu dès le
départ pour pouvoir les respecter. Il est donc de par sa conception même spécifique.
Le problème qui se pose alors est que, pour chaque nouvelle fonctionnalité, il faudra concevoir
un système spécifique.
1.8. Modes de fonctionnement des systèmes embarqués
1.8.1. Fonctionnement général : boucle infinie
Tant que TOUJOURS faire
Acquisition des entrées (données capteurs, mesures…)
15
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
Le fonctionnement est basé sur le principe d'activation du système à chaque événement (notion
d'interruption)
A chaque interruption faire
Lecture de l'information arrivée
activation du traitement correspondant
Émission des ordres issus de ce traitement
Fin
Mais dans ce cas le problème réside dans le cas où une interruption survient alors que le
système est en train de traiter une interruption précédente, ce qui implique des contraintes de
programmation :
notion de priorité des interruptions
notion de "tâche" associée à une ou plusieurs interruptions
16
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
17
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
18
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
La première approche conduit à la réalisation d‟un programme unique dont la structure générale
est une boucle sans fin. Nous qualifierons cette approche de monotâche.
Les seconde et troisième approches conduisent à la réalisation d‟un programme dont la
structure est un ensemble de séquences de traitement susceptibles de se dérouler en parallèle.
Nous qualifierons ces approches de multitâches.
Nous allons décrire en détail la mise en œuvre de l‟approche monotâche dans la construction
d‟un système informatique temps réel. Nous dégagerons les avantages d‟une telle approche
mais aussi en mettrons en évidence les limites ; celles-ci conduisent à adopter l‟approche
multitâche lorsque l‟application à développer est complexe.
1.10.1. L’approche monotâche de construction d’un STR
Initialisation
Traitements primaires
Écriture dessorties
Traitements secondaires
19
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
Une telle architecture de programme est particulièrement simple car le programme traite
séquentiellement les entrées, les phases de calcul et les sorties.
Dans cette approche monotâche, l‟interaction du système avec son environnement peut se faire
soit par interruption, soit par scrutation cyclique des entrées/sorties, soit par une combinaison
de ces deux modèles d‟interaction.
Bien que cela exige un certain nombre de précautions, dans l‟approche monotâche il est
possible, pour la gestion des entrées/sorties, de combiner une gestion par interruption avec une
gestion par scrutation cyclique.
Nous allons examiner successivement ces deux types de gestion des entrées/sorties :
la scrutation logicielle des E/S,
l‟interruption immédiate du logiciel à la suite d‟événements externes.
20
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
PhaseAcquistion
Lire les valeurs numérisées données par les capteurs analogiques et les mémoriser dans des
variables du programme ;
Lire l‟état de toutes les entrées logiques et les mémoriser dans des variables du programme ;
Pour chaque bascule mémorisant l’occurrence d’un événement externe :
Si bascule = 1 alors :
Positionner l‟indicateur d‟activation du traitement associé ;
Si nécessaire, remettre la bascule à zéro ;
finSi
finPhaseAcquisition
1.10.1.2. Interaction par interruption
Dans ce type d‟interaction avec l‟environnement, le programme informatique est informé de
l‟occurrence d‟un événement grâce à un mécanisme qui interrompt, lorsque survient cet
événement, le cours normal de l‟exécution du programme, et qui permet la reprise du cours
normal du programme exactement à l‟endroit où celui-ci a été interrompu.
De tels événements qui déclenchent une interruption du programme en cours d‟exécution sont
dits asynchrones car, ils se produisent à des instants aléatoires par rapport au déroulement du
programme.
« Ce concept d’interruption a été initialement introduit pour gérer les entrées/sorties d’un
processeur. On la définissait alors comme un événement matériel provoquant un changement
dans l’exécution d’un programme.
Ce concept a ensuite été étendu à la notion d’interruption interne ou exception (trap) qui est
déclenchée par une opération logicielle (plutôt que par une opération liée au matériel). Dans
un cas comme dans l’autre, le terme d’interruption désigne l’événement qui provoque un
changement dans l’exécution normale d’un programme. On classe souvent les interruptions
selon la cause de leur arrivée : interruption d’entrée/sortie, interruption d’horloge,
interruption de défaut de page mémoire, etc. »
Lors de l‟arrivée d‟une interruption, le programme est interrompu à la fin de l‟instruction
machine en cours d‟exécution. Afin que l‟exécution du programme puisse reprendre
ultérieurement son cours normal, le contexte d‟exécution du processeur est automatiquement
sauvegardé dans la pile2. Une fois le contexte d‟exécution sauvegardé, il y a identification de la
source de l‟interruption puis, en fonction de cette source, branchement vers une séquence
spéciale d‟instructions (appelée gestionnaire d’interruption ou tâche immédiate) chargée de
traiter l‟interruption.
2Ce contexte contient notamment la valeur qu‟avait le compteur ordinal à la fin de l‟instruction
au cours de laquelle est survenue l‟interruption. Cette valeur est celle de l‟adresse de la
prochaine instruction machine à exécuter, donc l‟adresse de l‟instruction à partir de laquelle se
fera la reprise de l‟exécution du programme interrompu.
21
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
Traitement de l’interruption
Sauvegarde du Restauration du
Événement
déclenchant une
Poursuite du
Déroulement normal déroulement
Temps
Figure 10 : Interaction par interruption
Plusieurs sources d‟interruption peuvent partager la même entrée d‟interruption du
microprocesseur. Le gestionnaire d‟interruption associé à une telle ligne d‟interruption doit
alors tester les sources possibles d‟interruption afin de connaître celle qui est à l‟origine de
l‟interruption du processeur. Ceci se fait en effectuant une scrutation (polling) des bascules des
boîtiers contrôleurs d‟E/S.
Le temps de latence d’une interruption est le temps qui sépare l‟apparition d‟un événement
issu d‟un capteur ou de tout autre dispositif électronique, et l‟exécution de la première
instruction du gestionnaire d‟interruption associé à cet événement.
Nous examinerons dans le paragraphe suivant la façon dont peut, dans une approche
monotâche, être mise en œuvre une gestion des entrées/sorties par interruption.
1.10.1.3 Architecture possible d’un système monotâche temps réel
En pratique, on fixe la périodicité à laquelle la boucle de programme est exécutée ; on ne veut
pas en effet faire dépendre cette périodicité du temps d‟exécution effectif d‟un tour de boucle.
Bien évidemment, cette périodicité devra être strictement supérieure à la valeur maximale du
temps d‟exécution d‟un tour de boucle, c‟est-à-dire du temps d‟exécution de la boucle lorsque
sont effectués tous les traitements, y compris ceux relatifs à la gestion des E/S. Un timer
générera les signaux de réactivation périodique de la boucle. Ces signaux périodiques seront
gérés par scrutation ou par interruption.
L‟architecture du programme de l‟application peut alors être schématisée de la façon suivante :
22
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
3Parmi les procédures - celles de gestion des E/S comme celles de traitements - on peut en effet
distinguer celles qui sont exécutées à la suite de l‟occurrence d‟un événement (donc de façon
épisodique) de celles qui sont exécutées à chaque tour de boucle.
23
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
24
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
25
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
26
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
d‟ordonnancement déroulé.
- Ci : C‟est la date à laquelle une tâche Ti termine son exécution. Cette date ne correspond
pas forcément à Si + Ei. En effet, selon l‟algorithme d‟ordonnancement appliqué, une tâche
peut être interrompue ou retardée pour la prise en compte d‟une tâche plus urgente.
- TRi : C‟est le temps de réponse de la tâche Ti c'est-à-dire la période entre la date la plus
antérieure à laquelle une tâche peut commencer son exécution et la date postérieure à laquelle
elle termine son exécution. Il s‟exprime par la formule : TRi = Ci - Ri.
- TLi : C‟est le temps de latence d‟une tâche Ti c'est-à-dire la période pendant laquelle une
tâche peut être retardée sans que son exécution ne dépasse son échéance. Elle s‟exprime par la
formule : TLi = Di - Ri - Ei.
- Li : C‟est la laxité c'est-à-dire la date au plus tard à laquelle la tâche Ti peut commencer son
exécution. Elle s‟exprime par la formule : Li = Di - Ei. Par déduction, on obtient la formule: TLi
= Li - Ri. Le temps de latence n‟est pas constant. En effet, plus une tâche Ti est retardée plus
son temps de latence diminue.
- Ui : C‟est le taux d‟utilisation du processeur dédié à la tâche Ti. Il s‟exprime par la formule:
. Le taux global d‟utilisation sera la somme de tous les Ui.
Pour les tâches périodiques, le taux d‟utilisation du processeur ou le pourcentage de l‟activité
du processeur dédié à la tâche Ti est donnée par :
, et la Charge processeur = taux d‟utilisation du processeur pour les tâches périodiques
27
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
Remarque :
- Dans certains STR, l‟échéance est modélisée par une fonction à valeur dans le temps
(FVT) appelée « Time Value Fonction » (TVF). Chaque tâche Ti fournit au moment de sa
terminaison, une contribution qui est décrite par une fonction de coût Fi(t). La valeur de cette
fonction renseigne sur l‟utilité de la terminaison de la tâche à l‟instant t. Fi(t) a la valeur
maximale si Ti termine avant Di, autrement la valeur de la fonction décroît vers 0, où elle
signifie qu‟une terminaison à cette date-là est inacceptable. Quand la valeur de la fonction
décroit brusquement après son échéance, ceci indique une échéance stricte à ne pas dépasser
dans n‟importe quelle situation. Par contre, si la valeur de la fonction décroit progressivement,
cela indique une échéance relative qui peut éventuellement être dépassée de peu.
- L‟ordonnancement est ramené, dans ce cas, à un problème d‟optimisation des tâches.
L‟ordonnancement est déterminé par une série d‟évaluations des valeurs des FVT selon la
position des tâches dans la séquence d‟ordonnancement.
28
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
- Une tâche non préemptible ne peut être interrompues qu‟à des endroits spécifiques et
à la demande de la tâche elle-même, par exemple fin_de_tâche, attente_signal…
- Une tâche préemptible peut être interrompue à n‟importe quel instant et le processeur
affecté à une autre tâche.
- Les tâches indépendantes : ce sont des tâches qui ne sont définies que par leurs
paramètres temporels, on dit alors qu‟elles. En effet, certaines tâches doivent communiquer
avec les autres tâches, ou doivent être connectées vers l‟extérieur pour les entrées/sorties. Par
conséquent, elles peuvent être liées par un des types des relations suivant:
- Synchronisation : se traduit par une relation de précédence d‟exécution entre les tâches,
- Communication : se traduit par une relation de précédence comme la synchronisation mais
avec l‟échange de données entre les tâches,
- Partage de ressources : les ressources sont les moyens techniques nécessaires à l‟exécution
des tâches. Au niveau d‟un système, les tâches utilisent des ressources mises en commun
comme des zones de mémoire, des cartes d‟entrées/sorties, etc. Certaines des ressources
n‟autorisent que des accès en exclusion mutuelle, c‟est-à-dire pas plus d‟une tâche peut y
accéder à la fois, pour avoir un fonctionnement correct. Elles sont appelées ressources critiques.
Remarques
- Les algorithmes d‟ordonnancement sont extrêmement dépendants du modèle de tâches.
Ainsi ils sont plus conçus pour des tâches périodiques ou apériodiques et les tâches sporadiques
sont converties en tâches périodiques.
- Les applications temps réel sont en majorité composées de tâches périodiques.
- Les sources de contraintes de temps sont souvent : le processus physique (lois de
commande), la qualité de service (qualité audio/vidéo), le choix d‟architecture, le choix de
conception, etc.
30
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
généralement inclus dans l‟espace noyau et communiquent avec l‟espace utilisateur via les
appels système (des fonctions fournies par le noyau, et utilisées par les programmes s‟exécutant
dans l‟espace utilisateur).
Exécutif ou noyau temps réel sont souvent assimilés, dans le sens où l‟exécutif est souvent vu
comme un noyau possédant des pilotes de périphériques ou des services supplémentaires (pile
réseau,…) par rapport à un noyau. Un noyau est généralement léger, et on parle d‟empreinte
mémoire d‟un noyau (occupation mémoire) pour caractériser son encombrement. Les noyaux
temps réel fournissent au moins deux types de modules, l‟un spécifique pour le temps réel
(gestion des tâches, communication, synchronisation, gestion du temps) et l‟autre plus classique
(librairies standard). Les applications temps réel font alors appel à la partie temps réel du
noyau.
Contrairement au système d‟exploitation classique (politiques d‟ordonnancement des activités
basées sur le partage équitable du processeur; gestion de temporisateurs ou de l‟horloge pas
assez fine; la concurrence de l‟application temps réel avec le système d‟exploitation toujours
actif…), les principales fonctions d‟un noyau temps réel peuvent être scindées en trois groupes
ci-dessous.
Donc, les tâches de même que les processus concourent à l‟obtention du ou des processeurs, et
peuvent communiquer ou se synchroniser. La différence est qu‟une tâche est caractérisée par
une pile et un pointeur d‟instruction, mais partage la mémoire avec les autres tâches du
même processus; tandis que la mémoire pour les processus est privée (il en résulte que le
passage par l‟exécutif pour la communication entre processus est plus lourd mais plus sécurisé
que pour les tâches):
- Gestion des entrées/sorties.
- Ordonnancement des tâches.
- Relations entre les tâches (synchronisation, communication, accès à une ressource
critique en exclusion mutuelle, gestion de temps…).
31
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
32
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
par une «priorité plafond» (voir Figure I.7.(b), Figure I.8 (b)).
II.5 b. Moniteurs
Le moniteur est un outil utilisé pour synchroniser deux ou plusieurs tâches qui utilisent des
ressources partagées. En fait, l‟utilisation de la ressource ne peut avoir lieu qu‟à travers
le moniteur, et les primitives du moniteur permettant de manipuler cette ressource sont non
réentrantes. Le moniteur est strictement plus puissant que le sémaphore. Un moniteur est
constitué de:
- un ensemble de primitives permettant l‟interaction avec la ressource partagée,
- un verrou d‟exclusion mutuelle,
- des variables associées à la ressource.
En pratique, il existe deux types de moniteur, l‟un de moniteur classique et l‟autre de moniteur
à la Ada.
- Le moniteur classique, appelé «moniteur de Hoare»: est un mécanisme dans lequel la non
réentrance des primitives est couplée avec un «wait» et un «signal» permettant respectivement
de mettre en attente et de réveiller une tâche accédant au moniteur sous certaines conditions. Ce
type de moniteur peut être implémenté par exemple dans la norme POSIX 1003.1 à l‟aide de
variables conditionnelles. Lorsqu‟une tâche doit être mise en attente sur le moniteur tant qu‟une
condition n‟est pas réalisée, charge au programmeur d‟utiliser les outils «wait» et «signal» pour
implémenter les conditions (gardes) d‟accès.
- Le moniteur à la Ada (objet protégé): permet de mettre une garde (une barrière logique) à
l‟entrée de chaque primitive du moniteur, ce qui offre des traitements plus fins et plus
transparents des conditions d‟accès par rapport au moniteur de Hoare. Par exemple, dans le cas
où il y a plusieurs conditions de réveil, seule la tâche concernée est réveillée par le changement
d‟état du moniteur, contrairement au cas du moniteur de Hoare dans lequel toutes les tâches en
attente sur «wait» sont réveillées sur un «signal», puis doivent évaluer leur condition afin de se
remettre en attente ou de poursuivre leur exécution. De plus, le moniteur à la Ada possède un
mécanisme natif de l‟accès de type lecteur/écrivain, c‟est-à-dire plusieurs tâches peuvent
accéder au moniteur en lecture en même temps, mais une seule tâche peut y accéder en écriture
à la fois. En outre, le protocole à priorité plafond existe également pour le moniteur à la Ada.
II.5. c. Signaux
Les signaux sont des événements (sans données) pouvant être envoyés à une ou plusieurs
tâches simultanément. Il y a deux types de signaux: les «signaux synchrones», internes à une
tâche ou un processus, et les «signaux asynchrones», provenant d‟autres tâches ou processus,
ou bien de source matérielle externe.
- Un signal synchrone est le résultat d‟un événement interne à une tâche. Il s‟agit lorsqu‟un
événement interne a lieu, qu‟une occurrence du signal synchrone associé ait lieu. Et ce signal
est traité immédiatement de façon synchrone à son occurrence par la tâche. Normalement, à
chaque signal synchrone est associée une action par défaut, qu‟une tâche peut effectuer
lorsqu‟elle reçoit un signal synchrone.
- Les signaux asynchrones sont des signaux provenant d‟une source externe à l‟adresse d‟une
tâche ou un processus (signaux privés), ou bien à plusieurs tâches et/ou plusieurs processus
34
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
(signaux publics). Lorsqu‟un signal privé est envoyé à un processus, la dernière tâche
(chronologiquement) à s‟être sensibilisé à l‟événement peut percevoir l‟événement. Lorsqu‟un
signal public est envoyé à un processus, toutes les tâches sensibilisées au signal peuvent le
percevoir. Alors dans les cas de signaux public, un répartiteur d‟occurrences s‟occupera
de prévenir chaque tâche sensibilisée qu‟un signal public est envoyé.
Si une tâche n‟est pas prête à recevoir un signal au moment où l‟occurrence de ce signal a lieu,
il existe trois possibilités dont les occurrences non prises en compte peuvent être gérées:
«signal fugace» (l‟occurrence non prise en compte est perdue, la tâche doit attendre l‟arrivée de
cette occurrence de nouveau); «signal mémorisé» (l‟occurrence non prise en compte est
mémorisée en mettant le «drapeau» à 1, par conséquent si une autre occurrence du même
événement a lieu d‟ici à sa prise en compte, elle est ignorée); «signal à compte» (les
occurrences non prises en compte immédiatement sont comptées pour utilisation ultérieure).
II.5. d. La boîte aux lettres
Une boîte aux lettres permet une communication asynchrone entre des tâches. Une boîte aux
lettres est constituée typiquement d‟une zone d‟échange tampon (buffer) dans laquelle une
tâche dite «émettrice» peut déposer des données, et d‟un mécanisme de gestion des données
(messages) stockées dans la boîte aux lettres.
- - La taille de la zone d‟échange est déterminée par le nombre de messages maximum
multiplié par la taille de chaque message.
- - Les données de la boîte aux lettres sont gérées généralement par une file de type FIFO (i.e.,
premier déposé/premier retiré). Donc, une tâche dite «réceptrice» retire les données dans
l‟ordre d‟arrivée des données. En fonctions de l‟implémentation, les données de la boîte aux
lettres peuvent être gérées par niveau de priorité. Ainsi, la priorité de données peut être
déterminée d‟une façon soit orientée message (chaque message est muni d‟une priorité qui
influence l‟ordre dans lequel il va être lu), soit orientée tâche (la priorité du message est liée à
la priorité de la tâche « émettrice »). Il en résulte que la zone d‟échange tampon possède
plusieurs files d‟attente des messages à l‟ordre de priorité, et les messages ayant la même
priorité sont gérés dans la même file d‟attente des messages de type FIFO.
Il est important de noter que la communication par la boîte aux lettres est asynchrone, car la
tâche « émettrice » n‟a pas besoin d‟attendre que la tâche «réceptrice» soit à l‟écoute pour lui
envoyer des données.
- Si la tâche «réceptrice» désire recevoir des données au moment où la boîte est vide, elle est
mise en attente jusqu‟à ce que des données aient été déposées dans la boîte (on parle de blocage en
lecture).
- Lorsque la tâche «émettrice» désire déposer des données dans une boîte pleine (car la taille
de la zone d‟échange tampon est normalement bornée), en règle générale, cette tâche elle-même,
est mise en état «en attente» jusqu‟à ce que des données aient été retirées de la boîte (on parle alors
de blocage en écriture, ou de la boîte aux lettres sans écrasement, qui dans ce cas ne fonctionne
plus de façon asynchrone). Cependant, en fonction de l‟implémentation choisie, le message le plus
ancien de la boîte peut être écrasé par le nouveau, en conséquence la tâche «émettrice» ne se
bloque jamais en écriture (on parle de la boîte avec écrasement).
La Figure suivante illustre une représentation récapitulative de la composition d‟une boîte aux
35
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
36
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
placer des tâches avant le début de leur exécution. L‟ordonnancement préemptif est très
recommandé pour toutes les applications temps réel dynamiques.
- Mécanisme d’allocation statique des tâches : c‟est un algorithme qui permet de répartir un
ensemble de tâches entre les processeurs alloués à la machine en tenant compte des contraintes
temporelles.
- Mécanisme d’allocation dynamique des tâches : c‟est un algorithme qui entre en action
lorsqu‟une tâche est refusée localement. Il se charge de déterminer un processeur pour exécuter la
tâche. Il est doté des modules de politiques de recherche de processeurs pour la tâche refusée et de
politiques pour le maintien d‟un état de processeurs afin de choisir le plus capable d‟assumer le
respect des contraintes de la tâche.
38
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
III.1. Définitions
On appelle programmation concurrente les techniques et notations permettant :
- l'expression et la manipulation (construction, destruction, lancement, arrêt, ...) d'entité
concurrentes que l'on appelle tâches ou processus ;
- la mise en place de moyens de communication et de synchronisation entre ces entités ;
- l'abstraction de l'exécution réelle des processus ou tâches sur une architecture parallèle ou
non.
La programmation temps réel est assimilable à la programmation concurrente avec comme
particularité :
- Des mécanismes ou notations permettant d'accéder au temps réel (généralement une horloge
temps réel) ;
- Des mécanismes permettant de définir ou de modifier la priorité des processus et/ou de
définir et de modifier des échéances temporelles ;
- La suppression ou l‟adaptation de certains traits du langage utilisé afin d'alléger l'applicatif
et/ou de le rendre plus déterministe.
39
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
40
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
soit à la norme : il faut donc l'intervention préalable de l'électricien; l'électricien peut lui exiger
de ne faire les travaux que lorsque les problèmes de fuites d'eau seront résolus : il faut au
préalable l'intervention du plombier.
Les deux processus sont actifs (ils viennent régulièrement) mais ils ne font pas progresser les
choses : on est face à une activité non constructive et donc un problème de vivacité
Difficile reproductibilité des erreurs
- L'entrelacement des différents processus (chacun peut avancer à son rythme) va définir un
nombre de comportements possibles très important.
Si l'on a quatre processus indépendants, chacun ayant dix états différents, on obtient un système
complet ayant 10^4 = 10 000 états différents ;
Chaque exécution ne va pas nécessairement faire évoluer exactement de la même façon les
processus (leur évolution dépend généralement du monde extérieur qui est en perpétuel
changement).
- Ainsi, si une erreur survient il est très difficile de reproduire cette erreur afin de comprendre
son origine.
En conclusion
La concurrence introduit des problèmes spécifiques qui peuvent être difficile à analyser.
Cependant, elle simplifie énormément le travail du concepteur et du programmeur qui peut à la
fois calquer la réalité dans son programme tout en tirant partie de l'optimisation possible des
ressources. Il existe de plus des méthodes de test formel adaptées à l'analyse de systèmes
concurrents.
41
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
42
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
3. Etat de terminaison
Un processus ou une tâche peut terminer sous différentes conditions :
- fin normale des instructions
- suicide par l'exécution d'une instruction de terminaison
- avorté par l'action d'un autre processus/tâche
- fin sur erreur (exception ou signal non récupéré)
- lorsque son rôle n'est plus utile
- jamais
43
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
}
// seul le pere arrive ici car les fils ont termine par exit
// il attend cette terminaison for (i=0; i<N; i++){
III.6. Conclusion
La programmation concurrente simplifie la conception des systèmes temps-réel qui sont par
nature des systèmes concurrents.
Elle peut cependant introduire certains problèmes spécifiques liés en grande partie à la
synchronisation des tâches.
Les langages, ou les systèmes d‟exploitation, offrent différents mécanismes pour la
représentation et l‟exécution des tâches ou processus.
44
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
45
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
46
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
communication, le partage de ressources (ces types de relations sont décrits en détails aux
paragraphes suivants de ce manuscrit), afin d‟assurer le comportement concurrent des systèmes
de contrôle-commande.
4.1.b. Architecture matérielle des systèmes de contrôle-commande
L‟aspect matériel a une très grande importance dans les applications de contrôle-commande.
Cette implication est liée d‟une part à la connexion directe avec le monde physique réel à l‟aide
d‟une grande diversité de systèmes d‟entrées/sorties, et d‟autre part au matériel informatique
parfois spécifique et développé pour une application donnée. En fait, l‟architecture matérielle
décrit l‟agencement de composants électroniques ainsi que leur interaction. Elle est souvent
grandement masquée aux utilisateurs par le biais du système d‟exploitation, qui donne une
abstraction unifiée de tous les composants physiques. Dans ces matériels, nous pouvons trouver
des processeurs du type microcontrôleur, des mémoires, des horloges, des composants
spécifiques (i.e., ASIC: Application Specific Integrated Circuit), des alimentations…,
disciplines qui débordent largement le contexte de ce manuscrit.
4.2. Cycles de vie développement d’un logiciel
Le génie logiciel est « l‟application pratique de la connaissance scientifique dans la conception
et l‟élaboration de programmes informatiques et de la documentation associée nécessaire pour
les développer, les mettre en œuvre et les maintenir ». Le génie logiciel consiste à appliquer des
méthodologies, c‟est-à-dire à développer et à utiliser des méthodes et des outils dans le but de
produire des logiciels de qualité en respectant des contraintes de temps et de coût. En effet, on
cherche à développer des logiciels qui correspondent aux besoins des utilisateurs de ces
logiciels.
Le cycle « problème-solution » en est un exemple. Dans ce cas, on est souvent en quête de la
solution. Mais il n‟existe pas de solution définitive parce que la solution proposée peut être
inadaptée (le problème a été mal compris) ou l‟application de cette solution peut entraîner des
nouveaux problèmes ou mettre à jour des problèmes déjà existants. Donc, le fait de trouver une
solution n‟implique pas la fin des problèmes.
Il existe des « critères » de qualité dont un développement peut être fait pour satisfaire tout ou
partie d‟un ensemble de ces critères.
. Exactitude: le plus important des critères de qualité. Exigence d‟un logiciel à être exempt
d‟erreur; à fournir des mêmes résultats dans les mêmes conditions normales d‟utilisation.
Notons que ce déterminisme et cette reproductibilité des résultats ne sont pas adaptés au temps
réel.
. Robustesse: Capacité d‟un logiciel à maintenir ses performances malgré des changements
dans les conditions de fonctionnement ou la présence d‟incertitudes liées à ses paramètres. Il
s‟agit du fait qu‟un logiciel doit bien réagir lorsque l‟on s‟écarte des conditions normales
d‟utilisation.
. Extensibilité: Possibilité pour un logiciel d‟utiliser tout ou certaines parties de ce logiciel pour
développer un autre logiciel répondant à d‟autres besoins, sans modification ou avec des
modifications mineures.
47
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
48
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
49
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
autres. Elle constitue le point de vue statique et le point de vue dynamique de la structure
interne du système. La Conception Détaillée permet à partir du résultat de la Conception
Générale de poursuivre le découpage du système jusqu‟à arriver à une description détaillée de
chacun des composants. Cette phase consiste à décrire les choix algorithmiques, à préciser la
signature des tâches et des fonctions, à définir les structures de données, et à spécifier les
protocoles de communication. Comme la phase de Spécification, il est possible d‟utiliser une
méthode de conception lors de cette phase. DARTS, UML, etc. font partie des méthodes de
conception.
L’Implémentation: cette étape permet d‟implémenter les concepts proposés dans la phase de
Conception. Lors de cette étape, chacun des composants est encodé en langage de
programmation. En effet, pour les systèmes concurrents, soit un langage concurrent (Ada,
Module 2,…) soit un langage séquentiel utilisé conjointement à un système d‟opération
multitâche ou un noyau temps réel (i.e., C et exécutif temps réel). En outre, un langage de
programmation graphique peut être utilisé. Grâce à sa programmation graphique, ce langage
permet non seulement d‟implémenter des concepts de
Conception mais aussi de faire intégrer les composants continus d‟une application réelle dans
un environnement homogène de manière intuitive. LabVIEW (Laboratory Virtual Instrument
Engineering) est un tel langage qui sera utilisé principalement dans la suite pour le
Développement d‟un logiciel.
4.2.2. Le cycle de vie en «V»
Le cycle de vie en «V» est une variation du modèle en «Cascade». Contrairement au cycle de
vie en «Cascade», le cycle de vie en «V» se focalise sur la vérification et la validation. Un
processus en «V» s‟accomplit en deux pentes: une pente descendante et une pente ascendante.
La pente descendante du «V» reprend les étapes progressives du modèle en «Cascade» à partir
de la Spécification jusqu‟à l‟Implémentation. La pente ascendante du «V» porte un ensemble
de tests qui permettent de vérifier et/ou de valider le système développé en faisant correspondre
chaque étape de tests ou de validation à une étape de l‟analyse et de la conception (voir Figure
IV.2.c).
- Les tests unitaires: permettent de vérifier que les composants indépendants du système
répondent chacun à leurs spécifications et fonctionnent correctement en tous Les tests
d‟intégration: sont des tests qui se déroulent suivant les tests unitaires servant à vérifier que les
composants réalisés indépendamment fonctionnent bien ensemble. Il s‟agit de tester des
50
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
relations d‟utilisation entre les composants, le fonctionnement de tâches qui s‟appuient sur les
composants, des mécanismes de communication et de synchronisation La validation: permet de
vérifier que le logiciel développé répond aux besoins exprimés dans la phase de Spécifications.
Le canevas du modèle en «V» améliore celui du modèle en «Cascade» avec une limitation des
retours aux étapes précédentes. Les phases de la partie montante doivent renvoyer des
informations sur les phases en vis-à-vis lorsque des défauts sont détectés afin d‟améliorer le
logiciel. Cependant les difficultés fondamentales du modèle linéaire que l‟on affronte dans le
modèle en «Cascade» existent encore. Parce que chaque phase est traitée complètement avant
que la suivante ne soit commencée, les tests de vérification et de validation ne sont renvoyés
qu‟en fin du processus d‟implémentation. Et parce que la plupart des erreurs sont relevées
pendant les spécifications, les retours coûtent chers.
4.2.3. Les autres cycles de développement d’un logiciel
Pour le modèle en «V» en particulier, le modèle linéaire en général s‟appuie sur des documents
complètement élaborés comme un critère de transition entre des étapes. Un tel modèle est bien
adapté pour des systèmes dont on pourrait obtenir la totalité des besoins au départ. Ce qui nous
permet d‟une part de préparer tardivement des phases de tests, d‟autre part de figer ces besoins
dans toutes les étapes successives. Pourtant, avec un modèle «dirigé par les documents»
[Boe88], plusieurs projets sont produits avec des spécifications détaillées de services qu‟ils ne
maîtrisent pas encore (i.e., l‟interface utilisateur et les opérations fournies). Par conséquence, il
y a de grandes chances que dans la conception et le développement de ces projets qui vont
suivre, une grande quantité de code soit inutilisable.
Pour des systèmes à risques, il est favorable d‟utiliser d„autres techniques de prototypage qui
permettent de valider tout ou une partie du cahier des charges et de prendre en considération le
«feedback» entre le concepteur et l‟utilisateur. Parmi ces modèles, on retrouve:
6.2.3. a. Le modèle en «Prototype Rapide» (Rapid Prototyping Model)
Ce modèle focalise l‟objectif du logiciel à la première étape du cycle de développement: une
conception et un prototype seront construits rapidement, ce qui permet de le vérifier avant la
phase de spécification et d‟exiger moins de boucles de «feed-back» par rapport au modèle en
«Cascade». Ce modèle est très utilisé dans l‟industrie automobile, où le constructeur peut être
amené à faire à l‟appel d‟offre aux instrumentiers en se basant sur un prototype tournant.
51
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
52
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
53
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
55
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
phases séquentielles (la conception détaillée, l‟implémentation, des tests unitaires). Lorsque le
matériel et le logiciel satisfont chacun leur fonctionnement, on les intègre ensemble dans la
phase d‟intégration et la phase de validation afin de vérifier la communication entre ces deux
parts, et aussi le fonctionnement du système considéré (i.e., des tests d‟opération, des
évaluations des contraintes temporelles,…).
56
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
Malgré ces inconvénients, l‟approche traditionnelle est encore très utilisée pour les applications
embarquées.
4.3.2. L’approche de développement «Logiciel/Matériel» en Co-design
«Matériel/Logiciel» en co-design signifie la rencontre des objectifs au niveau du système en
exploitant la synergie de matériel et de logiciel par leur conception concurrente. Contrairement
à l‟approche traditionnelle, l‟approche de développement «Matériel/Logiciel» en Co-design se
concentre sur la combinaison des perspectives de matériel et de logiciel dès les premières
phases de développement. Alors, un développement va commencer avec une notation abstraite
telle que chaque composante ou module est indépendant(e) de sa réalisation finale en matérielle
ou en logicielle. Puis, la séparation des composantes matérielles/logicielles peut être effectuée
de manière la plus appropriée. L‟intégration «Matériel/Logiciel» est ensuite complétée par un
ensemble des instructions permettant des tests et des co-simulations. Un modèle typique de
développement en Co-design est présenté sur la Figure 9i ci-dessous.
L‟approche de développement en Co-design est une approche encore récente pour les systèmes
temps réel. Cette approche est bien adaptée à des applications dont la spécification peut
changer continuellement et dont le «Time-to-market» affecte fortement le succès (i.e., systèmes
de communication, électroménager,…). L‟approche de développement en Co-design se base
sur la communication synchrone dirigée par les événements. Dans cette approche, la
description fonctionnelle du système est exprimée sous la forme de graphes orientés, appelés
des CFSMs (Machines à états finis en Co-design ou Co-design Finite State Machine en
anglais). Un CFSM interprète un ensemble d‟entrées en un ensemble de sorties avec un nombre
fini d„états internes. Mais, contrairement à un FSM traditionnel, un CFSM ne change pas tous
ses états exactement en même temps. La communication entre des CFSMs est réalisée par des
événements unidirectionnels, non zéro et sans bornes de temps (asynchrone globalement). Il
existe aussi des traductions qui permettent de convertir des spécifications en provenance d‟un
57
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
langage synchrone (i.e., ESTEREL, SIGNAL, HardwareC,…) en des CFSMs. Les CFSMs sont
supposés indépendant des choix matériels ou logiciels. Cela permet un choix libre de
l‟implémentation dans l‟étape de «Matériel/Logiciel Partition», tel que l‟on transforme des
CFSMs en un format de description du matériel dans lequel chaque transition est implémentée
par un circuit combinatoire verrouillant ses sorties afin d‟assurer leurs non zéro retard de
réaction; ou bien que l‟on transforme des CFSMs en une structure de logiciel qui comporte des
procédures et un système d‟exploitation simple exprimés sous la forme d‟un sgraphe (une
forme réduite de graphe flot de contrôle contenant les noeuds, nommés «Begin», «End»,
«Call», «Test», Assign»). Un s-graphe peut être interprété en des codes pour être exécutables
par un microprocesseur. Des interfaces entre des composantes matérielles et des composantes
logicielles sont générées automatiquement grâce à des techniques de mémoire partagée (pour
des communications dans lesquelles l‟événement émis par le logiciel est consommé par le
matériel), de «scrutation» ou d‟«interruption», de communication directe entre des matériels ou
des logiciels par «bus» ou «drapeau» respectivement. Cela permet de faciliter la vérification de
l‟intégration des matériels/logiciels et la validation dans les étapes suivantes. Les co-
simulations s‟exécutent sur des matériels simulés (i.e., des ASICs, Application Specific
Integrated Circuit), ce qui permet de réduire le coût de production et d‟augmenter la fiabilité,
mais d‟élever également le coût et le temps de développement. Par ailleurs, l‟implémentation
des logiciels possède un temps de réponse pouvant être plus grand que celui des matériels.
Notamment, si le logiciel est basé sur un système d‟exploitation avec le mécanisme de
préemption, le temps de réaction d‟un logiciel ne peut être représenté exactement par un
modèle basé sur une hypothèse synchrone.
De nos jours, avec des outils de conception assistés par ordinateur (CAO), l‟introduction du
FPGA (Field-Programmable Gate Array), et des HDLs (Hardware Description Language), le
développement «Matériel/Logiciel» en Co-design devient un vaste domaine de recherche et une
clé de technologie pour des systèmes numériques pour le COSYMA (COSYnthesis for
eMbedded micro Achitectures), pour le Ptolemy, pour le POLIS, etc.
Bien que ces méthodes soient bien adaptées pour le développement d‟applications très
intégrées, il nécessite de la part du concepteur une maîtrise globale du système. Or il est assez
classique, notamment dans le monde automobile, et afin de réduire le coût et le «time-to-
market», d‟avoir un choix de matériels précis (1 ou 2 microcontrôleurs au choix, récupérant des
informations sur un réseau de terrain). Dans ce cas, les développements matériels peuvent se
réduire à la mise sur circuits de certaines fonctions ne pouvant être exécutées de façon
logicielle pour des problèmes de puissance de calcul. Dans ce cas, une approche traditionnelle
pourra réduire le temps de développement. Il convient cependant que l‟impact du matériel sur
le logiciel soit bien connu. De plus, il convient de pouvoir tester le logiciel indépendamment du
matériel. Dans ce cas, il est fréquent d‟appliquer un cycle de développement en «W».
4.3.3. Le cycle de développement en «W» dans l’approche traditionnelle
Le modèle en «W» (voir Figure IV.2.j) est une extension du modèle en «V». Dans ce modèle,
le premier V correspond au cycle de vie en «V» classique sur simulateur logiciel (à
développer), le deuxième V étend le premier pour prendre en considération les propriétés du
matériel dans le développement d‟un logiciel.
58
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
59
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
61
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
une résolution d‟horloge de l‟ordre de la micro seconde avec un surcoût processeur moindre
par rapport au modèle dirigé par le temps.
4.5. Principales normes temps réel
4.5. a. La norme POSIX
POSIX (Portable Operating System Interface) est le nom d‟une famille des standards définie
depuis 1988 par l‟IEEE et formellement désignée P1003. Le but au début de cette norme est de
normaliser l‟accès aux services offerts à différents niveaux par les systèmes d‟exploitation
UNIX.
De nos jours, beaucoup de systèmes d‟exploitation, d‟exécutifs temps réel ou de noyaux temps
réel se disent conformes à la norme POSIX. Dans les paragraphes suivants, nous parlons de
quelques éléments sur les normes POSIX orientées temps réel.
IPC (Interprocess Communication): proposé dans l‟amendement POSIX 1003.1b (1993)
corrigée par le 1003.1i en 1995, regroupe les trois outils définis pour la communication entre
processus, ce sont la boîte aux lettres, le sémaphore et le tableau noir.
Les boîtes aux lettres sont dites «boîtes aux lettres nommées», car chaque boîte est identifiée
par un nom unique dès la création de cette boîte. La manipulation d‟une boîte aux lettres
nommée se fait à l‟aide de fonctions dont le nom est préfixé par «mq_» pour message queue,
par exemple «mq_open» crée une nouvelle boîte ou bien ouvre une boîte aux lettres existante;
«mq_send» et «mq_receive» servent respectivement à envoyer et à attendre des messages d‟une
boîte aux lettres, etc. Il est important de noter qu‟une boîte aux lettres nommée est une boîte
aux lettres bornée sans écrasement, avec possibilité d‟affecter une priorité aux messages.
Les sémaphores dits «sémaphores nommés» sont des sémaphores à compte. La manipulation
d‟un sémaphore se fait à travers des fonctions dont le nom est préfixé par «sem_», par exemple
«sem_open» crée ou ouvre un sémaphore; «sem_wait» prend un sémaphore; «sem_post» libère
un sémaphore, etc. Aucun protocole de gestion de ressource n‟est disponible pour les
sémaphores nommés.
Les tableaux noirs dits «shared memories», sont les zones des mémoires spécifiques partagées,
car la mémoire de chaque processus est protégée. En utilisant la fonction «shm_open» nous
pouvons créer ou ouvrir une zone de mémoire partagée. Après avoir ouvert/créé, on peut
calquer cette zone de mémoire partagée sur une variable d‟un processus avec la fonction
«mmap». Notons que tout accès à la variable « mappée » est alors un accès à la zone de
mémoire partagée, et non pas l‟accès à une variable interne au processus. Ce mécanisme se
couple généralement à un sémaphore pour garantir l‟exclusion mutuelle.
Pour les boîtes aux lettres nommées et les sémaphores nommés, l‟amendement 1003.1j ajoute
la possibilité de borner des attentes lors des envois ou réceptions de messages, ou des demandes
de sémaphores. Par conséquent, dans ce cas, si le délai ou bien la date maximale est dépassé, la
primitive bloquante se termine en renvoyant un code d‟erreur.
- Tâches POSIX: définies dans l‟amendement POSIX.1c. Des tâches POSIX appartenant à un
processus partagent le même espace mémoire global, et se distinguent par une pile différente,
ainsi que des attributs particuliers (priorité, type d‟ordonnancement…).
62
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
Une tâche POSIX est créée par la fonction «pthread_create». Cette fonction comporte des
arguments principaux suivants: des attributs de tâche, un pointeur de fonction (cette fonction
est le code de la tâche), et un pointeur pouvant contenir le ou les arguments à passer à la
fonction.
Une tâche POSIX peut être exécutée en mode «détaché» ou «attaché». Donc, en mode
«attaché», chaque tâche s‟exécute de façon synchrone (join) avec son créateur, dans ce cas, le
créateur de la tâche attend la terminaison de celle-ci avant de continuer son exécution. Au
contraire, en mode «détaché», les tâches peuvent s‟exécuter de façon indépendante de leur
créateur (« detach state »). Il en résulte que si les tâches sont créées par la procédure principale
d‟un processus, afin d‟éviter la terminaison prématurée du processus avant la terminaison des
tâches, on pourra attacher ces tâches à la procédure principale du processus.
- Synchronisation et communication des tâches: définies aussi dans l‟amendement 1003.1c,
ce sont des outils de communication et de synchronisation entre des tâches POSIX.
Sémaphores binaires (ou mutex) : sont dédiés à l‟exclusion mutuelle. Les attributs d‟un
«mutex» permettent de choisir le protocole de gestion de ressource associé au «mutex» (soit
priorité plafond immédiate, soit priorité héritée). Les tâches en attente d‟un sémaphore sont
gérées par les files d‟attente FIFO à priorités.
Sémaphores en lecture/écriture (ou rwlocks) comportent pour chacun les deux sémaphores,
nommés «rdlock» et «wrlock», donc la fonction «pthread_rwlock_rdlock» permet de requérir le
sémaphore en lecture, alors que «pthread_rwlock_wrlock» requiert le sémaphore en écriture.
Aucun protocole de gestion de ressources n‟est défini sur les sémaphores en lecture/écriture.
Variable conditionnelle (ou pthread_cond) peuvent être utilisées conjointement avec des
«mutex» pour synchroniser des tâches. La fonction «pthread_cond_init» crée une variable
conditionnelle. Au cas où plusieurs tâches sont bloquées simultanément sur la même variable
conditionnelle, un appel à l‟équivalent de «signal(pthread_cond_signal)» ne réveille qu‟une
seule tâche bloquée sur la variable conditionnelle. Donc, on peut utiliser la fonction
«pthread_cond_broadcast» pour réveiller toutes les tâches bloquées sur une variable
conditionnelle.
Notons qu‟il est possible d‟effectuer des attentes bornées sur les instructions bloquantes des
objets de synchronisation et de communication (soit en durée, soit jusqu‟à une certaine date).
- Horloges: il existe deux types d‟horloge, appelés respectivement «CLOCK_REALTIME» et
«CLOCK_MONOTONIC». «CLOCK_REALTIME» représente le temps écoulé depuis le 1 er
Janvier 1970 à 00 h 00. Cette horloge permet de donner une date absolue à un «timer». Elle a
une résolution au pire de 20 ms, mais en fonction de l‟architecture matérielle sous-jacente, on
peut attendre une résolution de l‟ordre de la micro seconde ou de la dizaine de micro secondes.
«CLOCK_MONOTONIC» (cette horloge est optionnelle dans les implémentations) a une
propriété de monotonie: elle est modifiée par l‟horloge physique, mais ne peut pas être
modifiée par le programme. Elle permet de donner un délai Deux autres horloges peuvent
optionnellement exister: «CLOCK_CPU_TIME», donnant le temps processeur consacré à un
processus, et «CLOCK_THREAD_CPU_TIME_ID», donnant le temps processeur consacré à
une tâche.
63
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
POSIX définit les exécutifs comme étant dirigés par les événements.
4.5.b. La norme OSEK/VDX
OSEK est l‟acronyme de «Offene Systeme und deren Schnittstellen für die Elektronik im
Krafttfahrzeug», en français Systèmes ouverts et interfaces correspondantes pour l‟électronique
des véhicules automobiles. La norme OSEK/VDX est née en 1995 de la fusion d‟un consortium
de constructeurs d‟automobiles allemands et d‟un consortium de constructeurs d‟automobiles
français (VDX est l‟acronyme de «Vehicle Distributed eXecutive»). Bien qu‟initialement
conçue pour le domaine automobile, cette norme est très bien adaptée aux applications de
contrôle- ommande.
Contrairement à POSIX où tout est dynamiquement créé, la plupart des objets OSEK/VDX sont
définis de façon statique à l‟élaboration de l‟exécutif et de l‟application: tous les services
utilisés (tâches, objets de communication et de synchronisation, etc.) sont définis de façon
statique dans le langage OIL (OSEK Implementation Language). Cela entraîne une faible
empreinte mémoire, notamment des avantages indéniables en ce qui concernent les techniques
de validation. - Les tâches: Une tâche est une portion de code séquentiel. OSEK/VDX
distingue deux types de tâches, les tâches basiques et les tâches étendues.
Les tâches basiques ne peuvent pas se bloquer en attente d‟événement, de messages, de
ressource… en cours d‟exécution. Elles ne possèdent pas d‟état «en attente». Elle peut prendre
trois états différents : «passive», «prête» et «élue». Etant donné qu‟une tâche basique ne peut
être préemptée que par une tâche plus prioritaire qui se terminera forcément avant elle, il est
assez fréquent que dans l‟implémentation du système, toutes les tâches basiques soient
exécutées en utilisant une seule pile.
Les tâches étendues ont les mêmes caractéristiques que les tâches basiques avec en plus la
possibilité de se bloquer durant leur exécution. Typiquement, une tâche étendue se bloque en
attendant une synchronisation ou une ressource. Par conséquent, les tâches étendues peuvent
prendre quatre états différents, donc les trois mêmes états que les tâches basiques avec l‟état
«en attente» additionnel.
Comme dans la norme POSIX, une tâche OSEK/VDX est définie par une fonction.
Cependant, contrairement à celle-ci, elle est créée de façon statique, il n‟y a pas d‟état
«inexistante». L‟initialisation, quant à elle, est effectuée automatiquement au démarrage de
l‟exécutif.
- Synchronisation et communication des tâches:
Exclusion mutuelle : assurée par la définition de ressources (de façon statique dans le langage
OIL). OSEK/VDX fournit deux primitives, «GetResource» et «ReleaseResource» pour prendre
et vendre une ressource. Tenter de prendre une ressource non disponible a pour effet de placer
une tâche (forcément une tâche étendue) dans l‟état «en attente». Notons que chaque ressource
est gérée avec le protocole à priorité plafond immédiat afin d‟éviter l‟inversion de priorité, avec
un mécanisme pour borner la durée de blocage d‟une tâche en attente d‟une ressource.
Synchronisation par événements : synchronisations binaires de type n/1: chaque tâche étendue
est liée à un certain nombre d‟événements, qu‟elle seule peut attendre. OSEK/VDX propose
une primitive de déclenchement d‟événement («SetEvent»), une primitive d‟attente
d‟événement («WaitEvent»), et une primitive d‟effacement d‟événement («ClearEvent»). Seule
la tâche propriétaire d‟un événement a le droit de l‟attendre et de l‟effacer.
Communication par message : de type communication n/m (n émettrices, m réceptrices
possibles pour un message). Dans le cas d‟une communication de type boîte aux lettres, si un
64
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
message a m réceptrices, il est déposé dans chacune des files d‟attente de messages de
réceptrice de ce message, et il est consommé par chaque réceptrice de façon indépendante des
autres réceptrices. Dans le cas d‟une communication de type tableau noir, la lecture est non
bloquante et non destructive, et le message lu est le message le plus récemment écrit. Des
messages vides peuvent être transmis, dans ce cas-là, ils servent de synchronisation entre
tâches. En conséquence, l‟exécutif fournit trois primitives d‟envoi d‟un message:
«SendMessage» pour l‟envoi d‟un message de taille fixe; «SendDynamic-Message» pour
l‟envoi d‟un message de taille dynamique; et «SendZeroMessage» pour l‟envoi d‟un message
vide. OSEK/VDX permet de définir des messages périodiques, qui seront automatiquement
envoyés à chaque période.
Chaque message peut être muni d‟une échéance: si le message n‟est pas reçu dans le délai
imparti, une notification de violation d‟échéance est envoyée.
Horloges: de même que la norme POSIX, OSEK/VDX impose la présence d‟au moins une
horloge, mais en fonction de l‟architecture sous-jacente, plusieurs horloges peuvent être
disponibles. La gestion des horloges dans la norme OSEK/VDX est similaire à la norme
POSIX. Les «timers» sont définis de façon statique dans le fichier OIL. Il est important de
noter qu‟OSEK/VDX est un exécutif dirigé par les événements.
4.5.c. La norme Ada
Le langage Ada lui-même est une norme, supportant différentes implémentations. Les
implémentations de la norme Ada reposent sur un exécutif ou noyau, pouvant être lui-même
conforme à POSIX ou encore OSEK.
- Les tâches Ada: une tâche Ada est déclarée en deux parties: une spécification de tâche («task»),
et un corps de tâche («task body»). Une tâche peut être instanciée de façon globale ou
dynamiquement.
Lorsqu‟elle est instanciée de façon globale (en tant que variable de paquetage par exemple),
cette tâche est lancée automatiquement au démarrage du programme principal. Alors que
lorsqu‟elle est instanciée dynamiquement (une instance d‟un type tâche, ou allouée
dynamiquement par «new»), elle est lancée au moment de l‟instanciation. Les tâches Ada sont
toujours attachées automatiquement au programme principal (i.e. le programme principal ne se
termine pas tant qu‟il y a au moins une tâche encore vivante).
Communication et synchronisation: depuis Ada95, le moniteur de haut niveau (objet protégé)
est introduit. Le moniteur Ada permet d‟implémenter tout type de synchronisation et de
communication, synchrone et asynchrone. La spécification d‟un objet protégé comporte un
ensemble de primitives et une partie privée, correspondant aux variables internes du moniteur.
Il y a trois types de types de primitives:
Les procédures («procedure») sont des primitives non réentrantes par rapport aux autres
primitives de l‟objet protégé (i.e., une procédure ne peut pas avoir lieu tant qu‟une autre
primitive de l‟objet protégé est exécutée, et empèche toute autre primitive de s‟exécuter).
Elles sont non bloquantes au sens de l‟objet protégé auquel elles appartiennent, c‟est-à-dire
qu‟elles n‟intègrent pas la possibilité d‟attendre que le moniteur soit dans un certain état. Les
procédures peuvent avoir les paramètres en entrée et/ou en sortie.
Les procédures gardées («entry») sont des procédures dont l‟accès est conditionné (gardé).
65
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
Une barrière se trouve au début de chaque primitive. Si la barrière d‟une procédure gardée n‟est
pas satisfaite lors d‟un appel de cette procédure, la tâche appelante est bloquée jusqu‟à ce que
cette condition de réveil soit vraie.
Les fonctions («function») sont des primitives en lecture seule sur l‟objet protégé. Elles sont
réentrantes les unes par rapport aux autres. Cela permet d‟affiner les accès aux objets protégés
en leur donnant des primitives de type lecteur/écrivain.
La norme Ada propose le protocole à priorité plafond immédiat pour éviter l‟inversion de
priorité lors d‟accès concurrents à un objet protégé.
- Le profil Ravenscar: pour le langage Ada, une norme de développement a été proposée, sous le
nom de profil Ravenscar, normalisé par l‟ISO en 1999. La norme préconise les principes
suivants:
- pas de déclaration de tâches dynamiques: tout est déclaré au début de l‟application,
- les tâches ne se terminent pas ou alors toutes ensemble,
- toutes les tâches sont au même niveau (pas de hiérarchie mère/fille entre les tâches),
- tous les outils de communication et de synchronisation sont déclarés initialement, et pas de
façon dynamique,
- utilisation de dates et pas de durées pour les réveils de tâches périodiques, afin d‟éviter une
dérive des horloges,
- utilisation d‟un protocole de gestion de ressources à priorité plafond,
- pas d‟utilisation du rendez-vous mais uniquement des objets protégés, avec une seule primitive
de type «entry» par objet protégé, les autres pouvant être des procédures ou bien des fonctions,
- un et un seul mécanisme de déclenchement pour une tâche (attente de synchronisation, de
message ou d‟interruption, ou bien attente périodique).
4.6. Méthodes de développement d’un logiciel
Les méthodes: elles définissent le comment, c‟est-à-dire ce qu‟il faut faire pour produire un
logiciel. Chaque méthode a besoin d‟un langage pour la production d‟une spécification, et donc
à chaque méthode est attaché un langage propre.
Les outils: ils constituent le support pour les méthodes.
Les systèmes temps réel doivent produire des résultats corrects dans des intervalles de temps
spécifiés.
Si un résultat est incorrect ou arrive trop tard, un tel système est voué à l‟échec. Kopetz et al.
dans [Kop91] ont élaborées des caractéristiques principales pour une méthode de
développement d‟un système temps réel, ce sont:
Prévisibilité: la possibilité d‟une méthode de prévoir la performance de l‟architecture
matérielle, notamment l‟analyse de temps, pour assurer le respect des contraintes temporelles.
Testabilité: la possibilité d‟une méthode de vérifier l‟opération dynamique d‟un système selon
ses paramètres d‟entrée. Il s‟agit d‟indiquer à quelle fraction des scénarios du système réel
peuvent être couverts par des scénarios de test correspondant; de déterminer si le système sous
66
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
des tests s‟exécute correctement (par exemple, l‟ordre et le temps des événements,
l‟observation des actions et des sorties du système pendant le test, …); de contrôler l‟exécution
du système afin d‟assurer le déterminisme de réactions si le contexte d‟un scénario est changé.
Tolérance aux pannes: permet de réaliser la fiabilité requise d‟un service. Foncièrement, il
existe deux types d„applications temps réel: l‟un de «défaillance-arrêt» et l‟autre de
«défaillance-opérationnelle». Avec le deuxième, le système doit assurer une continuation de
l‟application dans toutes les situations opérationnelles, même s‟il y a des erreurs ou des
défaillances.
Conception de système: la possibilité d‟une méthode de pourvoir des mécanismes qui
permettent les développements simultanés de matériel et de logiciel de manière succincte et
consistante.
Décomposition systématique: une possibilité de faire décomposer graduellement un système
en des composantes qui sont faciles à comprendre et peuvent être traitées relativement
indépendamment.
Evaluabilité: avant le test l‟évaluation sur un exécutif temps réel, il est désirable d‟évaluer la
conception du système considéré. Cette caractéristique permet au concepteur de commencer
une telle évaluation le plus tôt possible dans un cycle de développement d‟un logiciel afin
d‟éviter une révision coûteuse dans la phase de test.
Il existe plusieurs méthodes pour le développement d‟un logiciel, parmi elles on peut distinguer
deux types: les méthodes se basant sur des descriptions mathématiques formelles du sens d‟un
programme donné par un langage de programmation informatique de haut niveau permettant
d‟obtenir un programme pour un ordinateur (il s‟agit des «méthode formelles»); et les
méthodes se basant sur des descriptions semi-formelles du sens des conceptions fonctionnelles
données par des diagrammes, des notations graphiques maîtrisés par les clients, et facilitant les
échanges entre clients et concepteurs.
Les méthodes formelles permettent d‟obtenir une très forte assurance de l‟absence de «bogue»
dans les logiciels. Cependant, elles sont des méthodes «constructives» et «universelles»
[Jack98]. Donc elles sont généralement coûteuses en ressources (humaines et matérielles) et
actuellement réservées aux logiciels les plus critiques.
Pour les approches semi-formelles, Shaw les a classifiées en quatre groupes principaux selon le
style de l‟architecture utilisé: l’Architecture orientée objet (focalise la décomposition d‟un
système en des objets distincts, en encapsulant leurs états et leurs opérations.
Les objets interagissent par invocation des opérations des autres); l’Architecture état-transition
(se concentre sur des états d‟un système et sur des événements qui provoquent des transitions
entre ces états); l’Architecture asservissement (une forme spéciale de diagramme de flot de
données adaptée pour des systèmes embarqués où le procédé doit s‟adapter régulièrement afin
de compenser des perturbations en provenance de l‟extérieur); et l’Architecture temps réel (se
concentre sur des système temps réel dans lesquels le respect des contraintes de temps doit être
satisfait). Les descriptions semiformelles offrent des mécanismes de structuration et de
décomposition très riches tout en proposant une représentation intuitive et synthétique du
système à construire. Mais, il n‟existe pas d‟outils associés permettant d‟analyser, de vérifier ou
de simuler, de valider de telles spécifications.
67
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
Effectivement, aucune des méthodes existantes ne qualifie tous les aspects présentés au-dessus.
En s‟apercevant que chaque méthode possède certaines caractéristiques spécifiques pour
certaine domaine d‟application, s‟il existe une méthode qui peut regrouper les caractéristiques
de chacune des méthodes existantes, la nouvelle méthode peut être qualifiée d‟un nombre
maximal des critères, et surtout ce principe peut s‟appliquer à chercher une méthode
convenable pour tous les domaines de problème ou tous les environnements de développement
à des développeurs. Saeki a proposé un modèle pour construire une telle méthode, nommée
«l‟ingénierie des méthodes» (voir Figure IV.2.m). L‟idée principale de ce modèle est la
suivante: en se basant sur la «réutilisation» des «méthodes fragmentaires», appelées «méthode
de base», les développeurs récupèrent les méthodes fragmentaires convenables d‟abord, puis
les adaptent, et les s‟intègrent à la nouvelle méthode.
68
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
69
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
d‟équilibre permet d‟appliquer une vitesse angulaire sur l‟axe de tangage. La vitesse
ascensionnelle dépend de la puissance du moteur et des angles de tangage et roulis.
70
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
considéré comme temps réel critique, puisque le fait de ne pas être capable d‟appliquer les
commandes de vol à temps peut aboutir à une perte de contrôle. La plupart des systèmes de
transport sont des systèmes embarqués de contrôle-commande, temps réel critique.
Une grande difficulté inhérente à la validation des systèmes de contrôle-commande provient du
fait que les comportements ne sont pas reproductibles :
▶ Indépendance du résultat produit par rapport à la vitesse d‟exécution. Le résultat d‟un
calcul effectué à partir de données d‟entrée similaires est indépendant de la vitesse du
calculateur. En revanche, l‟état stable d‟un procédé dépend de la dynamique du procédé par
rapport à la vitesse d‟exécution du système de contrôle-commande.
▶ Comportement reproductible. Un calcul effectué à partir de données d‟entrée identiques
donne toujours le même résultat. En revanche, dans le cas de données d‟entrée (grandeurs
physiques) obtenues par des capteurs, le système de contrôle commande travaille sur un
domaine de données réelles approximées qui sont très rarement identiques.
Cette définition des systèmes de contrôle-commande ayant été faite, nous pouvons replacer ces
systèmes par rapport aux autres systèmes informatiques en faisant trois catégories (voir figure
suivante) :
▶ Les systèmes transformationnels qui utilisent des données fournies à l‟initialisation par
l‟utilisateur. Ces données, leurs traitements et l‟obtention du résultat n‟ont aucune contrainte de
temps.
▶ Les systèmes interactifs dans le sens où les données sont produites par interaction avec
l‟environnement sous différentes formes (clavier, fichier, réseaux, souris, etc.). Mais le temps
n‟intervient pas en tant que tel si ce n‟est avec un aspect confort de travail ou qualité de service.
▶ Les systèmes de contrôle-commande ou réactifs qui sont en relation avec l‟environnement
physique réel pour les données capteur/actionneur ; l‟aspect « temps » a une place importante
sous la forme d‟un temps de réaction, d‟une échéance à respecter, etc.
Figure V.3 : Comparaison des systèmes de contrôle-commande par rapport aux autres
applications informatiques.
71
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
Nous terminons cette section par des définitions qualifiant des systèmes temps réel ayant des
spécifications particulières. Ces contraintes temporelles peuvent être de plusieurs types :
▶ Contraintes temporelles relatives ou lâches (temps réel mou : soft real-time) : les fautes
temporelles sont tolérables (Ex. : jeux vidéo, applications multimédias, téléphonie mobile…).
▶ Contraintes temporelles strictes ou dures (temps réel dur : hard real-time) : les fautes
temporelles ne sont pas tolérables (Ex. : fonctions critiques avionique, véhicules spatiaux,
automobile, transport ferroviaire…).
▶ Contraintes temporelles fermes (temps réel ferme : firm real-time) : les fautes temporelles
sont autorisées dans une certaine limite, par exemple une erreur toutes les trois exécutions au
plus.
▶ Systèmes multi-critiques : les sous-systèmes composant le système sont caractérisés par des
degrés de criticité. Par exemple en avionique civile, la DO-178C caractérise les sous-systèmes
par un niveau de criticité appelé DAL (Design Assurance Level), allant de niveau A (Ex. :
commande de vol), catastrophique en cas de défaillance, à niveau E (Ex. : divertissement en
vol), sans effet sur la sécurité.
5.1.2 Principales caractéristiques des systèmes temps réel
Considérons un exemple représentatif d‟une application temps réel de contrôle commande
représenté sur la figure V.4. Cet exemple de contrôle-commande d‟un moteur à combustion est
repris de façon détaillée dans le chapitre suivant. Le contrôle-commande de cette application
est fait par l‟intermédiaire d‟un ensemble de capteurs et d‟actionneurs (pédale d‟accélérateur,
température air, pression air, température eau, rotation vilebrequin, capteurs de pollution,
injection essence, allumage, admission air, etc.) et d‟une connexion au réseau interne à
l‟automobile.
L‟analyse de cet exemple d‟application permet de mettre en exergue les principales
caractéristiques des systèmes de contrôle-commande :
▶ Grande diversité des dispositifs d‟entrées/sorties : les données à acquérir qui sont fournies par
les capteurs et les données à fournir aux actionneurs sont de types très variés (continu, discret,
tout ou rien ou analogique). Il est aussi nécessaire de piloter un bus de terrain pour les
communications.
▶ Prise en compte des comportements concurrents : l‟ensemble de ces données physiques qui
arrivent de l‟extérieur et le réseau qui permet de recevoir des messages ne sont pas
synchronisés au niveau de leurs évolutions, par conséquent, le système informatique doit être
capable d‟accepter ces variations simultanées des paramètres.
▶ Respect des contraintes temporelles : la caractéristique précédente impose de la part du
système informatique d‟avoir une réactivité suffisante pour prendre en compte tous ces
comportements concurrents et en réponse à ceux-ci, de faire une commande en respectant un
délai compatible avec la dynamique du système.
▶ Sûreté de fonctionnement : les systèmes de type contrôle-commande mettent souvent en jeu
des applications qui demandent un niveau important de sécurité pour raisons de coût ou de vies
humaines. Pour répondre à cette demande, il est nécessaire de mettre en œuvre toutes les
réponses de la sûreté de fonctionnement (développements sûrs, tests, méthodes formelles,
72
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
73
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
74
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
commande (régulation tout ou rien, régulation du premier ordre, régulation PID, etc.). Dans le
cadre de cet ouvrage, nous considérerons ces tâches comme des boîtes noires, c‟est-à-dire que
le traitement effectué par ces tâches relève des domaines comme le traitement du signal, le
traitement d‟images ou l‟automatique, disciplines qui débordent largement le contexte de ce
cours.
▶ Tâches de gestion de l‟interface utilisateur : ces tâches permettent de présenter l‟état du
procédé ou de sa gestion à l‟utilisateur. En réponse, l‟opérateur peut modifier les consignes
données ou changer les commandes. Ces tâches peuvent être très complexes et coûteuses en
temps de calcul si l‟interface gérée est de taille importante (tableau de bord) ou de type
graphique (représentation 3D).
76
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
pour les entrées/sorties. De plus elles peuvent être liées par des relations de type (voir figure
suivante) :
▶ Synchronisation : cela se traduit par une relation de précédence d „exécution entre les tâches ;
▶ Communications : à la notion de précédence, traduite par la synchronisation, s‟ajoute le
transfert de données entre les tâches ;
▶ Partage de ressources : les tâches utilisent des éléments mis en commun au niveau du système
comme des zones mémoire, des cartes d „entrées/sorties, cartes réseau, etc. Certaines de ces
ressources, comme par exemple les zones mémoire, ne sont pas ou ne doivent pas être
accessibles, pour avoir un fonctionnement correct, par plus d „une tâche à la fois, elles sont
dites ressources critiques.
77
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
Pour mettre en avant les différences entre les deux modèles d‟exécution nous allons étudier la
situation dans laquelle la tâche « Lecture_consigne » s‟exécute et la tâche « Alarme » demande
son exécution alors que la tâche « Lecture_consigne » n‟est pas terminée.
Dans le modèle d‟exécution synchrone, la perception de l‟occurrence de tout événement par le
système est différée du temps d‟exécution de la tâche en cours.
Dans l‟exemple proposé, nous pouvons constater que la prise en compte d‟un signal d‟alerte
n‟est effective que lors de la fin de la tâche « Lecture_consigne » (voir figure 10.7). D‟un point
de vue du procédé, la réaction est perçue comme différée, alors que du point de vue du système
informatique, elle est perçue comme immédiate.
L‟occurrence des événements externes a donc été artificiellement synchronisée avec le système
informatique, d‟où le nom d‟exécution synchrone.
78
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
l‟exemple proposé, nous pouvons constater que la prise en compte d‟un signal d‟alerte est
immédiate sans attendre la fin de la tâche « Lecture_consigne » (voir figure 10.8). La prise en
compte de l‟événement « alerte » est identique pour le procédé et le système informatique.
L‟occurrence des événements externes n‟est pas synchronisée avec le système informatique,
d‟où le nom d‟exécution a synchrone.
79
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
environnement spécifique, le noyau temps réel, que nous allons décrire. Le point central de cet
environnement est l‟ordonnanceur qui permet d‟affecter à tout instant le processeur à une tâche
afin de respecter l‟ensemble des contraintes temporelles attachées à la gestion du procédé.
5.2.1.3. Exécutif ou noyau temps réel
Cet environnement particulier d‟exécution, exécutif ou noyau temps réel, peut être assimilé à
un système d‟exploitation de petite taille dédié aux applications de contrôle commande.
La caractéristique fondamentale est son déterminisme d‟exécution avec des paramètres
temporels fixés (temps de prise en compte d‟une interruption, changement de contexte entre
deux tâches, etc.). Nous pouvons comparer les différences au niveau des objectifs fixés pour le
noyau d‟exécution d‟un système informatique classique et d‟un système informatique de
contrôle-commande.
Un système classique n‟a pas été conçu pour permettre de respecter des contraintes temporelles,
mais il suit les règles suivantes :
▶ Politiques d‟ordonnancement des activités basées sur le partage équitable du processeur :
affectation identique du temps processeur à tous les processus en cours ;
▶ Gestion non optimisée des interruptions ;
▶ Mécanismes de gestion mémoire (cache…) et de micro-exécution engendrant des fluctuations
temporelles (difficulté pour déterminer précisément les durées des tâches) ;
▶ Gestion des temporisateurs ou de l‟horloge pas assez fine (plusieurs ms) ;
▶ Concurrence de l‟application temps réel avec le système d‟exploitation toujours actif ;
▶ Gestion globale basée sur l‟optimisation d‟utilisation des ressources et du temps de réponse
moyen des différents processus en cours.
Un système informatique de contrôle-commande s‟attache aux caractéristiques suivantes :
▶ Efficacité de l‟algorithme d‟ordonnancement avec une complexité limitée ;
▶ Respect des contraintes de temps (échéances…). Ces contraintes temporelles se traduisent
plus en termes de choix d‟une activité à exécuter à un instant donné plutôt que de rapidité
d‟exécution de toutes les activités ;
▶ Prédictibilité (répétitivité des exécutions dans des contextes identiques) ;
▶ Capacité à supporter les surcharges ;
▶ Possibilité de certification pour les applications de certains domaines comme l‟avionique,
l‟automobile…
En général, les contraintes temporelles ne peuvent pas être garanties dans un système
d‟exploitation généraliste (Unix, Windows 8…) contrairement à un noyau temps réel.
▶ Une application temps réel étant par définition un système multitâche, le rôle essentiel du
noyau temps réel est donc de gérer l‟enchaînement et la concurrence des tâches en optimisant
l‟occupation de l‟unité centrale du système informatique. Les principales fonctions d‟un noyau
temps réel peuvent être scindées en trois groupes :
1. gestion des entrées/sorties (gestion des interruptions, gestion des interfaces
d‟entrées/sorties, gestion des réseaux de communications…) ;
80
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
81
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
82
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
Figure V.11 : Langages utilisés pour développer les applications avec un noyau temps réel (1 :
gestion des interruptions, 2 : ordonnancement, 3 : relations entre les tâches).
Langages standards (langage C,Pascal, …) : le noyau temps réel qui supporte ce type de
langage doit être complet puisque le langage n‟intègre aucune spécificité multi tâche.
Langages multi tâches (langage Java, Ada, …) : ces langages permettent de décrire
l‟application en termes de tâches ; ainsi le noyau peut être plus réduit et ne comporter que les
deux premières fonctions.
Langages réactifs (langages Lustre, Esterel, Signal, …) : ces langages donnent non seulement
la possibilité de décrire les fonctionnalités du programme, mais aussi l‟enchainement des
différentes parties. Le noyau est donc limité à une couche proche du matériel lié notamment à
la gestion des interruptions. En revanche, étant donné la possibilité très limitée d‟expression de
l‟aspect fonctionnel, ils sont souvent associés à un langage standard pour pallier ce manque.
10.2.2 Architecture matérielle des applications de contrôle commande
Comme nous l‟avons vu ci-haut, l‟aspect matériel a une très grande importance dans les
applications de contrôle commande. Cette implication est liée d‟une part à la connexion directe
avec le monde physique réel à l‟aide d‟une grande diversité des systèmes d‟entrées/sorties et
d‟autre part au matériel informatique parfois spécifique et développé pour une application
donnée. Ce dernier point concerne les applications dites dédiées et embarquées ; le matériel a
été conçu et créé spécifiquement pour une application, comme un téléphone portable, une
caméra vidéo, etc.
83
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
Le temps de réponse d'un système de traitement d'information peut être défini comme le temps
séparant la dernière donnée saisie et la première réponse fournie, ou plus généralement comme
la période de temps passée par le système de traitement pour répondre à une demande avec une
action appropriée [Yourdon 1972]. Par analogie, on peut évaluer le temps de réponse d'un
Système Expert Temps Réel (SETR) par le temps séparant le moment de la détection d'un
événement significatif et celui de la proposition d'une solution au problème. Ainsi, en
cohérence avec la caractérisation d'un système temps réel classique, la réponse en temps réel
d'un SETR, selon Wright [Wright 1986], signifie l'élaboration d'une réponse valide à l'intérieur
du délai autorisé.
A ce niveau, il convient d'analyser la rapidité du temps de réponse (temps que le système prend
pour reconnaitre et répondre à un événement extérieur) d'un SETR suivant deux angles
différents [Tang 1989] :
1- la rapidité du temps de réponse à elle seule ne permet pas de constituer une caractérisation
suffisante d'un SETR ;
2- une diminution du temps de réponse signifie également un gain de sécurité et une
augmentation de la marge de manœuvre de l'operateur, n‟est donc clair que le temps de réponse
est une préoccupation majeure des concepteurs de systèmes experts fonctionnant en
environnement dynamique. Il convient de préciser cependant qu'un temps de réponse court
constitue une condition nécessaire mais non suffisante dans le cadre d'un système expert temps
réel. En fait, il est important de préciser ce que l'on entend par temps réel.
L'expression 'temps réel' est souvent plus facile à reconnaitre qu‟à définir, Par exemple,
personne ne pourrait dire qu'un système qui prend toute une nuit pour faire la mise-a-jour des
transactions bancaires effectuées pendant la journée est un système temps réel. Par contre, on
s'accorde de dire qu'un système qui dirige automatiquement un avion en vol en est un. Selon
O'Reilley [O'Reilly et al. 1985], il existe plusieurs définitions du temps réel.
Son sens le plus courant est suffisamment 'rapide'; ainsi, un système est qualifié de 'temps réel'
s'il traite l'information rapidement. Une autre définition répandue est qu'un système est dit
'temps réel' s'il est perceptiblement rapide ou tout au moins plus rapide qu'un être humain.
Encore mieux, un système est dit 'temps réel' s'il peut traiter l'information aussi rapidement ou
plus rapidement qu'elle ne lui parvient.
Deux définitions plus formelles peuvent également être énoncées:
1- Un système démontre des comportements 'temps réel' s'il est possible de prévoir sa réaction
suffisamment rapidement pour l'utilité du processus en cours [Marsh et Greenwood 1986] ;
2- Un système démontre des comportements 'temps réel' s'il existe une limite stricte de temps à
l'intérieur de laquelle il doit avoir produit une réponse sans se soucier de l'algorithme employé
[O'Reilly et al. 1985].
Le temps de réponse est donc la plus importante mesure des applications temps réel. La
caractéristique qui définit Ie mieux un système temps réel est son habilite h garantir une
84
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
réponse après qu'un intervalle fixe de temps, faisant partie de la définition du problème, se soit
écoulé [Laffey et al. 1988].
6.2. Caractéristiques des SETR
Contrairement aux systèmes experts 'classiques', pour pouvoir raisonner (être à l'écoute de son
environnement extérieur), un Système Expert Temps Réel (SETR) devra lire des données via
des dispositifs capteurs, De cette nouvelle caractéristique découle plusieurs problèmes
complexes qui devront être résolus par les chercheurs [Laffey et al. 1988] :
la non-monotonie des données (les données provenant des capteurs, de même que les faits
qui en sont déduits, ne restent pas fixes pendant tout le fonctionnement du programme);
le problème de la continuité (certains SETR doivent continuer de fonctionner aussi
longtemps qu'ils ne sont pas arrêtés par un opérateur ou un événement externe);
les événements asynchrones (dans certains SETR, il peut arriver que des événements se
produisent d'une manière aléatoire, un SETR doit pouvoir être interrompu et accepter des
données suite A un événement non planifie ou asynchrone);
la recherche d'une haute performance (connaissant la limitation des performances
d'applications en intelligence artificielle, le problème de contrôler des systèmes complexes
en répondant rapidement à des données changeantes représente un goulot d'étranglement
critique lors de l'application des systèmes experts au domaine du temps réel);
les données incertaines ou manquantes (la validité des données peut être altérée dans le
temps, un SETR doit pouvoir reconnaitre et traiter de façon appropriée ces données);
le raisonnement temporel (un SETR doit pouvoir raisonner sur le passé, le présent et le
futur en suivant l'ordre dans lequel les événements se produisent);
la focalisation sur un événement important (ceci peut impliquer l'apport d'une nouvelle
source de connaissance (spécialiste), une modification de l'ensemble des capteurs utilisés à
cet instant par le système et possiblement un changement de la vitesse d'échantillonnage de
ces capteurs);
le temps de réponse garantie (le système doit pouvoir répondre au moment où une réponse
est attendue
et il doit produire la meilleure réponse possible avant l'échéance.
l'intégration à des procédures temporelles (un SETR doit être intègre avec un logiciel temps
réel conventionnel qui effectuera certaines taches comme la compression des données et les
opérations d'entrée et sortie).
6.3. Les applications des SETR
Selon Turner [Turner 1986], la principale raison d'utiliser un système expert est de réduire les
efforts de raisonnement des utilisateurs ou de leur permettre d'augmenter leur productivité sans
pour autant augmenter leurs efforts de raisonnement Certains indicateurs permettent de savoir
si un système expert serait approprié dans une situation donnée (spécialement si les techniques
plus conventionnelles ont échoué ou ne sont pas utilisables). Parmi ces indicateurs, il y a ceux
qui sont relatifs aux situations de résolution de problèmes demandant un raisonnement trop
complexe, ainsi que ceux ou l'être humain ne peut pas tenir compte de toute l'information
disponible. Il en va de mène des situations relatives aux contraintes conflictuelles, ainsi que
celles qui induisent des couts élèves ou qui ne pourraient pas donner une solution à un
problème assez rapidement [Laffey et al. 1988].
85
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
Un système expert opérant dans une situation ou il doit traiter de l'information en temps réel va
typiquement devoir répondre à un environnement changeant, caractérisé par un flot
d'événements asynchrones, des besoins changeant dynamiquement et des limitations sur le
temps, le matériel ainsi que d'autres ressources. Une architecture logicielle flexible sera donné
nécessaire pour permettre au système de réagir face à des données changeant continuellement à
travers des plages de temps stricts tout en permettant un raisonnement temporel, Ie traitement
des interruptions et des méthodes pour le traitement des bruits de fond.
Les SETR se distinguent donc des autres systèmes par un couplage plus étroit avec le monde
extérieur et par des contraintes plus sévères de délais d'exécution [Nussbaumer 1986]. On
comprend donc tout de suite, comme nous l'avons déjà vu, que les SETR utilisent une variable
supplémentaire très importante lors de leur interaction avec le monde extérieur à savoir le
temps.
Un des traits de définition des systèmes temps réel (ne pas confondre avec système expert
temps réel) est que la valeur d'un résultat calcule dépend du moment à partir duquel ce résultat
est effectivement utilise, ce qui veux dire que les temps de calcul doivent être strictement
prévisibles,
Les systèmes experts, d'un autre côté, sont orientes spécifiquement vers des applications pour
lesquelles il n'existe aucun algorithme polynomial de temps, ce qui fait que les temps de calcul
sont habituellement imprévisibles et très variables.
Schoppers définit donc les systèmes experts temps réel (ou plus précisément les systèmes
experts de contrôle temps réel) comme étant des programmes informatiques dont l'implantation
doit inévitablement tenir compte de cinq ressources principales:
la puissance de traitement: le nombre d'opérations effectuées par seconde ;
le temps de réponse: le temps réel nécessaire pour répondre aux changements de valeur de
chacune des variables contrôlées par le système ;
l'espace de données: la capacité mémoire nécessaire pour emmagasiner le programme et
toutes ses données ;
le degré d'inattention: le degré à partir duquel l'information pertinente et les calculs sont
sous-utilisés ;
la dégradation: le degré de diminution de l'efficacité du programme par rapport à sa situation
optimale.
6.4. Méthodologie de conception et de développement des SETR
Il est question dans cette partie de parler de la méthodologie de conception et de développement
d‟un système expert Temps réel.
Un Système expert temps réel est un système qui est :
en relation directe avec l‟environnement ;
reçoit les informations du monde réel ;
traite ces informations ;
évalue une décision ;
agit sur son comportement extérieur pour atteindre un état stable.
86
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
87
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
7. Maintenir le système
88
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
Ces étapes ne sont pas forcément utilisées de façon linéaire. On parle souvent de cycles de vie,
qui ont pour but d‟organiser ces étapes de différentes manières en fonction d‟un certain nombre
de critères relatifs au projet de développement.
a) Analyse des besoins
Les besoins analysés dans un projet de système expert temps réel sont les suivants :
Les entrées : l‟acquisition des grandeurs par des capteurs (senseurs) telles que la
température, la vitesse, l‟humidité, la lumière, etc.
Les sorties : la commande de l‟environnement par les actionneurs (moteurs, vérins,
régulateurs, etc.)
Les traitements : la mise à jour des sorties en fonction des entrées pour
contrôler/commander un processus physique
Les communications : partager des données avec les systèmes de contrôle (commande
voisins)
Les sauvegardes des états pour des reprises d‟exploitation ou des analyses du système à
priori
a1) Les tâches d’entrées
Acquérir une grandeur physique n‟est pas trivial, car il y a :
- Un grand nombre de techniques d‟acquisition (vitesse : analogie, 2 signaux carrés à 90°,
rapport cyclique asymétrique, radar doppler, etc.)
- Un grand nombre de traitements associés :
Interrupteur : gérer les rebonds ;
Poussoir : ne pas rater une impulsion ;
Clavier : multiplexage binaire, analogique ;
Grandeurs continues : plages de valeurs, granularité ;
Données prétraitées : format, médium, retard, latence.
Exemple :
89
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
Exemple :
Le système anti-blocage des roues, plus connu sous l'abréviation « ABS » (de l'allemand «
Antiblockiersystem »), est un système d'assistance au freinage utilisé sur les véhicules roulants,
limitant le blocage des roues pendant les périodes de freinage intense.
C‟est une fonction secondaire dans le système de contrôle de traction, utilisée sur les avions
(lors de l'atterrissage) et sur les véhicules automobiles ou motocyclettes, où elle fait de plus en
plus partie de l'équipement standard. D'autres termes sont également utilisés ou recommandés
comme « antiblocage de sécurité », « système de freinage anti-blocage », « freins anti-
blocage », ou « système d'antiblocage de roues ».
a4) les tâches d’interface utilisateur : elles permettent de gérer un pupitre de commande.
90
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
a.5) Les tâches de communication : ce sont des tâches destinées à échanger de l‟information
entre les tâches sur les systèmes centralisés ou distribués selon des contraintes à la fois
logicielles et matérielles.
Les bus industriels : Modbus, Fip, SPI, I2C, CAN,
La téléphonie, Ethernet, GSM, Wifi, ZigBee…
a.6) Les tâches de sauvegarde : elles permettent d‟enregistrer régulièrement les états du
système pour :
Analyser son fonctionnement ;
Améliorer les performances ;
Analyser les erreurs ;
Reprises et mises en route.
b) La conception du système : Elle permet de faire le choix d‟architecture (une architecture
mono-tâche ou une architecture multitâche). L‟architecture multitâche est la plus utilisée, elle
permet de bien mettre en œuvre l‟ensemble des tâches préalablement définies, en garantissant :
Synchronisation : Précédences d‟exécution entre tâches
Transferts de données : Communication entre tâches
Partage des ressources : Ressources critiques communes à l‟ensemble des tâches
Deux modèles sont utilisés : synchrone et asynchrone.
b1.) Enchaînement des tâches modèle d’exécution synchrone
Les principes établis dans le cas d‟enchainement des tâches suivant le modèle d‟exécution
synchrone sont :
- Les événements émis par le procédé peuvent être différés ;
- Les événements sont perçus comme immédiats par l‟informatique ;
- Les événements externes sont synchronisés avec les tâches.
On est donc dans le cas non préemptif avec ordonnancement a priori, d‟où le recours au
séquenceur.
91
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
c) L’implémentation de l’application
Comme nous l‟avons dit précédemment, Les langages de développement des systèmes experts
de contrôle-commande ou temps réel, sont très divers. Cependant, par rapport à
l‟environnement d‟exécution nous avons décrit (noyau temps réel) avec les trois fonctions
décrites :
1. gestion des interruptions,
2. ordonnancement,
3. Relation entre les tâches s), il est possible de décliner les langages en trois groupes (voir
figure ci-dessous) :
92
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
Figure : Langages utilisés pour développer les applications avec un noyau temps réel (1 :
gestion des interruptions, 2 : ordonnancement, 3 : relations entre les tâches).
On peut résumer ces étapes sous la forme du schéma ci-après représentant le développement
par étapes :
93
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
94
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
95
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
96
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
En quelques chiffres :
• Prix d'une carte Arduino uno = 25 euros
• Logiciel = 0 euros
• Support et assistance = 0 euros (forums)
2. La « philosophie »
L'idée est d'utiliser la carte Arduino comme un macro-composant dans des applications de
prototypage électronique. Le concepteur n'a plus qu'à développer des interfaces et programmer
le macrocomposant pour réaliser son application !
Les avantages de la carte Arduino :
• Elle ne coûte pas cher !
• L‟environnement de programmation est clair et simple.
• Elle est multiplateforme: elle tourne sous Windows, Macintosh et Linux.
• Elle possède de nombreuses librairies disponibles avec diverses fonctions implémentées.
•le logiciel et le matériel sont open source et extensibles.
• Nombreux conseils, tutoriaux et exemples en ligne (forums, site perso etc...)
• Existence de « shield » (boucliers en français) : ce sont des cartes supplémentaires qui se
connectent sur le module Arduino pour augmenter les possibilités comme par exemple :
afficheur graphique couleur, interface ethernet, GPS, etc...
Par sa simplicité d'utilisation, Arduino est utilisé dans beaucoup d'applications comme
l'électronique industrielle et embarquée, le modélisme, la domotique mais aussi dans des
domaines différents comme l'art contemporain ou le spectacle !
3. La carte Arduino uno
Il existe plusieurs types de cartes, j'ai commencé avec une carte Arduino uno (carte basique,
aux dimensions voisines de celle d'une carte bancaire).
97
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
5. Les « shields »
Il existe de nombreux shields que l'on traduit parfois dans les documentations par «boucliers ».
Personnellement, le terme « extension » me paraitrait plus approprié. Un « shield » Arduino est
une petite carte qui se connecte sur une carte Arduino pour augmenter ses fonctionnalités.
Quelques exemples de « shields » :
Afficheur graphique
Ethernet et carte SD
98
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
GPS
Carte de prototypage (type labdec) etc…
6. Développement d'un projet sur Arduino
Le développement sur Arduino est très simple :
On code l'application : Le langage Arduino est basé sur les langages C/C++, avec des
fonctions et des librairies spécifiques à Arduino (gestions des e/s).
On relie la carte Arduino au PC et on transfert le programme sur la carte,
On peut utiliser le circuit !
Le logiciel de programmation des modules Arduino est une application Java multiplateformes
(fonctionnant sur tout système d'exploitation), servant d'éditeur de code et de compilateur, et
qui peut transférer le firmware (et le programme) au travers de la liaison série (RS232,
Bluetooth ou USB selon le module).
Le logiciel est très simple à prendre en main, il existe de très bons tutoriaux très bien faits avec
même des explications en français. De très nombreux exemples sont fournis.
Les fichiers exemples sont vraiment bien documentés et permettent de coder des choses très
compliquées sans trop d'efforts. Les bibliothèques fournies permettent d'utiliser des composants
complexes très simplement en quelques lignes très claires (afficheur ou liaison SPI etc..).
99
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
100
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
101
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
L'interface de l'application, définie selon la technique des tampons homogènes dans le temps se
déroule plusieurs étapes, Quatre tampons sont utilisés selon la technique 'round robin'
permettant ainsi de préserver l'historique des données (voir figure suivante):
102
Prof. Dr. Batubenga Mwamba Nz. J.D.
Cours de Système Expert et Temps réel, L2 Informatique
La méthodologie utilisée pour développer Ie système d'aide à la conduite est basée sur la
méthodologie KADS [Hickman et al. 1989] pour Ie développement de systèmes à base de
connaissances (SBC). Ayant pour assises les méthodologies de développement de systèmes
conventionnels, KADS présente un ensemble de modification permettant de prendre en compte
les difficultés propres au développement de SBC. Ainsi, la phase d'analyse est-elle divisée en
trois composantes: l'analyse externe, l'analyse interne et l'analyse des modalités. Ces trois
activités se déroulent en parallèle et en étroite interaction.
L'analyse externe a pour objectif l'identification des besoins de l'utilisateur ou du client et les
contraintes imposées par l'environnement d'utilisation du système. Le produit livrable de cette
activité est Ie modèle des besoins. L'analyse interne concerne Ie processus d'acquisition des
connaissances : extraction, interprétation, analyse et modélisation des connaissances écrites et
verbales. La méthodologie KADS utilise une approche de modélisation basée sur l'utilisation de
modèles d'interprétation, Ces derniers décrivent les caractéristiques prototypiques des
principales tâches de résolution de problèmes auxquels on fait appel dans les SBC (par
exemple: Ie diagnostic, Ie contrôle, la planification). Ces modèles génériques servent de cadre à
l'analyse de la connaissance. Le résultat de cette analyse prend la forme d'un modèle d'expertise
à quatre niveaux, basé sur une typologie de la connaissance d'après Ie rôle que cette dernière
peut jouer dans Ie processus de résolution de problèmes. Dans ce modèle, on retrouve Ie
modèle générique instancié avec les connaissances du domaine.
L'analyse des modalités concerne la relation utilisateur-système en rapport avec les taches qui
doivent être réalisées au cours d'une session d'utilisation. On s'y attache à définir qui (de
l'utilisateur ou du système) fait quoi (les taches et sons-taches) et quand (déclenchement des
taches).
103
Prof. Dr. Batubenga Mwamba Nz. J.D.