Informatique industrielle A7-19571Informatique industrielle A7-19571
SystèmesSystèmestemps-rétemps-réelel
J.F.PeyreJ.F.Peyre
Partie I : Introduction
PlanPlandedelalapremièrepremièrepartiepartie
n Quelques définitions n Caractéristiques communes des applications temps-réel n Exemples d’applications temps-réel n Le choix d’un langage de développement n Le choix d’un système ou d’un exécutif temps-réel n Conclusion
DéDéfinitionfinition
n Un système temps réel est un système (application ou ensemble d'applications) informatique qui doit répondre à des stimuli fournis par un environnement externe afin de le contrôler
n La correction d'un tel système dépend non seulement de la justesse des calculs mais aussi du temps auquel est fourni la réponse (contraintes temporelles)
n Les ressources utilisées pour mener à bien les calculs et sont en nombre limité (contraintes matérielles)
ClassificationClassification
n Temps réel dur (hard real-time) : le non respect des contraintes temporelles entraîne la faute du système
– e.g. contrôle de trafic aérien, système de conduite de missile,
n Temps réel souple (soft real-time) : le respect des échéances est important mais le non respect des échéance ne peut occasionner de graves conséquences
– e.g. système d'acquisition de données pour affichage
n Temps réel ferme (firm real-time) : temps réel souple mais où il n'y a aucun intérêt à avoir du retard ou temps réel dur pour lequel quelques échéances peuvent être occasionnellement manquées – e.g. projection vidéo
Classification (suite)Classification (suite)
n Il ne faut pas confondre contrainte temporelle (qui dépend de l'application et de l'environnement) et rapidité de traitement (qui dépend de la technologie utilisée)
n Un système temps-réel inclut généralement différents soussystèmes chacun pouvant avoir ses propres contraintes temporelles (dures, souples ou fermes)
Structure : Boucle ouverteStructure : Boucle ouverte
Structure : Boucle ferméStructure : Boucle ferméee
Caractéristiques communes desCaractéristiques communes des applications temps-réapplications temps-réelel
Large, complexe et fiableLarge, complexe et fiable
n Un système temps réel interagit avec un environnement extérieur souvent complexe et en évolution
n Il doit pouvoir interagir avec différents types d'éléments matériels n Il doit respecter des échéances temporelle n Il doit garantir une fiabilité importante
Utilisation du temps concretUtilisation du temps concret
n Au sein d'une application ou d'un système temps-réel if faut pouvoir manipuler le temps concret (horloge) n Le temps réel (ou temps concret) sera utilisé de plusieurs façons:
– Soit en définissant la date à laquelle une action doit être commencée
– Soit en définissant la date à laquelle une action doit être finie
n Il peut être nécessaire de pouvoir modifier ces paramètres en cours d'exécution et de pouvoir préciser les actions à prendre en cas de faute temporelle
DéDécoupé coupé en en tâtâches ches ou ou en en processusprocessus concurrentsconcurrents
n Dans le monde réel les périphériques et l'environnement du système évoluent simultanément (en parallèle ou concurrence)
n Si l'on veut réduire la complexité de conception et calquer fidèlement la réalité il faut s'appuyer sur de la programmation concurrente :
– utiliser un modèle de tâches
– utiliser des moyens de communication et de synchronisation inter tâches ou inter-process (mémoire partagée, boites aux lettres, files de messages, moniteurs, )
DéDécoupé coupé en en tâtâches ches ou ou en en processusprocessus concurrents (suite)concurrents (suite)
n Le modèle utilisé en programmation des systèmes temps réel est un modèle basé sur la concurrence (applications concurrentes)
n L'exécution de ces application se fait généralement dans un environnement mono-processeur
n On "simule" l'exécution concurrente des processus par la mise en ouvre du pseudo-parallélisme : le parallélisme est apparent à l'échelle de l'utilisateur mais le traitement sur le processeur (unique) est fait séquentiellement en tirant profit des entrées/sorties réalisées par les processus
DéDécoupé coupé en en tâtâches ches ou ou en en processusprocessus concurrents (suite)concurrents (suite)
Respect Respect des des échéances échéances temporellestemporelles
n La limitation des ressources (en particulier du processeur) conduit à bloquer des processus (ils ne peuvent progresser du fait de manque de ressource)
n Afin de respecter en permanence les échéances, il faut gérer efficacement la pénurie et tenter de favoriser les processus dont l'avancement est le plus "urgent »
n Un ordonnancement consiste à définir un ordre sur l'utilisation des ressources du système afin de respecter les échéances temporelles
Respect Respect des des échéances échéances temporellestemporelles ((suitesuite))
n On appelle ordonnanceur (scheduler) le processus système qui gère l'ordonnancement des processus
n Un algorithme d'ordonnancement est une méthode ou stratégie utilisée pour ordonnancer les processus
n Un tel algorithme s'appuie sur la connaissance de certaines caractéristiques des processus ou du système
– procesus périodiques ou apériodiques;
– processus cyclique ou non cyclique;
– préemption possible ou pas;
– échéance et pire temps d'exécution des processus
– système à priorité fixe ou à échéance
Respect Respect des des échéances échéances temporellestemporelles ((suitesuite))
n Deux algorithmes classiques d'ordonnancement
– RTM (RaTe Monotonic) : algorithme à priorité fixe pour processus cycliques (le processus le plus prioritaire est celui de plus petite échéance)
– EDF (Earlest Deadline First) : algorithme à priorité dynamique pour processus cycliques (le processus le plus prioritaire est celui de plus petite échéance)
n L'ordonnanceur choisit d'exécuter le processus prêt de plus haute priorité
n Au sein d'une même classe de priorité, le choix peut se faire par temps partagé (Round Robin) ou par ancienneté (gestion FIFO)
Exemples d'applications temps-rExemples d'applications temps-rééelel
Un système embarquéUn système embarqué
Système de contrôle de débitSystème de contrôle de débit
| Lecture du débit | Calculs | Ordre de position de la vanne | |
Temps
Le choix d'un langage deLe choix d'un langage de développementdéveloppement
Familles de langages possiblesFamilles de langages possibles
n Trois sortes de langages peuvent être identifié dans le contexte du développement d'applications temps réel
– les langages assembleurs
– les langages séquentiel liés à des librairies système
– les langages concurrents de haut niveau
Les langages de type « assembleur »Les langages de type « assembleur »
n Historiquement, ces langages furent longtemps les seuls à être utilisés dans ce contexte
n Dépendant par nature de l'architecture cible (matériel et système d'exploitation)
n Aucune abstraction possible et grande difficulté de développement, de maintenance et d'évolution
-> Langages à proscrire sauf pour l'implémentation de petites fonctionnalités très spécifiques et apportant une grande amélioration des performances
Les langages séquentielsLes langages séquentiels
n Introduits pour remédier aux problèmes dûs au codage en assembleur n Les plus connus sont le C, le C++ ou encore le Fortran
n Apporte un plus grand pouvoir d'abstraction et une certaine indépendance du matériel
n Mais, doit faire appel à des librairies systèmes spécifiques pour la manipulations des processus
-> Ces langages posent le problème de la standardisation des appels systèmes mais sont quelques fois le seul choix possible à cause de la spécificité d'une cible et des outils de développement sur celle-ci
Les langages concurrentsLes langages concurrents
n Langages généralistes incluant de plus la notion de tâches et des primitives de synchronisation
n Haut pouvoir d'abstraction, indépendance des architecture et des systèmes cibles (ou très peu dépendant)
n Parmi ces langages, Ada est sans doute le langage le plus abouti mais des restrictions de Java peuvent être utilisés à profit dans le développement d'applications/systèmes temps réel
-> Langages à privilégier lorsque d'autres contraintes (manque de formation, reprise de code existant, coopération inter-équipes/ ou inter entreprises, ) ne rendent pas la chose impossible
Langages choisis dans ce coursLangages choisis dans ce cours
n Ada comme exemple de langage concurrent de haut niveau
n C avec l'utilisation de bibliothèques respectant la norme
Posix 1003.1c (initialement 1003.4)
LeLechoixchoixd'und'unsystèmesystèmeououd'und'unexécutif temps réelexécutif temps réel
Système d'exploitation temps-rSystème d'exploitation temps-rééelel
n Caractéristique d'un système d'exploitation
– approche généraliste
– supporte généralement plusieurs types d’applications simultanément
– interaction par appels système
– peu dépendant du domaine d'applications visé généralement de taille plus importante qu'un exécutif
ExécutifExécutiftemps-réeltemps-réel
n Caractéristique d'un exécutif
– système spécialisé
– dédié à une application spécifique (système embarqué)
– collection de primitives
-> plus spécialisé qu'un système d'exploitation code de taille plus petite qu'un système classique
ExempleExemplededeSystèmeSystèmed'exploitationd'exploitationtempstempsréelréel
n RT-Linux : basé sur du code libre, extension de Linux ()
n Lynx-OS : système Unix à base de thread noyau
() compatible avec Linux n QNX : système Unix ()
n Windows CE : système Microsoft temps réel
()
Exemple de d'exécutif temps réelExemple de d'exécutif temps réel
n VxWorks et pSos : Exécutif de Wind river () n VRTX : n mu-cos :
ConclusionConclusion
Les systèmes ou applications temps-réel sont
– Complexes
– Font intimement intervenir le temps dans leur conception
– Ont des besoins de fiabilité importants
– Généralement décomposés en sous-systèmes avec des tâches ou des processus qui interagissent
– Doivent être implémentés avec des langages appropriés
– Doivent être exécutés sur des systèmes ou des exécutifs adaptés
Vocabulaire Vocabulaire ((petit Robertpetit Robert))
n Contrôler: (XXe) maîtriser; dominer; avoir sous sa surveillance; soumettre à une régulation n Contrôleur: appareil de réglage, de contrôle; activité de contrôle
n Concurrent: emprunté (1119) au latin concurrens, participe présent de concurre (-> concourir), proprement « courir de manière à aller vers le même point », « se rejoindre », puis employé en droit pour « prétendre à la même chose en même temps » avec l’idée de compétition; qui concourt au même but avec le sens néanmoins de compétition
n Concurrence: rivalité entre plusieurs personnes, plusieurs forces, poursuivant un même but;