Problème à signaler:


Télécharger Cours gratuit Informatique industrielle pdf



★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:



Informatique industrielle A7-19571Informatique industrielle A7-19571

Systèmes Systèmes temps-rétemps-réelel

J.F.PeyreJ.F.Peyre

Partie I : Introduction

Plan Plan de de la la première première partiepartie

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

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

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)

Les ressources utilisées pour mener à bien les calculs et sont en nombre limité (contraintes matérielles)

ClassificationClassification

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,

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

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)

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)

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

Un système temps réel interagit avec un environnement extérieur souvent complexe et en évolution



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

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

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

Dans le monde réel les périphériques et l'environnement du système évoluent simultanément (en parallèle ou concurrence)

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)

Le modèle utilisé en programmation des systèmes temps réel est un modèle basé sur la concurrence (applications concurrentes)

L'exécution de ces application se fait généralement dans un environnement mono-processeur

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

La limitation des ressources (en particulier du processeur) conduit à bloquer des processus (ils ne peuvent progresser du fait de manque de ressource)

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 »

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))

On appelle ordonnanceur (scheduler) le processus système qui gère l'ordonnancement des processus

Un algorithme d'ordonnancement est une méthode ou stratégie utilisée pour ordonnancer les processus

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))

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)

L'ordonnanceur choisit d'exécuter le processus prêt de plus haute priorité

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

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  »

Historiquement, ces langages furent longtemps les seuls à être utilisés dans ce contexte

Dépendant par nature de l'architecture cible (matériel et système d'exploitation)

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

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

Apporte un plus grand pouvoir d'abstraction et une certaine indépendance du matériel

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

Langages généralistes incluant de plus la notion de tâches et des primitives de synchronisation

Haut pouvoir d'abstraction, indépendance des architecture et des systèmes cibles (ou très peu dépendant)

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

Ada comme exemple de langage concurrent de haut niveau

C avec l'utilisation de bibliothèques respectant la norme

Posix 1003.1c (initialement 1003.4)

Le Le choix choix d'un d'un système système ou ou d'und'un exécutif temps réelexécutif temps réel



Système d'exploitation temps-rSystème d'exploitation temps-rééelel

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écutif Exécutif temps-réeltemps-réel

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

Exemple Exemple de de Système Système d'exploitation d'exploitation tempstemps réelréel

RT-Linux : basé sur du code libre, extension de Linux ()

Lynx-OS : système Unix à base de thread noyau

() compatible avec Linux n QNX : système Unix ()

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))

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

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



Concurrence : rivalité entre plusieurs personnes, plusieurs forces, poursuivant un même but;



404