Cours Temps Réel [© tv 2003] Définition Caractéristiques Domaines d’application Temps réel soft et hard Temps de réponse Déterminisme Ordonnancement Temps partagé Modes d’ordonnancement Préemption Interruption Multitâche Taches périodiques et apériodiques Horloge temps réel Caractéristiques et performances temporelles Temps Réel
Définition 1967 : introduction du multitâche avec la technique de partage du temps (time-sharing). 1970 :première apparition du terme temps réel (coïncide avec l’apparition des microprocesseurs dans l’environnement industriel). « Un système fonctionne en Temps Réel s’il est capable d’absorber toutes les informations en entrée avant qu’elles soient trop vielles pour l’intérêt qu’elles présentent et de réagir à celles-ci suffisamment vite pour que cette réaction est un sens » (ABRIAL – BOURGNE). « Un résultat juste, mais hors délai, est un résultat faux ». Temps Réel
Caractéristiques Pour commander un environnement industriel, il faudra respecter les contraintes de temps. Le temps d’exécution d’une tâche doit être connu et non soumis à des variations liées à la charge du système. De nos jours, un calculateur embarqué signifie implicitement calculateur temps réel embarqué. Au niveau logiciel, on distingue : l’exécutif Temps Réel (le noyau) et l’application Temps Réel (les tâches). Exemples d’OS Temps Réel : LynxOs, OS9, MTR86, RT-RTAI LINUX, pSOS, VRTX, VxWorks, QNX, … Temps Réel
Domaines d’application système de commande et de contrôle de processus industriels système de contrôle aériens systèmes embarqués dans les avions, navettes spatiales, etc … gestion des stations spatiales système de défense surveillance médicale intensive coordination des collectivités mixtes robots-humains gestion automatique du trafic et du transport urbain le multimédia les systèmes de télécommunication ... etc ... Temps Réel
Temps réel soft et hard Le terme « temps réel » peut prendre des significations très différentes suivant les applications. Cependant, la littérature informatique définit généralement uniquement deux types : les systèmes temps réel soft (mou) et hard (dur). Un « système temps réel soft » se caractérise par la possibilité d’accomplir une tâche qui, en moyenne, est exécutée selon un planning prédéterminé. L’affichage vidéo est un bon exemple, où la perte occasionnelle de frames ne causera pas de dégradation perceptible du système, délivrant une performance moyenne demeurant acceptable. Bien que des techniques comme l’interpolation puissent être employées pour compenser les frames manquantes, le système demeure « temps réel soft », car les données réelles sont manquantes et les frames issus de l’interpolation sont des dérivés et non les données réelles. L’incorporation de « temps réel hard » garantit le timing, ne peut pas manquer les délais limites et doit avoir des temps de latence liés. Comme les deadlines ne sont jamais manqués, un système temps réel hard ne peut pas utiliser le cas moyen des performances pour compenser le pire. Un exemple de système temps réel hard est fourni par la gestion des transducteurs d’un réacteur nucléaire, lequel doit utiliser un système de contrôle numérique complexe, afin d’éviter les désastres… Temps Réel
Temps de réponse Pour fournir une réponse, un système doit reconnaître, traiter et sortir un résultat. Le temps de réponse TR est le suivant : TR = Tcalcul + TE/S L'apparition d'un phénomène implique l'exécution d'une action effective au plus tard dans un délai TR appelé temps de réponse. Il convient de considérer : les valeurs ou les ordres de grandeur de TR ; la possibilité ou non de choisir TR ; les répercussions sur le système du non respect de la contrainte TR. Temps Réel
Temps de réponse (suite) Il faut relativiser la notion temps réel car tous les systèmes n'ont pas les mêmes exigences : le temps de réponse des STR peut aller de quelques dizaines de µs pour les systèmes radars à quelques heures pour des systèmes de surveillance de réactions chimiques (voire plusieurs années dans des systèmes utilisés en astronomie). Il existe globalement deux situations : les systèmes transactionnels où l'on a une tolérance statistique (pour le non respect des contraintes de temps). la commande de processus où les respect d'un délai de réponse TR doit être garanti dans tous les cas sous peine de voir une dégradation ou un effondrement du système. Temps Réel
Déterminisme Un système sera dit "déterministe" lorsque le temps maximal qu'il mettra pour traiter une tâche quelconque sera connu et déterminé à l'avance. Il convient de considérer les différents niveaux constituant le système : au niveau processeur : le déterminisme est total. au niveau de l'exécutif : il sera déterministe si son temps de réponse est indépendant de sa charge. au niveau du système : il sera déterministe s'il est capable de répondre à une requête et la traiter en un temps maximum indépendant de l'environnement extérieur. Temps Réel
Ordonnancement (scheduling) C’est une notion fondamentale des systèmes multitâches et des systèmes temps réel (STR). Plusieurs tâches peuvent se trouver en concurrence pour obtenir l’UC. La tâche de plus grande priorité est exécutée en premier. Les tâches restantes seront sélectionnées à tour de rôle par l’ordonnanceur (scheduler). L’ordonnanceur (scheduler) doit : assurer la gestion des tâches de l’état bloqué à l’état prêt (ou éligible) effectuer le choix de la tâche élue (en exécution) parmi les tâches éligibles. Les critères de sélection de l’algorithme sont : garantir à chaque tâche un temps processeur ; respecter un ordre de priorité entre tâches ; respecter un temps de réponse donné ; permettre la préemption. Temps Réel
Temps partagé (time sharing) Le temps partagé consiste à découper le temps processeur en tranches (time - slice) et à attribuer séquentiellement ces tranches aux différentes tâches (multiplexage temporel du µP). Le découpage en tranches de temps est géré à partir d’un circuit d’horloge fonctionnant en IT. Le choix de la durée (quantum de temps Q ou time-slice) peut être délicat (valeur courante pour un système de type Unix: 10 ms). Temps Réel
Modes d’ordonnancement (scheduling) L’ordonnanceur d’un OS POSIX (LynxOs ou Linux RT) propose 3 modes de fonctionnement : SCHED_FIFO : lorsqu’un processus devient prêt, il est exécuté immédiatement. Le scheduler choisit d’élire le processus possédant la plus grande priorité et l’exécute. Le scheduler n’interrompra l’exécution que dans trois cas : un autre processus de type SCHED_FIFO possédant une priorité plus élevée passe à l’état prêt, il est alors exécuté (préemption) ; le processus se suspend dans l’attente d’un événement ; le processus abandonne volontairement le temps processeur par un appel yield. Le processus passe alors à l’état prêt et le scheduler prend la main. SCHED_RR (Round – Robin) : lorsqu’un processus devient prêt, il est exécuté immédiatement. Il lui est attribué un quantum de temps. Lorsque le quantum expire, un processus de priorité supérieure ou égale peut être choisi et exécuté. Le mode round – robin est aussi appelé priorité tournante. SCHED_OTHER : ce mode est différent suivant les systèmes. Pour Lynx, un quantum de temps fixe est défini par niveau de priorité. Temps Réel
Préemption La préemption est un des outils mis en œuvre pour assurer l'aspect déterministe d'un système. La préemption se définit comme la réquisition du processeur pour l'exécution d'une tâche et d'une seule pendant un temps déterminé. Un ordonnancement statique à base de priorités peut se dérouler de deux façons distinctes : ordonnancement sans préemption : lorsque le processeur est inactif, la tâche prête de plus haute priorité sera choisie pour être exécutée. Une fois choisie, elle s'exécute jusqu'à ce qu'elle se termine ou rende le processeur. ordonnancement avec préemption : lorsque le processeur est inactif, la tâche prête de plus haute priorité sera choisie pour être exécutée. A chaque instant cette tâche peut être préemptée (remplacée) par n'importe quelle tâche plus prioritaire qui serait devenue prête. Temps Réel
Interruption Rôle: prendre en compte des évènements externes au processeur (asynchrones) La prise en compte d'une interruption provoque l'arrêt du programme en cours et l'exécution d'un programme associé à cette IT. La gestion des IT est une caractéristique essentielle d’un exécutif TR : le masquage des interruptions est un autre moyen propre à assurer un certain déterminisme et intervient au niveau processeur. Temps Réel
Multitâche Un exécutif temps réel reprend tout ce qui caractérise un système multitâche : exécution concurrente de tâches ; synchronisation et communication entre tâches, ... etc ... La qualification "temps réel" n'implique pas forcément l'ajout de fonctionnalités logicielles supplémentaires par rapport à un système multitâche, mais plutôt l'adoption de stratégies différentes : le déterminisme et la préemption. Temps Réel
Tâches périodiques et apériodiques Une tâche périodique peut donc être exécutée une fois par période T et elle peut être synchrone avec une horloge temps réel. Une tâche périodique sera hors-délai si sa périodicité n'est pas respectée. Une tâche apériodique est en général associée à un événement asynchrone (une interruption) et doit être traitée dans un délai maximum à ne pas dépasser. Temps Réel
Horloge temps réel L'horloge temps réel est utilisée précisément pour : déclencher périodiquement des tâches quand celles-ci ont été mises en place ; gérer le temps partagé entre les tâches (round robin) ; connaître le temps écoulé depuis une certaine action ; gérer les timeout des primitives RT. A chaque TIC de l'horloge, l'ordonnanceur est invoqué, il appelle une tâche horloge de plus haute priorité qui effectue les actions suivantes : décrémentation d'une unité le compteur pour chaque tâche suspendue sur un timeout mise en file des tâches prêtes si le compteur de la tâche est arrivée à zéro lancement des tâches attachées à un mode périodiques La notion de temps est généralement exprimée en TIC d'horloge (éventuellement en ns). Temps Réel
Caractéristiques et performances temporelles (1) Pour réduire les surcharges de fonctionnement et afin d'accélérer le système, le noyau d'un STR doit avoir les caractéristiques suivantes : une rapide commutation de contexte ; une petite taille (avec des fonctionnalités minimales) ; temps de réponse rapide aux interruptions ; un temps réduit où les IT sont inhibées ; gérer les partitions de mémoire (pas de mémoire virtuelles) ; avoir la possibilité de verrouiller dans la mémoire des données ou du code ; Temps Réel
Caractéristiques et performances temporelles (2) Afin de satisfaire les exigences de temps, le noyau doit : disposer d'une horloge temps réel ; être doté d'un ordonnanceur de tâches par priorité ; disposer des fonctions de blocage de tâches sur un délai et de déblocage à la fin du délai (temporisation) ; En général, le noyau intègre : le multitâche la communication et synchronisation inter tâches. Temps Réel
Caractéristiques et performances temporelles (3) Les performances temporelles d'un RTOS dépendent évidemment des performances du RTOS lui même mais aussi de la plate-forme matérielle sur lequel il fonctionne et des procédures de tests et de mesures. On retrouve généralement les deux critères suivants : la réponse à une interruption la commutation de tâche D'autres facteurs temps influent également sur les performances de l'exécutif : temps maximum de masquage des IT dans l'exécution des primitives temps de réarmement d'une interruption temps d'exécution de certaines primitives. Temps Réel
Caractéristiques et performances temporelles (4) Il convient de noter qu'un exécutif temps réel n'est pas seulement caractérisé par son aspect déterministe mais aussi par ses outils de développement, des librairies, de la portabilité, ... Il faut tout de même considérer que les performances d'un STR ou d'une application temps réel sont souvent inversement proportionnelles à leur convivialité et à leur portabilité. Temps Réel