Vous êtes sur la page 1sur 49

Programmation Synchrone

Systèmes Temps Réel


Introduction

Ouassila Labbani-Narsis
1 ouassila.labbani@u-bourgogne.fr
Organisation et plan du cours

Organisation
 3 CM (6h), 1 TD (2h) et 2 TP (8h)
 Un contrôle de TD/TP + un partiel

Plan
Introduction
⚫ Rappel sur les systèmes temps réel
⚫ Systèmes réactifs critiques et approche synchrone
Le langage Lustre
⚫ Sémantique et description détaillée du langage
Vérification formelle de programmes Lustre
⚫ Techniques de vérification formelle
⚫ Utilisation de Lesar, un model-checker pour Lustre
Rappel sur le temps réel

Qu’est-ce que le temps réel?


Le terme temps réel est employé pour désigner le
temps physique

Le temps réel permet de décrire l’environnement


extérieur
Système temps réel
Définition générale : (CNRS 1988)
Peut être qualifiée de "temps-réel" (ou "temps contraint", ou
encore "réactif") toute application mettant en œuvre un système
informatique dont le fonctionnement est assujetti à l'évolution
dynamique de l'environnement qui lui est connecté et dont il doit
contrôler le comportement
Rythme de l'interaction

données

Environnement
Système mesures
(ex : une chaîne de
informatique production, une
événements
réaction chimique…)

temps de réponse imposé par la


dynamique de l'environnement commandes
Système informatique temps réel

Système informatique temps réel


Un système informatique temps réel reçoit des informations sur
l’état du procédé extérieur, traite ces données et, en fonction de
son état interne et du résultat, évalue une décision qui agit sur
cet environnement extérieur dans de sévères contraintes de
temps afin d’assurer un état stable.
Système informatique temps réel

Caractéristiques
Le comportement d’un système temps réel dépend, non seulement
de l'exactitude des traitements effectués, mais également du
temps où les résultats de ces traitements sont produits

➔ Le temps réel entre donc dans le critère de correction des


applications

➔ Un retard est considéré comme une erreur qui


entraîne de graves conséquences
Système informatique temps réel

Caractéristiques
Un système temps réel ne possède pas les propriétés classiques
des programmes séquentiels (Indépendance du résultat produit par
rapport à la vitesse d’exécution et comportement reproductible)

Un système temps réel doit :


⚫ Respecter les contraintes temporelles (temps de réponse court)
⚫ Prendre en compte les comportements concurrents
(parallélisme)
⚫ Prendre en compte une grande diversité des dispositifs
d’entrées/sorties
⚫ Assurer la sûreté de fonctionnement
⚫ Etre prévisible
Système informatique temps réel

Prévisibilité (predictability)
L’un des aspects importants des systèmes temps réel est la
prévisibilité 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
➢ La prévisibilité est ce qui permet de déterminer à l’avance si un
système va respecter ses contraintes temporelles
Système informatique temps réel

Déterminisme
Le déterminisme est le but que l’on cherche à atteindre afin de
prédire le comportement temporel d’un système temps réel : 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
Système informatique temps réel

De manière générale …
Le système temps réel est un système en interaction
continue avec son environnement

Il peut être modélisé par un système qui se compose d'un


processeur central et de périphérique d'entrées/sorties
(capteurs, actionneurs)
Système informatique temps réel

Système embarqué temps réel


Si l'intervention humaine directe est impossibles, on
parle de systèmes embarqués

La connaissance a priori du comportement de tels


systèmes est essentielle

Un système embarqué temps réel est un système


informatique dans lequel le processeur est englobé
dans un système plus large et/ou le logiciel est
entièrement dédié à une application donnée
Système informatique temps réel
Exemples :
⚫ Baladeur MP3, navigateur GPS, téléphonie mobile, modem ADSL
⚫ Chaîne HI-FI, téléviseur, lecteur/enregistreur DVD
⚫ DAB, guichet automatique
⚫ Métro automatique, train, avion, satellite
⚫ Centrale nucléaire, plateforme pétrolière
Coût de développement d’un
logiciel critique

Plus une erreur est détectée tard dans le cycle de


développement, plus elle est coûteuse à corriger

Comment concevoir de tels systèmes ?


Coût de correction d’une erreur
Exemple de mauvaise
compréhension catastrophique
(CNN) -- NASA lost a $125
million Mars orbiter because
one engineering team used
metric units while another
used English units for a key
spacecraft operation.

For that reason, information


failed to transfer between
the Mars Climate Orbiter
spacecraft team in Colorado
and the mission navigation
team in California.
Catégories de systèmes temps
réel
Les systèmes temps réel peuvent se classer, selon
le respect des contraintes temporelles, en trois
catégories :

➢ Temps réel dur ou critique (hard real time)


➢ Temps réel ferme (firm real time)
➢ Temps réel mou ou souple (soft real time)

La distinction entre les trois est une notion assez floue


Catégories de systèmes temps
réel
Temps réel dur ou critique (hard real time)
Un résultat arrivant en retard provoque un accident fatal au
système. C’est aussi un système dans lequel certaines
échéances ne doivent en aucun cas être dépassées.
⚫ La réponse du système dans les délais est vitale
⚫ L’absence de réponse est catastrophique

Exemples : contrôle aérien, centrale nucléaire…


Catégories de systèmes temps
réel
Temps réel ferme (firm real time)
Réduction progressive de l’intérêt d’un résultat arrivant en
retard pour le système. L’arrivée exceptionnelle après
échéance d’un événement attendu ne mettra pas le système
en danger (erreur)
⚫ La réponse du système dans les délais est essentielle. Le
résultat ne sert plus a rien une fois le deadline passe.

Exemple : transactions en bourse, …


Catégories de systèmes temps
réel
Temps réel mou ou souple (soft real time)
Un résultat arrivant en retard n’a plus d’importance pour le
système. C’est aussi un système dans lequel le dépassement
occasionnel des échéances ne met pas le système en
difficulté.
⚫ Les pénalités ne sont pas catastrophiques.

Exemple : logiciel embarqué du téléphone portable, …


Systèmes temps réel critique

Un système critique est un système dont la panne


peut avoir des conséquences dramatiques, comme des
morts ou des blessés graves, des dégâts matériels
importants, ou des conséquences graves pour
l'environnement
Particularités des systèmes
critiques
⚫ Relation permanente avec d’autres entités
 Capteurs, horloges, utilisateur, environnement, …

⚫ Gestion des entrées erronées


 Valeurs aberrantes
 Erreurs dues à l’environnement

⚫ Souvent complexes
⚫ Les performances (temps d’exécution) font partie de
l’analyse de l’exactitude du système
⚫ Recours à des outils et méthodes de conception
spécifiquement adaptées
Ennemi numéro 1 : le bug
Si on les laisse faire les bugs poussent plus vite que la
loi de Moore!

As soon as we started programming, we found to our surprise


that it wasn’t as easy to get programs right as we had thought.
Debugging had to be discovered.
I can remember the exact instant when I realized that a large
part of my life from then on was going to be spent in finding
mistakes in my own programs.
Maurice Wilkes, 1949
Comment éviter les bugs?

De la vérification, encore et toujours


⚫ Mais peut-on vraiment en faire plus?
De meilleures techniques de design
⚫ Modèles de calcul plus simples
⚫ Spécifications formelles lisibles par tous les acteurs
De meilleurs outils
⚫ Exécution immédiate des spécification, maquettes
virtuelles, … ➔ modèles de haut niveau
⚫ Génération automatique des circuits et codes
embarqués
⚫ Vérification formelle des propriétés critiques
Besoins fondamentaux des
systèmes
⚫ Parallélisme
 Implicite en théorie du contrôle, audio/vidéo, …
 Très utile pour les GUIs, le calcul, …
 Quel degré de parallélisme ? Physique vs logique

⚫ Déterminisme
 Implicite en CC et FSMs
 Qui voudrait d’une voiture ou d’un avion non-déterministe ?
 Peut être relâché pour certains cas: Web, lecture MP3, …

⚫ Distribution
 Séparation des fonctions et liaisons
 Localisation des informations
 Redondance pour supporter les pannes
Différents types de systèmes
Classification des systèmes
Problématique
Accroissement exponentiel de la complexité des
systèmes informatiques

⚫ Besoin de réduire les coûts de développement


⚫ Besoin de réduire le temps de mise sur le marché
⚫ 3 catégories de systèmes informatiques [Harel & Pnueli 85]
 Systèmes transformationnels
 Systèmes interactifs
 Systèmes réactifs ou temps réel

⚫ Besoin de modèles et langages bien adaptés pour la


communication, la synchronisation, le parallélisme, …
Système transformationnel

⚫ Programme classique basé sur des structures de


données complexes et des algorithmes
⚫ Effectue des calculs à partir des données en entrée
pour produire des résultats en sortie
⚫ En cas de terminaison, le résultat est unique
⚫ Absence de terminaison indésirable
⚫ Exemples : calcul de trajectoire, traitement d’image, …
Système interactif
et système réactif
⚫ Fonctionnent en réagissant aux différents stimulis de
l’environnement
→ Interaction continue avec l’environnement
⚫ Produisent des résultats à chaque invocation
⚫ Les résultats sont en fonction des données fournies
par l’environnement et de l’état interne du système
⚫ Le résultat n’est pas forcément unique

⚫ Absence de terminaison souhaitable


⚫ Programmation parallèle, systèmes embarqués
Système interactif
⚫ La prise en compte des requêtes et la production de
réponses se font à l’initiative du système
⚫ Le système impose son propre rythme
⚫ Système asynchrone (réponse non immédiate)
⚫ Exemples : systèmes d’exploitation, internet, …
Système réactif
⚫ Le système doit fournir une réponse immédiate quand
l’environnement le sollicite
⚫ L’évolution d’un système réactif est une suite de
réactions provoquées par l’environnement
⚫ Chaque réaction est considérée instantanée
→ système à événements discrets
⚫ Système synchrone (actions atomiques)
⚫ Exemple : contrôleur de robot, jeu vidéo...
Fonctionnement schématique
d’un Système réactif

⚫ Environnement : interface avec le monde physique,


opérateur humain, autres systèmes réactifs...
⚫ Programme : un logiciel particulier, sur un système
d’exploitation et une architecture particuliers ...

Beaucoup de problèmes !!
On se concentre sur la fonctionnalité du système
Système réactif temps réel

Temps réel ??
⚫ Les E et les S alternent dans le temps

⚫ Le programme répond à Ei avant que n’arrive Ei+1


⚫ Le programme ne rate aucun changement significatif
Système réactif temps réel
Temps réel et fonctionnalité
Fonctionnalité: le programme calcule les bonnes sorties
⚫ Dépend essentiellement de la conception
Temps réel: le programme calcule assez vite…
⚫ Dépend aussi de l’architecture matérielle
⚫ Relatif à l’environnement considéré :
 Quelques dixièmes de seconde pour un humain
(ex. 25 images/seconde = temps-réel pour un œil humain)
 Quelques millièmes de seconde pour certains processus
physiques

⚫ N.B. Les contraintes temps réel sont fournies par un


spécialiste du domaine
Système réactif temps réel

➔On s’intéresse essentiellement à la fonctionnalité du


système réactif (et donc au soft)
On veut garantir…
Déterminisme :
⚫ Une séquence d’entrées donnée produit toujours la même
séquence de sorties

Mémoire bornée :
⚫ On doit calculer les sorties avec une mémoire finie, allouée à
l’avance (caractéristique essentielle des systèmes embarqués)

Conséquence immédiate :
⚫ Si est parfaitement déterminée par la séquence E1,E2,…Ei
i.e. i Si = (E1,E2,...,Ei)
Fonctionnalité d’un système
réactif
La fonctionnalité de tout système réactif est
(virtuellement) définie par :
 ses entrées/sorties (E, S)
 sa mémoire interne (M), avec sa valeur initiale M0
 sa fonction de sortie :
Si = f(Mi,Ei)
 sa fonction de transition :
Mi+1 = g(Mi,Ei)

N.B. en général, les calculs de f et g sont mélangés


dans une seule procédure (cf. l’exemple)
Réalisation d’un programme
réactif simple
Identifier ...
⚫ Les entrées E, les sorties S
⚫ La mémoire interne nécessaire M, avec sa valeur
initiale M0

Définir ...
⚫ La fonction de sortie Si = f(Mi,Ei)
⚫ La fonction de transition Mi+1 = g(Mi,Ei)
⚫ N.B. identique aux circuits dit séquentiels

Puis implémenter le tout par un programme


Réalisation d’un programme
réactif simple
Exemple:

Temps-réel ??
Temps de calcul < Temps de réaction de l’environnement
Système réactif complexe
Découper le problème
⚫ Gros système : beaucoup d’entrées/sorties
⚫ Conception mono-bloc impossible
⚫ Solution classique : conception parallèle et
hiérarchique

⚫ Fonctionnement attendu : chaque sous-système se


comporte localement comme un système “temps-réel”
Parallélisme de description

⚫ Le parallélisme peut être imposé (système


réparti)…
⚫ … ou seulement logique (parallélisme de
description) i.e., l’architecture est centralisée

On se place dans le dernier cas: mono-processeur

➔ Comment implémenter un système complexe?


Difficultés de la programmation
temps réel
D'où vient la difficulté liées à la dimension du temps ?
Asynchronisme :
⚫ Indépendance des processus les uns par rapport aux
autres et par rapport à l'environnement
➔ pas de temps global
➔ les actions ont une durée souvent non déterministe
➔ il est nécessaire de synchroniser les processus (rendez-
vous, sémaphore,...)

Problème : La concurrence est non-déterministe


➔ programmes plus complexes
➔ notions temporelles difficilement maîtrisables
Durée ([delay(n) ; delay(p)]) > durée (delay(n + p))
Durée ([delay(n) // delay(p)]) > durée (delay(max(n, p)))
Difficultés de la programmation
temps réel
⚫ Le caractère asynchrone du monde concret peut
présenter des difficultés pour la programmation des
systèmes temps réel "finis"

⚫ Il faudrait :
➔ Renforcer le contrôle,
➔ Corréler les temps d'exécution avec le temps réel,
➔ Rendre la sémantique déterministe

Accroissement de la complexité des langages et des


méthodes de programmation !

➔ Le problème vient du temps (comportement


temporel non déterministe)
➔ La solution Synchrone
Approche synchrone
Objectif :
⚫ Faciliter les raisonnements temporels
Principe de simultanéité au lieu de l'entrelacement
Toutes les activités parallèles partagent la même
échelle de temps qui est discrète

⚫ Concilier les avantages


d’une conception modulaire et parallèle
du déterminisme et de l’aspect temps-réel de
l’implémentation mono-bloc
Hypothèse synchrone
Idéalement (conception)
⚫ Communication non bloquante en temps nul (diffusion
synchrone)
⚫ Réaction en temps nul
⚫ Composition triviale : 0 + 0 = 0 (modularité “idéale”)
⚫ En particulier, les sorties sont simultanées aux entrées
⚫ D’où un temps logique discret (le rythme des entrées)
Hypothèse synchrone
Concrètement (exécutable)
⚫ Réaction simple (pas d’itération non bornée) et mémoire
bornée :
➔ il existe une borne au temps de réaction
➔ évaluable pour un couple soft/hard donné

⚫ Soit max un majorant des i (pour l’implémentation


considérée),
⚫ Soit min un minorant des i (cf. le spécialiste du domaine)
⚫ l’hypothèse synchrone est valide si max < min
Hypothèse synchrone

⚫ Les stimuli externes sont synchronisés par rapport aux tâches


⚫ Un nouvel événement d’entrée ne peut arriver avant la fin de la
réaction en cours
Le synchronisme fort
Les langages synchrones ont été définis pour
décrire des systèmes de processus qui interagissent
entre eux = des systèmes réactifs
Ces langages dits “réactifs” sont fondés sur
hypothèse du synchronisme fort qui considère qu’un
système réagit instantanément à tout stimuli issus de
l’environnement
Cela revient à considérer :
 Les temps d’exécution et de communication sont nuls
 Les actions d’un système de processus sont instantanées
 Les sorties sont synchrones avec les entrées et se déroulent
aux instants où elles ont été sollicitées
 Le système est inactif entre deux sollicitations
Le synchronisme fort
Temps d'exécution et de communication nuls
➔ Abstraction des temps d'exécution et de communication réels
⚫ Au niveau des programmes (niveau abstrait), on fait "comme
si" le programme s'exécute en un temps nul
⚫ Vérification au niveau de la machine (niveau concret) que
l'hypothèse est valide

Monde concret
i1 i2 i3
Temps abstrait
I1 I2 I3
Temps concret
o1 o2 o3
O1 O2 O3
Mise en défaut de
I1 I2 I3 l'hypothèse
synchrone forte
Monde abstrait
Temps concret

O1 O2
Les langages synchrones
Principes communs
⚫ Conception avec un temps logique discret (synchronisme)
⚫ Communication synchrone idéale
⚫ Parallélisme de description
⚫ Génération de code simple et efficace

Différents styles
⚫ Flot de données déclaratif :
 Textuel (Lustre, Signal, Lucid,…), ou graphique (Scade)
 Style de programmation inspiré des “block-diagrams”

⚫ Impératif séquentiel :
 Textuel (Esterel, SL), ou graphique (SynchCharts)
 Style de programmation inspiré des systèmes de transitions
(machines de Moore/Mealy)
Synchronisme fort ➔ Déterminisme
⚫ Les propriétés précédentes font que l’indéterminisme
est levé et que les actions peuvent s’exécuter
simultanément
⚫ Les langages synchrones sont linéaires et permettent
le vrai parallélisme
➔ On parle de déterminisme du langage
Notons que l’hypothèse de synchronisme nécessite que
le temps de réaction du système (à travers l’exécution
de ses processus) soit plus petit que l’intervalle de
temps qui sépare l’envoi de deux sollicitations, ou stimuli

Vous aimerez peut-être aussi