introduction programmation temps réel

download introduction programmation temps réel

of 35

Transcript of introduction programmation temps réel

  • 7/28/2019 introduction programmation temps rel

    1/35

    INTRODUCTION LA

    PROGRAMMATION TEMPS REL

    POLYCOPI D U COURS PTR

    Prof. Yann Thoma

    HEIG-VD2010

  • 7/28/2019 introduction programmation temps rel

    2/35

  • 7/28/2019 introduction programmation temps rel

    3/35

    Chapitre 1Introduction la programmation temps rel

    1.1 Quest-ce que la programmation temps rel ?

    UN SYSTME temps rel est un systme informatique devant rpondre des stimuli de

    lenvironnement en tenant compte de contraintes de temps. Le comportement correctdun tel systme ne dpend donc pas uniquement des rsultats fournis, mais galementde la date laquelle ces rsultats sont communiqus. Un calcul correct mais tardif sera

    considr comme faux, si les contraintes temporelles du systme sont strictes.Par opposition aux systmes temps rel, un systme informatique standard est dit transformationnel.Une application de bureautique standard tournant sur un PC est un systme transformationnel. Lesdonnes y sont traites, sans que le temps ncessaire ce traitement ne soit crucial.Un systme temps rel typique sera dcompos en tches, chaque tche tant responsable de lagestion dune partie du systme. La figure 1.1 illustre linteraction qua un tel systme avec sonenvironnement, dans le cas dune tche de contrle. Nous pouvons noter que certains systmesnauront pas proprement parler de systme de gestion des sorties vers lenvironnement. Les sortiespourront effectivement tre un fichier restant interne au systme informatique.

    Figure 1.1 Systme temps rel pour une tche de contrle

    Systme decontrle

    Gestion desentres

    Gestion dessorties

    Environnement

    Systmetemps rel

    La dfinition donne par Abrial-Bourgne dfinit bien ce quest un systme temps rel :

    Un systme fonctionne en temps rel sil est capable dabsorber toutes les informationsdentre sans quelles soient trop vieilles pour lintrt quelles reprsentent, et parailleurs, de ragir celles-ci suffisamment vite pour que cette raction ait un sens. [6]

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    4/35

    1.2 CHAPITRE 1. INTRODUCTION LA PROGRAMMATION TEMPS REL

    Et ladage suivant devra tre gard en mmoire :

    Un rsultat juste mais hors dlai est un rsultat faux.

    Le fait quun rsultat soit faux de par son arrive tardive peut tre extrmement critique et mme

    dangereux. Un exemple typique est un pilote automatique dans un avion. Un tel systme pourraittre dcompos en une tche responsable de rcuprer les valeurs de diffrents capteurs (altitude,vitesse, ...), une tche responsable de calculer la puissance fournir aux racteurs ainsi que lesangles des empennages, et une dernire tche responsable des actuateurs (arrive de carburant, em-pennages). Si une mesure des capteurs est effectue rgulirement, que les donnes sont transmises la tche de calcul, qui ensuite transmet ses rsultats la dernire tche, il serait judicieux que ceprocessus ne prenne pas un temps trop important. En effet, 300km/h lors dun atterissage, une se-cond dinattention pourrait tre fatale. Dans ce cas, les tches doivent avoir des dlais stricts, et cesdlais doivent absolument tre respects pour que le fonctionnement global soit considr commecorrect, un fonctionnement anormal pouvant avoir des consquences dsastreuses.Cet exemple peut montrer quil faut que le systme effectue son traitement le plus rapidement

    possible. Mais attention ne pas tomber dans le pige : Un systme temps rel nest pas un systmequi effectue du calcul de manire rapide. En effet, les systmes que nous traiterons doivent fournirles rsultats dans un temps bien spcifique, mais celui-ci peut tre long. La rapidit nest pas uncritre, par contre la fiabilit, lie au respect de contraintes temporelles, en est un.Les dlais de systmes temps rel peuvent effectivement tre trs lches, mais extrmement sen-sibles des dpassements de dlai. Le tableau 1.1 montre des exemples dordres de grandeur detemps, dans les systmes informatiques.Durant ce cours de programmation temps rel, nous allons tudier des algorithmes permettant das-surer la bonne marche dun systme temps rel, et notamment voir pourquoi aller vite ne suffit pas.Nous verrons galement quil est trs dlicat dtre sr quun systme a t correctement conu,et quil est possible quun tel systme fonctionne pendant longtemps avant quune faute ne puisse

    survenir. Afin de garder lesprit ce type de mauvaise surprise, le tableau 1.2 liste quelques loistires de [4] particulirement adaptes au contexte du temps rel. Noubliez pas de vous y rfrerlorsquun systme qui a fonctionn pendant plusieurs minutes, heures, ou jours, vient subitementde dcider de crasher.

    1.2 Proprits attendues

    Les systmes temps rel sont des systmes devant respecter les contraintes de temps imposes. Apriori, le code de chacune des tches composant un tel systme est connu. Il peut donc tre analysen termes de temps dexcution, ressources ncessaires, et dpendance envers dautres tches. Lesproprits suivantes devraient tre respectes :

    Gestion du temps. Les rsultats doivent tre corrects, non seulement en termes de valeur, mais ga-lement termes de temps darrive. Le systme doit garantir que les tches se terminent dans lesdlais impartis, en respectant les contraintes de temps imposes.

    Conception pour stress. Un systme temps rel ne doit pas succomber lorsquil est soumis unecharge importante. Des scnarios mettant en avant des charges limites doivent tre anticips, ettests.

    Predictibilit. A chaque dcision lie lordonnanement des tches, le systme doit tre capablede prdire les consquences de son choix. Il doit pouvoir dire si les tches sont ordonnanables, etsi tel est le cas proposer un ordonnanement. Sil nest pas possible de grer lensemble de tches,des actions coordonnes doivent tre prises afin de ne pas compromettre le fonctionnement dusystme.

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    5/35

    1.2. PROPRITS ATTENDUES 1.

    Temps Exemple

    nanosecond - O(ns) Temps daccs une RAM (5-80ns)Dure entre deux ticks dhorloge dun processeur Pentium

    (1GHz)Frquence de 1GHz (109Hz)

    microseconde - O(s) Traitement dans un noyau de systme dexploitation (chan-gement de contexte, interruption matrielle)Systmes utilisant des radars (navigation, dtection demouvement, etc.)Transmission sur des bus de terrain, transmission radioFrquence de 1 MHz (106 Hz)

    milliseconde - O(ms) Temps daccs un disque dur SCSI ou IDE (5-20 ms)La dure dchantillonnage du son, protocoles de tlcom-municationFrquence de 1 KHz (103 Hz)

    seconde (s) - O(s) Systmes de visualisation humain (temps durant lequelloeil peut "intgrer" 25 images au plus)Applications multimdiaTemps de rponse des applications informatiques (accsDB, compilation, etc.)Frquence de 1 Hz

    Lheure (h) - O(h) Applications de surveillance de ractions chimiques, sur-veillance de donnes mtorologiques

    Le mois, lanne - O(m, a) Systmes de navigation de sonde spatiale

    Tableau 1.1 Ordres de grandeur de temps

    Tolrance aux fautes. Un systme de contrle critique (p. ex. dans un avion) doit tre tolrant auxfautes logicielles et matrielles. Les composants utiliss doivent donc tre conu pour tre tol-rants aux fautes.

    Maintenance. Comme tout systme informatique, larchitecture dun systme temps rel doit trepens de faon modulaire, afin que des modications du systme puissent tre ralises facilement.

    1.2.1 Prdictibilit

    Alors quun systme informatique standard ne fait que traiter des donnes, le systme temps reldoit garantir que les contraintes de temps seront respectes. Lors de lattribution du processeur telle ou telle tche, le systme doit obligatoirement connatre le temps dexcution de chacune destches. Ceci ncessite de connatre plusieurs lments :

    Le code crit par le programmeur La structure du noyau du systme dexploitation La structure du processeur et de ses priphriques

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    6/35

    1.4 CHAPITRE 1. INTRODUCTION LA PROGRAMMATION TEMPS REL

    Murphys General Law

    If something can go wrong, it will go wrong.

    Murphys Constant

    Damage to an object is proportional to its value.

    Naesers Law

    One can make something bomb-proof, not jinx-proof.Troutman Postulates

    1. Any software bug will tend to maximize the damage.

    2. The worst software bug will be discovered six months after thefield test.

    Greens Law

    If a system is designed to be tolerant to a set of faults, there will alwaysexist an idiot so skilled to cause a nontolerated fault.

    Corollary

    Dummies are always more skilled than measures taken to keep themfrom harm.

    Johnsons First Law

    If a system stops working, it will do it at the worst possible time.

    Sodds Second Law

    Sooner or later, the worst possible combination of circumstances willhappen.

    Corollary

    A system must always be designed to resist the worst possible combina-tion of circumstances.

    Tableau 1.2 Lois de Murphy relatives aux systmes temps-rel.

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    7/35

    1.2. PROPRITS ATTENDUES 1.

    Programmation

    Le code dune tche devant tre excute dans un contexte temps rel doit tre particulirement bienconu. Nous notons ici trois lois quun dveloppeur devrait respecter :

    Absence de structures de donnes dynamiques. Les langages de haut niveau permettent dalloueret de dsallouer dynamiquement de la mmoire lors de lexcution. Toutefois ces oprations sonttrs lourdes en termes de temps processeur, et ne peuvent aisment tre bornes en temps. Dslors il est trs dlicat dvaluer le pire temps dexcution dune tche excutant une allocationmmoire. Si des allocations dynamiques sont ncessaires, elles devraient tre faites au lancementdu systme, mais pas durant son excution courante.

    Absence de rcursion. Les appels rcursifs devraient tre vits, car, si la profondeur de rcursionnest pas connu a priori, le temps ainsi que les ressources ncessaires ne pourront tre borns.

    Boucles bornes en temps. Le nombre ditrations des boucles devrait tre born, afin de pouvoirestimer leut temps dexcution. Si tel nest pas le cas, il est impossible destimer le temps dex-cution dune tche.

    Appels systme

    En analysant le code crit par le programmeur, il semble tre possible destimer le pire temps dex-cution. Un des problmes vient des diffrents appels systme, lautre type de problme tant li la structure matrielle du processeur. Les appels systmes font appel des librairies, et permettentpar exemple une tche dallouer de la mmoire, dcrire/lire dans des fichiers, afficher des infor-mations sur un cran, communiquer via un port Ethernet ou un port srie, ou se synchroniser avecdautres tches. Ces diffrents appels systme, vus par le programmeur, restent des appels desfonctions de haut niveau. Le noyau du systme dexploitation se charge du traitement des requtes,et ce traitement dpend grandement du systme dexploitation cible. Toutes les fonctions appelesdevraient tre analyses afin de mieux dfinir le temps dexcution dune tche.

    Gestion de la mmoire

    Le systme dexploitation est responsable de la bonne gestion de la mmoire (pagine, segmen-te). Le concept de mmoire virtuelle, que lon trouve utilis dans tous les systmes dexploitationstandards, permet de mieux protger les processus, et doffrir aux processus limpression quils dis-posent dune quantit de mmoire plus importante que la quantit de mmoire physique rellementprsente. Ce concept puissant a toutefois un dsavantage en termes de temps dexcution. Les accsmmoires y sont plus lents, et surtout une faute de page ncessite un temps de traitement trs im-portant. Une faute de page pouvant intervenir nimporte quand, il est ds lors impossible de prdirele temps dexcution dune tche si la mmoire virtuelle est active.

    Un systme temps rel doit donc viter dutiliser le concept de pagination tel quil existe dans lesOS standards.

    Verrous/Smaphores

    Nous verrons plus loin le concept de verrous et de smaphores. Les verrous servent protger uneressource critique afin dviter que deux tches ny accdent en mme temps. A titre dexemple,un fichier est une ressource critique pour laquelle il nest pas possible de voir deux tches y criredes donnes en mme temps sous peine de corruption de fichier. Lutilisation de verrous dans uncadre temps rel pose le problme de linversion de priorit, que nous verrons galement plus loin.Ce problme peut tre rsolu par diffrents algorithmes (hritage de priorit, priorit plafonne,

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    8/35

    1.6 CHAPITRE 1. INTRODUCTION LA PROGRAMMATION TEMPS REL

    allocation de ressource base sur une pile) qui doivent tre implments dans le noyau. Les fonctionsdaccs aux verrous et aux smaphores doivent donc tre adaptes pour pouvoir donner des garantiessur le temps dexcution des tches.

    Interruptions

    Les interruptions sont gnres par les priphriques dun systme informatique. Un port de com-munication peut ainsi per exemple signaler que des donnes sont prtes, et quune application peutdonc les rcuprer pour les traiter. Les interruptions sont gnralement traites de manire priori-taire sur les autres tches. Le problme lie au temps rel vient du fait quil est en gnral impossiblede savoir quand ses interruptions peuvent survenir, ni quel sera leur frquence. Afin de grer tout demme les priphriques, trois alternatives peuvent tre proposes :

    1. Toutes les interruptions peuvent tre masques, pour tre sr quaucune delle ne viendra

    interfrer avec le droulement des tches. Linterfaage des priphriques est ainsi laiss ausoin des tches, qui doivent aller rgulirement vrifier ltat des priphriques et agir enconsquence. Lobservation des priphriques se fait donc par scrutation, ce qui oblige leprocesseur tre oisif lorsquil est en attente dune entre. De la puissance de calcul estalors perdue chaque fois quune tche doit attendre quil se passe quelque chose sur unpriphrique.

    2. Toutes les interruptions sont masques, lexception du timer. Une routine du noyau est alorsappele rgulirement et vrifie ltat des diffrents priphriques. Si un priphrique voit sontat modifi, la routine averti alors la tche attendant les donnes y relatives. Cette approchepermet de grer les priphriques avec une tche priodique borne, qui peut sans autre treprise en compte lors des choix dordonnanement. Du temps est tout de mme perdu par la

    scrutation active des priphriques par cette tche.3. Une troisime alternative propose dautoriser les interruptions, mais de ne placer que du code

    minimal dans les routines appeles. La routine du driver 1 appele par une interruption nyfait que noter le fait quune interruption a t leve, et active la tche qui tait en attentesur des donnes particulires. Ici une tche ayant besoin dattendre des donnes venant dunport de communication sera mise en attente passive et permet de ne pas gaspiller du tempsprocesseur en excutant une boucle de scrutation. Le temps de gestion de linterruption parla routine du driver est trs faible, et peut souvent tre nglig.

    DMA

    Le concept de DMA (Direct Memory Access) est un mcanisme permettant au processeur de dl-guer un sous-systme le soin deffectuer un grand transfert de mmoire. Ceci permet au proces-seur de continuer excuter des instructions pendant que le transfert seffectue. Bien que permettantdacclrer le traitement global, ce mcanisme peut momentanment ralentir le cours dexcutioncar le processeur doit partager le bus de donnes avec le contrleur DMA. Si la tche excute par leprocesseur ncessite daccder la mmoire, un arbitrage doit se faire. Plusieurs solutions existent,mais sortent du cadre de ce cours. Nous pouvons toutefois noter que ce problme ne doit pas trenglig lors de lestimation du temps dexcution dune tche.

    1. Portion de code charge dans le noyau, et responsable de la bonne gestion dun priphrique.

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    9/35

    1.3. SYSTME DEXPLOITATION 1.7

    Mmoire cache

    Pour terminer, les mmoires caches (ou antmmoires) ont t introduites dans les systmes infor-matiques afin dacclrer les accs mmoire. Une mmoire cache est insre entre le processeur et

    la mmoire principale et contient un sous-ensemble des donnes prsentes en mmoire principale.Etant plus petite et plus proche du processeur, son accs est nettement plus rapide, et le principe delocalit temporelle et spatiale permet de voir le temps dexcution des applications fondre. Laccs une donne prsente en cache est donc trs rapide. Les tudes montrent que 80% des accs m-moires sont trouvs en cache, et que seulement 20% ncessitent un accs la mmoire principale.Le problme de la prdictibilit est quil est impossible de savoir exactement quels seront les accsrussi et lesquels seront des checs. Il est donc possible de borner le temps dexcution dune tchelorsquil ny a pas de cache, ou que son accs a t dsactiv. Par contre, si une cache est utilise,une borne pourrait tre donne en considrant que tous les accs sont des checs, ce qui donne-rait une estimation totalement fausse. Il sagit du seul moyen dassurer une predictibilit exacte,mais lerreur destimation est norme. Il est donc possible dtre un peu plus flexible en usant de

    statistiques concernant la probabilit de russite/chec des accs mmoires.Comme nous venons de le voir, les facteurs dimpredictibilit sont nombreux, et peuvent aismentconduire lobservation dun systme fonctionnant parfaitement le 99% du temps et se retrouvantsoudainement dans un tat non grable. Ces facteurs doivent donc tre finement analyss lors de lamise au point dune application temps rel.

    1.3 Systme dexploitation

    Un systme temps rel peut tre mis en place via un systme dexploitation ou non. Sans systmedexploitation, il est possible de disposer dun excutif (ou moniteur) temps rel, qui est une sortede micro-noyau. Cet excutif est responsable de lordonnanement des tches (ordre dans lequelelles sexcutent), les tches soccupant de leur traitement propre. Cette solution peut tre adapte des systmes embarqus dont la fonctionnalit est trs spcifique et peu soumise modification.Dans des systmes plus importants, il est agrable de disposer des facilits proposes par un systmedexploitation, tels quune interface utilisateur ou la gestion de fichiers, par exemple. Un systmedexploitation doit par contre tre spcifiquement conu pour le temps rel. Il est en effet impossiblede faire fonctionner une application temps rel strict sur un systme dexploitation standard. Ceciest notamment en partie d aux facteurs dimprdictibilit cits prcdemment. Il existe plusieurssystmes dexploitation temps rel, propritaires ou open source. Dans le cadre de ce cours, nousutiliserons Xenomai [1], qui est un noyau temps rel quil est possible dadjoindre un Linuxstandard. Les applications temps rel peuvent alors tre gres correctement par Xenomai, tandisque les applications standards son excutes dans le contexte Linux.

    1.4 Temps rel strict vs. souple

    En fonction de la nature des contraintes temporelles appliques un systme temps rel, celui-cipeut tre de deux types :Temps rel strict ou dur (hard). Il sagit dun systme o lensemble des contraintes temporelles

    doit absolument tre respect. Pour ce faire il faut pouvoir dfinir les conditions de fonctionne-ment du systme, cest--dire connatre parfaitement lenvironnement du systme. Il faut ga-lement tre capable de garantir la fiabilit du systme avant son excution. Tous les scnariospossibles dexcution doivent donc tre tudis et le bon fonctionnement du systme doit tre

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    10/35

    1.8 CHAPITRE 1. INTRODUCTION LA PROGRAMMATION TEMPS REL

    garanti pour chacun de ces scnarios. Lensemble du systme doit videmment tre suffisammentconnu pour pouvoir fournir de telles garanties.A titre dexemple, le contrle dun avion par un pilote automatique est un systme temps relstrict.Il existe galement des systmes appels temps rel ferme (firm), o la pertinence du rsultat estnulle passe lchance, mais dont le non respect de lchance ne compromet pas le fonctionne-ment du systme ou lintgrit des personnes. Une application bancaire responsable de calculerdes risques en fonction des paramtres courants du march en est un exemple.

    Temps rel souple ou mou (soft). Les systmes temps rel souple ont des contraintes de tempsmoins exigeantes que les prcdents. Une faute temporelle ny est pas catastrophique pour lefonctionnement. Un tel systme pourra donc accepter un certain nombre de fautes temporelles,tout en pouvant continuer son excution.A titre dexemple, les applications de type multimdia telles que la tlphonie ou la vido sont desapplications temps rel souple, car la perte de certaines informations, lie un dbit trop faible,nest pas dangereux ou catastrophique. Les systmes de ce type peuvent ensuite tre compars

    en fonction de la qualit de service quils offrent, en termes de probabilit derreur.La figure 1.2 rsume la valeur dun calcul en fonction de son instant darrive. Dans le cas dunechance stricte ou firme, pass lchance, le calcul na plus aucune valeur. La diffrence entreces deux cas vient du fait quune chance stricte manque met en pril le systme, alors quunechance firme manque implique uniquement que le rsultat du calcul nest plus pertinent. Dansle cas dune chance molle, la pertinence du rsultat perd de sa valeur aprs lchance, mais cedune manire plus douce.

    Valeur

    Temps

    chance

    (a) Echance stricte

    Valeur

    Temps

    chance

    (b) Echance ferme

    Valeur

    Temps

    chance

    (c) Echance molle

    Figure 1.2 Valeur du calcul en fonction du temps

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    11/35

    Chapitre 2Introduction aux tches

    2.1 Quest-ce quune tche ?

    EN PROGRA MMATION squentielle, un programme est dcompos en sous-programmes

    (procdures ou fonctions). Chaque sous-programme correspond une suite dinstruc-tions, et lexcution du programme voit ces instructions tre excutes les unes la suitedes autres. Il est en gnral possible de raliser une application en une seule tche, mais

    la scrutation de priphriques risque dy tre dlicate et coteuse en temps processeur.Un systme temps rel est toujours dcompos en tches, chacune ayant des fonctionnalits, destemps dexcution et des chances diffrentes. Il serait parfois possible de les combiner en uneseule tche, mais cet exercice nest pas souhait, notamment cause du contrle plus dlicat sur lesparties dexcution que ceci impliquerait.

    Considrons un simple systme compos de deux entres (un port srie et un clavier), dune partiede traitement, et dune sortie. Dans un contexte temps rel, le port srie doit tre scann rgulire-ment afin dviter quun octet ne soit perdu. Si la tche de traitement est consquente, il faudrait, enmilieu de traitement, aller vrifier ltat du port srie, sans oubli la gestion du clavier. Il faudraitgalement faire de mme si la transmission vers la sortie est lente. Dans un tel cas, la dcompo-sition du systme en tches distinctes permet dviter ces inconvnients. Nous pouvons imaginerune tche responsable de lire les donnes venant du port srie, et ce une cadence garantissant lerespect des chances visant ne pas perdre doctet. Une autre tche serait responsable de la gestiondu clavier, une autre du traitement, et enfin une dernire de la gestion de la sortie. Des mcanismesde communication peuvent tre mis en oeuvre pour permettre aux diffrentes tche de schangerdes donnes, et des priorits peuvent tre assignes, notamment pour garantir que le port srie est

    bien gr.Les systmes temps rel tant gnralement bass sur une architecture relativement semblable cet exemple, nous traiterons donc de systmes multi-tches. A lheure actuelle, les systmes infor-matiques sont multi-tches, et supportent lexcution pseudo-parallle de plusieurs tches. Ceci at rendu possible par la mise au point de systmes dexploitation nettement plus complexes. Unprocesseur peut donc voir plusieurs tches en cours dexcution se partager le temps de traitement.Dans le cadre dune application particulire, il est ds lors possible davoir, par exemple, une tcheresponsable dexcuter un calcul lourd pendant quun autre gre les interactions avec lutilisateur. Ilest intressant de noter que le concept de programmation multi-tches est autant valable sur un pro-cesseur simple coeur que sur un multi-coeur. Sur un simple coeur, les parties de tches sexcutenttour tour de manire transparente, et sur un multi-coeur, un rel paralllisme peut tre observ,

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    12/35

    2.2 CHAPITRE 2. INTRODUCTION AUX TCHES

    chaque coeur pouvant excuter un ensemble de tches.

    2.2 Anatomie dune tche

    Un processus correspond un fichier excutable en cours dexcution sur un processeur. Il estentre autre caractris par un code (le programme excuter), une pile et un tas qui permettent destocker les donnes ncessaires son bon fonctionnement, un identifiant unique, et une priorit. Lapriorit permet au systme dexploitation de grer plusieurs processus en cours dexcution sur unprocesseur, un processus plus haute priorit se voyant attribuer un temps dutilisation processeurplus important.Un processus peut galement tre dcompos en tches (threads ou fils dexcution), chaque tchetant une sorte de processus lger. Dans ce cours, nous utiliserons le terme de tche pour dsi-gner une suite dinstructions squentielles correspondant une tche. Toutefois, les notions dor-donnancement introduites dans le chapitre correspondant peuvent tre aussi bien appliques des

    processus.La figure 2.1 illustre la dcomposition de lespace dadressage dun processus en trois parties prin-cipales : Le code contenant les instructions du programme (text segmenten anglais). Les variables globales et les variables alloues dynamiquement (data segmenten anglais). La pile, o les variables locales de ses sous-programmes, ainsi que diverses informations tempo-

    raires ayant une dure de vie gale au sous-programme sont stockes (stack segmenten anglais).

    Figure 2.1 Espace dadressage dun processus

    data segment

    stack segment

    text segment(code)

    Espace d'adressage

    Processus

    Un processus, dans un cadre multi-tche, est dcompos en deux parties : La premire contenant les ressources globales, telles que les instructions du programme et les

    variables globales. Cette partie correspond au processus. Il sagit des deux premiers points delespace dadressage.

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    13/35

    2.3. AVANTAGES DU MULTI-TCHE 2.

    La deuxime contenant des informations lies ltat dexcution, telles que le compteur deprogramme (aussi appel compteur ordinal) et la pile dexcution. Cette partie correspond unetche. Il est noter que chaque tche possde un compteur de programme et une pile. Il sagit dela partie lie la tche.

    Etant donn que les tches dun mme processus partagent le mme espace dadressage, unetche peut facilement corrompre les donnes utilises par une autre tche. Des outils de syn-chronisation permettent toutefois dliminer les risques de ces corruptions, sils sont utiliss demanire approprie.

    Toujours li au partage de lespace dadressage, si une tche effectue un accs mmoire erronfatal, le processus entier risque de se terminer. Ce nest videmment pas le cas pour un systme plusieurs processus.

    Une tche est li un programme particulier, et ne peut donc pas tre lanc par un autre pro-gramme. Les processus peuvent en revanche tre lanc par un autre processus, et donc tre plusaisment rutiliss.

    2.3 Avantages du multi-tche

    En comparaison dun programme ne contenant quune seule tche, un programme dcompos entches permet de mieux grer les entres/sorties et le calcul. Une tche peut soccuper du calcul,tandis que dautres grent les entres/sorties. De ce fait, lusage dun GUI (Graphical User Interface)est plus ergonomique et convivial. Prenons lexemple dune application visant afficher la courbede Mandelbrot. Pour chaque point de limage, une grande quantit de calcul doit tre effectue.Supposons que lutilisateur peut cliquer sur des boutons pour zoomer. Si nous ne disposons pas demulti-tche, un clique sur le bouton va ensuite voir lapplication se bloquer pendant que la nouvelleimage est calcule. Si par contre nous disposons de plusieurs tches, une tche peut soccuper du

    calcul pendant que lautre gre linterface graphique. Ds lors lutilisateur a encore la possibilitdinteragir avec lapplication sans devoir souffrir de laccaparement du processeur pour le calcul.Dans le cas dun processeur multi-coeur, un autre avantage du multi-tche peut sexploiter. En effet,chaque coeur peut prendre en charge un ou plusieurs tches. En reprenant lexemple de Mandelbrot,si nous supposons que nous sommes en prsence dun dual-core, alors nous pouvons dcomposernotre calcul en deux tches, chacune tant responsable de la gnration de la moiti de limage.Lorsque lutilisateur clique sur le bouton, la nouvelle image pourra donc safficher en un tempsrduit de moiti. Il sagit l dun paralllisme rel, rendu possible par lamlioration des plateformesmatrielles proposes sur le march. Nous pouvons toutefois noter que lacclration dun facteurn pour un n-core reste thorique, la probable communication inter-tche imposant une perte enperformance.

    En comparaison dun systme multi-processus, une application multi-tche requiert une surcharge(overhead) moindre pour la gestion des tches. En effet, commuter dune tche une autre estnettement moins coteux en terme de temps processeur que de commuter dun processus unautre. Un avantage dune application multi-processus est la possibilit dexcuter les processus surdes machines diffrentes, ce qui nest pas le cas du multi-tche. Pour ce qui est de la commutation,le responsable de son fonctionnement, dans les deux cas, est le systme dexploitation.La table suivante (tire de [9]) liste les avantages et les inconvnients du multi-tche par oppositionau multi-processing :

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    14/35

    2.4 CHAPITRE 2. INTRODUCTION AUX TCHES

    Figure 2.2 Espace dadressage dun processus multi-tche

    pthread_t threadA;

    pthread_t threadB;

    int x;

    int y;

    void fonctionA(void *p)

    {

    int i=100;

    }

    void fonctionB(void *p)

    {

    int i=10;

    }

    main()

    {

    pthread_create(&threadA,NULL,fonctionA,NULL);

    pthread_create(&threadB,NULL,fonctionB,NULL);

    ...

    }

    Espace d'adressage

    Processusstack segment

    data segment

    text segment

    fonctionA()

    i=100

    main()

    ThreadA

    threadB

    x

    y

    Pile du threadARegistres

    ________

    SP

    PC

    ...

    Attributs

    ________

    priorit = 2

    taille = ...

    ...

    Thread ID

    ________

    212

    threadA

    fonctionB()

    i=10

    Pile du threadBRegistres

    ________SP

    PC

    ...

    Attributs

    ________priorit = 2

    taille = ...

    ...

    Thread ID

    ________315

    threadB

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    15/35

    2.4. TCHES DANS UN CONTEXTE TEMPS REL 2.

    Avantage des tches Dsavantages des tches

    Moins de ressources ncessaires lors dun chan-gement de contexte

    Requiert des mcanismes de synchronisation lorsdaccs mmoires concurrents

    Amliore le dbit de traitement des donnes dansune application

    Peut facilement polluer lespace dadressage duprocessus

    Ne ncessite pas de mcanismes spciaux decommunication entre tches

    Nexiste que dans un processus, et nest donc pasrutilisable

    Permet de simplifier la structure dun programme

    Dans le cadre de systmes temps rel, un autre avantage du multi-tche est la possibilit de mieuxgrer les chances et priodes des tches. Nous reviendrons sur ces notions dans le chapitre surlordonnancement.

    2.4 Tches dans un contexte temps rel

    2.4.1 Cycle de vie

    La figure 2.3 illustre les diffrentes tapes de la vie dune tche, dans un contexte temps rel. Ltatinitial dune tche est inexistante. Aprs sa cration, elle passe ltat passive lorsque toutes lesressources son bon fonctionnement ont t rquisitionnes. Elle reste dans cet tat jusqu trerveille, ce qui peut nest fait quune seule fois pour une tche apriodique, ou de manire rptepour une tche priodique. Aprs le rveil, elle se trouve dans ltat prte, o elle se retrouve encomptition avec les autres tches disposes tre excutes. Lordonnanceur a alors la charge dechoisir les tches activer. De ltat prte, le systme dexploitation peut ensuite la faire passerdans ltat lue, tat dans lequel la tche sexcute.

    Figure 2.3 Etats et transitions dune tche dans un contexte temps rel.

    non existante

    passive

    lue

    prte

    bloque

    termine

    cration

    requte

    excution

    premption

    faute temp.

    terminaison requte

    premptionattente

    terminaison

    faute temporelle

    rveil

    Ce passage nest pas du ressort de la tche, mais bien de lordonnanceur, qui soccupe dallouerle processeur aux diffrentes tches concurrentes, et ce en suivant la politique dordonnancementchoisie. A tout instant lordonnanceur peut replacer la tche dans ltat prte, pour laisser une autretche sexcuter. Il sagit de la premption dune tche, qui se fait sans que la tche prempte

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    16/35

    2.6 CHAPITRE 2. INTRODUCTION AUX TCHES

    nen soit consciente. Depuis ltat lue, la tche peut aussi se retrouver dans ltat bloque, lorsde lattente dun vnement ou du relchement dun mutex, par exemple. La tche ressort de cettat par son rveil suite au relchement dun mutex ou au fait quun vnement sur lequel la tcheattend a t dclench. Dans ce cas, la tche passe ltat prte, prte continuer son excution.Lorsque la tche sexcute, elle peut se terminer, et se retrouver dans ltat de terminaison. Ellepeut galement terminer une occurence, et passer dans ltat passive, si elle est priodique. Il estintressant de noter que des fautes temporelles peuvent survenir, la tche nayant pas termin sontraitement temps. Ceci peut faire passer la tche de ltat lue ou prte ltat passive. Elle yrestera ensuite jusqu une nouvelle requte, pour le cas o elle est priodique.

    2.4.2 Taxonomie

    Les tches sont divises en deux grandes catgories, en fonction de leur priodicit. Les tches priodiques (ou cycliques) sont des tches qui sont excutes intervalles rguliers.

    Elles sont entre autre dfinies par la priode avec laquelle elles sont censes sexcuter, ce qui estgr par lordonnanceur.Une tche priodique peut par exemple tre responsable de lobservation dun capteur inter-valles rguliers, de la rgulation de moteurs, de monitoring, etc.

    Les tches apriodiques sont, quant elles, excutes intervalles irrguliers, et peuvent doncsurvenir nimporte quel instant. Il sagira typiquemenent de tches de configuration, et de tchesactives par une alarme, ou par une entre de lutilisateur. Les interruptions jouent un rle impor-tant, tant le principal vecteur dactivation.Une tche est dite sporadique si elle est apriodique et que lintervalle minimal entre deux acti-vations est connu.

    Au niveau de linteraction entre tches, nous pouvons distinguer :

    Les tches indpendantes, dont lordre dexcution peut tre quelconque.

    Les tches dpendantes, pour lesquelles il existe des contraintes de prcdence. Il sagit de caso une tche doit attendre quune autre ait termin son traitement pour pouvoir commencer lesien.

    Au niveau des politiques dordonnancement, il est clair que les dpendances entre tches auront unrle crucial et devront tre prises en compte de manire judicieuse.

    2.4.3 Paramtres dune tche

    La dfinition dune tche est videmment fortement lie au programme dcrivant son excution.Toutefois, dans le cadre de lordonnancement de systmes temps rel, diffrents paramtres sont

    galement ncessaires la mise au point de solutions correctes.Les paramtres dune tche T sont : r : la date de rveil de la tche (ou date de demande dactivation) C : sa dure dexcution, calcule en temps processeur. Il sagit du pire temps dexcution. D : son dlai critique, au-del duquel le rsultat est jug comme tant non pertinent P : sa priode, pour le cas dune tche priodique d : pour une tche contraintes strictes, son chance, calcule comme tant d = r + D s : date de dbut dexcution de la tche f : date de fin dexcution de la tche u = C

    P: son facteur dutilisation du processeur

    ch = CD

    : son facteur de charge du processeur

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    17/35

    2.4. TCHES DANS UN CONTEXTE TEMPS REL 2.7

    L = D C : sa laxit nominal. Indique le retard maximum que peut prendre la tche sansdpasser son chance

    D(t) = d t : son dlais critique rsiduel au temps t C(t) : sa dure dexcution rsiduelle au temps t L(t) = D(t) C(t) : sa laxit rsiduelle au temps t T R = f r : son temps de rponse. Lchance est respecte si tr D

    Nous pouvons noter les proprits suivantes :

    u 1 ch 1 0 D(t) D 0 C(t) C L(t) = D(t) C(t) = D + r t C(t)

    Une tche apriodique est donc reprsente par le tuple T(r,C,D), alors quune tche priodiquelest par le tuple T(r0, C , D), r0 tant la date de rveil de la premire occurence.

    Un tche chance sur requte est une tche priodique pour laquelle le dlai critique est gal lapriode (D = P).

    La figure 2.4 illustre ces diffrents paramtres. Dans les diagrammes temporels utiliss, nous no-terons loccurence dun rveil de tche laide dune flche pointant vers le haut, lchance de latche tant reprsente par une flche pointant vers le bas.

    Figure 2.4 Paramtres typiques dune tche Ti.

    Ti

    Ci

    ri si fi di

    La figure 2.5 montre les paramtres dune tche priodique, et la figure 2.6 illustre les caractris-tiques dune tche priodique chance sur requte, o la priode est gale au dlai critique.

    Figure 2.5 Paramtres typiques dune tche priodique T.

    T

    C

    D

    P

    r0 s0 f0 d0

    C

    D

    P

    r1 s1 f1 d1 r2

    Figure 2.6 Paramtres typiques dune tche priodique chance sur requte T.

    T

    C

    D = P

    r0 s0 f0

    C

    D = P

    r1 s1 f1 r2

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    18/35

    2.8 CHAPITRE 2. INTRODUCTION AUX TCHES

    2.5 Ordonnancement non temps rel

    Tout systme dexploitation dispose dun ordonnanceur, qui a pour fonction de rpartir lutilisationdu processeur entre les diffrentes tches demandeuses. Diverses solutions existent, et peuvent tre

    classes en fonction de diffrents paramtres. La section suivante propose une taxonomie des algo-rithmes dordonnancement. La section 2.6 vise dfinir les moyens de calcul des performances desalgorithmes, et la section 2.7 introduit plusieurs algorithmes dordonnancement classiques, au senso ils sont utiliss dans des systmes nayant pas recours des contraintes temps rel.

    Dfinition 2.1. faisabilit

    Un ensemble de tches est dit faisable sil est possible den proposer un ordonnancement respectantlensemble des contraintes de temps imposes.

    2.5.1 Taxonomie

    Les algorithmes dordonnancement peuvent tre catgoriss selon les critres suivants (inspir de

    [10]) :

    Monoprocesseur/multiprocesseur

    Larchitecture physique du systme a une influence sur la manire dagencer les tches. Certainsalgorithmes ne peuvent tre appliqus quau des systmes monoprocesseur (ordonnancement mo-noprocesseur), alors que dautres se destinent des systmes multi-processeur (ordonnancementmultiprocesseur). Dans le cadre de ce cours, nous ne traiterons que les algorithmes monoproces-seur.

    Premptif/non-premptif

    La premption consiste en le fait quune tche peut tre interrompue son insu pour cder sa place une autre tche. Les algorithmes premptifs traitent donc des systmes o les tches peuventtre premptes (cf. figure 2.8), tandis que les algorithmes non-premptifs traitent de ceux dontune tche ayant commenc son traitement doit obligatoirement le terminer avant quune autre nesexcute (cf. 2.7).

    Figure 2.7 Exemple dordonnancement sans premption

    T0

    T1

    T2

    Figure 2.8 Exemple dordonnancement avec premption

    T0

    T1

    T2

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    19/35

    2.6. CALCUL DE PERFORMANCE 2.

    La possibilit de premption permet notamment dviter que le processeur ne soit occup troplongtemps par une tche, ce qui pourrait empcher une autre tche de se terminer temps. Cetteflexibilit a toutefois un cot li au temps ncessaire pour le changement de contexte dune tche lautre. Ce cot peut tre intolrable suivant lapplication, et donc un choix doit tre fait, pour unsystme particulier, de partir sur une solution avec ou sans premption (cf. [14]).

    En-ligne/hors-ligne (online/offline)

    Un ordonnancement hors-ligne est effectu avant le lancement du systme. Ceci implique que tousles paramtres des tches soient connus a priori, et notamment les dates dactivation. Limplmenta-tion du systme est alors trs simple : il suffit de stocker lidentifiant de la tche effectuer chaquemoment dordonnancement dans une table, lordonnanceur exploitant ensuite cette information pourslectionner la tche excuter. Le dsavantage de cette approche est la grande dpendance au sys-tme cible, par contre lanalyse hors-ligne permet une meilleure prdiction de la satisfaction ou non

    des contraintes temporelles. De mme, la puissance de calcul disponible hors-ligne permet de cal-culer un ordonnancement optimal, ce qui est un problme NP-complet, tche impossible raliserdans un systme embarqu.

    Un ordonnancement en-ligne est effectu durant le fonctionnement du systme. Lordonnanceurrecalcule un nouvel ordonnancement chaque fois quune nouvelle tche est active. Lavantage decette approche est la flexibilit, et ladaptabilit lenvironnement que procure le calcul en-ligne.Par contre, ce calcul devant tre excut par le systme, qui est temps rel, il doit tre le plus simpleet rapide possible, rendant impossible une solution dite optimale. Diffrents algorithmes permettentde rsoudre ceci, notamment en utilisant des heuristiques.

    Statique/dynamique

    Un ordonnancement est dit statique sil est uniquement bas sur les proprits des tches avant lelancement du systme. Un ordonnancement est dynamique sil est capable de ragir la modifica-tion des proprits des tches durant le fonctionnement du systme (typiquement un changement depriorit).

    Optimal/non optimal

    Un algorithme dordonnancement est dit optimal sil est capable de fournir un ordonnancement quirespecte toutes les contraintes de temps si un tel ordonnancement existe. Si un algorithme optimalnest pas capable de trouver un ordonnancement correct, aucun autre algorithme ne le pourra. Unalgorithme non optimal (ou heuristique, ou best effort) na pas la prtention dtre optimal, maisdoit faire de son mieux pour fournir un ordonnancement le plus proche possible de loptimal.

    2.6 Calcul de performance

    Comment calculer lefficatit dun algorithme dordonnancement ? La question est dlicate et peutconduire plusieurs rponses. Il faut en effet dfinir le facteur valuer. Le tableau 2.1 donne desfonctions de cot qui peuvent tre exploites pour la comparaison des algorithmes.

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    20/35

    2.10 CHAPITRE 2. INTRODUCTION AUX TCHES

    Nom Fonction

    Temps de rponse moyen tr =1

    n

    ni=1(fi ri)

    Temps dexcution total tc = maxi

    (fi) mini

    (ri)

    Somme pondre des fin dexcution tw =n

    i=1 wifi

    Maximum lateness Lmax = maxi

    (fi di)

    Nombre maximum de tche en retard Nlate =n

    i=1 miss(fi)

    miss(fi) =

    0 si fi di1sinon

    Tableau 2.1 Fonctions de cot pour valuation des performances.

    2.7 Ordonnancements classiques

    Comme dj mentionn, un systme dexploitation classique contient un ordonnanceur responsablede rpartir le temps CPU entre les diffrentes tches prsentes dans le systme. Nous prsentons iciquelques algorithmes dordonnancement, et nous traiterons des algorithmes spcifiques au tempsrel dans le chapitre 3.

    2.7.1 Algorithmes non premptifs

    Les algorithmes non premptifs sont appliqus lorsque les tches ne peuvent tre premptes, cest--dire o une tche ayant commenc son excution doit forcment la terminer avant quune autretche ne puisse dbuter.

    Premier arriv premier servi

    Cet algorithme fonctionne de la manire la plus simple qui soit. Les tches sont stockes dans unestructure de type FIFO, la premire tche est excute, et lorsquelle termine, la suivante est lance.Les tches nouvellement actives sont stockes la fin de la file dattente.La figure 2.9 illustre le concept de cet ordonnancement. Nous pouvons noter que les tches T1 et T2

    doivent attendre un temps important que la tche T0 se termine.

    shortest job first

    Afin dviter que des tches courtes ne doivent attendre trop longtemps sur des tches longues, ilest possible dappliquer un algorithme o la tche la plus courte est servie en premier. De ce fait,les tches courtes sont favorises, et le temps dattente moyen est minimis. Un des problmesde cette approche est le risque de famine des tches longues. Si de nouvelles tches courtes sonrgulirement rveilles, il se peut quelles passent toujours devant une tche longue, empchantainsi celle-ci de sexcuter.La figure 2.10 illustre le fonctionnement de cet algorithme.

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    21/35

    2.7. ORDONNANCEMENTS CLASSIQUES 2.1

    Figure 2.9 Exemple dordonnancement premier arriv premier servi

    Tche Cot Arrive

    T0 8 1T1 2 2T2 4 4

    T00 5 10 15

    T1

    T2

    Figure 2.10 Exemple dordonnancement plus court dabord

    Tche Cot Arrive

    T0 8 0T1 2 0T2 4 0

    T00 5 10 15

    T1

    T2

    2.7.2 Algorithmes premptifs

    Dans le cadre premptif, une tche peut tre momentanment interrompue par lordonnanceur afinde laisser une autre tche sexcuter. De ce fait, une tche trs longue na plus de risque de bloquerdes tches plus courtes trop longtemps.

    Round robin/tourniquet

    Lalgorithme du tourniquet (round robin en anglais) vise traiter les tches avec le plus dquitpossible, en allouant un quantum de temps identique toutes les tches, et les traiter dans un ordreFIFO. Les tches sont places dans une file dattente, et la premire de la file est excute pendantun quantum de temps. A la fin de ce quantum, si la tche nest pas termine, elle est replace lafin de la file et une nouvelle tche est slectionne depuis le dbut de la file. Si la file est vide, latche peut continuer son excution.La figure 2.11 illustre cet algorithme, avec un quantum de temps gal 2. Nous pouvons noter que latche T0 garde laccs au processeur lorsquelle se retrouve tre la seule en cours dexcution. Il nya donc pas de changement de contexte si ceci nest pas ncessaire. Cette technique de tourniquet

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    22/35

    2.12 CHAPITRE 2. INTRODUCTION AUX TCHES

    correspond la politique standard observe dans les systmes dexploitation, car elle permet toutes les tches de sexcuter sans risque de famine. Nous pouvons toutefois noter quil sagiradune variante avec priorit.

    Figure 2.11 Exemple dordonnancement tourniquet

    Tche Cot Arrive

    T0 8 0T1 2 1T2 4 3

    T00 5 10 15

    T1

    T2

    Priorit fixe

    Lalgorithme du tourniquet traite toutes les tches sur le mme pied dgalit. Hors il est souventncessaire de dfinir des priorits entre tches, afin par exemple de garantir que la lecture dunfichier audio se fasse de manire fluide, mme lorsquune compilation est en cours. Lalgorithme priorit fixe fonctionne comme celui du tourniquet lintrieur dune priorit, et les priorits sont

    traites dans lordre. Les tches dune priorit particulire y sont traites selon un tourniquet, pourautant quaucune tche de plus haute priorit ne soit prte tre excute.La figure 2.12 illustre cet algorithme, avec un quantum de temps gal 2. Nous pouvons noter quela tche T1, la plus prioritaire, est excute au dpart, puis un tourniquet est effectu pour les deuxautres tches. Cette technique de tourniquet priorit correspond la politique standard observedans les systmes dexploitation, car elle permet toutes les tches de sexcuter sans risque defamine.

    Earliest deadline first

    Lalgorithme Earliest Deadline First (EDF) donne la priorit la tche ayant lchance la plusproche. A chaque fois quune tche est rveille, lordonnanceur rvalue les tches prtes et slec-tionne celle ayant lchance la plus courte.La figure 2.13 illustre cet algorithme. Nous reviendrons sur lalgorithme EDF dans le chapitre sui-vant, tant donn quil sagit dune des politiques dordonnancement les plus utilises.

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    23/35

    2.7. ORDONNANCEMENTS CLASSIQUES 2.1

    Figure 2.12 Exemple dordonnancement tourniquet avec priorit

    Tche Cot Priorit Arrive

    T0 6 1 0T1 6 2 0T2 4 1 0

    T00 5 10 15

    T1

    T2

    Figure 2.13 Exemple dordonnancement EDF

    Tche Cot Echance Arrive

    T0 6 12 0T1 4 8 2T2 2 5 3

    T00 5 10 15

    T1

    T2

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    24/35

    2.14 CHAPITRE 2. INTRODUCTION AUX TCHES

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    25/35

    Chapitre 3Algorithmes dordonnanement temps relpour tches priodiques

    3.1 Introduction

    LE PROBLME fondamental en programmation concurrente est celui de garantir le respect

    des chances des diffrentes tches le constituant. Il existe en outre un grand nombrede manire dordonnancer un ensemble de tches, et ce notamment en fonction des ca-ractristiques de celles-ci. Elles peuvent tre indpendantes, dpendantes, priodiques,

    apriodiques, elles peuvent partager ou non des ressources, et changer ou non des informations.Dans ce chapitre, nous nous intressons au cas de tches purement priodiques.Dans nombre de systmes temps rel, certaines tches doivent sexcuter de manire rpte,

    intervalles rguliers. Il pourra par exemple sagir dune tche charge daller vrifier la valeur duncapteur tous les diximes de seconde. Ces tches sont appeles tches priodiques, puisquellesdoivent sexcuter rgulirement, en suivant une priode fixe.Pour la mise au point des algorithmes dordonnancement dans le cadre des tches priodiques, nousutiliserons la notation suivante :

    Variable Description

    Un ensemble de tches priodiques

    i Une tche priodique gnrique

    i,j La jme instance de la tche priodique i

    ri,j Le temps darrive de la jme instance de la tche priodique i

    i Le dphasage de la tche i ; il sagit du temps darrive de i,0 (i = ri,0)

    Di Echance relative de la tche i

    di,j Echance absolue de la jme instance de la tche i (di,j = i + (j 1)Ti + Di)

    si,j Temps de dbut dexcution de la jme instance de la tche i

    fi,j Temps de fin dexcution de la jme instance de la tche i

    Dans la suite de ce chapitre, nous allons en outre faire les hypothses suivantes :

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    26/35

    3.2 CHAPITRE 3. ALGORITHMES DORDONNANEMENT TEMPS REL POUR TCHES PRIODIQUES

    Hypothse

    H1 Les instances dune tche priodique sont actives avec une priode constante

    H2 Toutes les instances dune tche ont le mme pire temps dexcution Ci

    H3 Toutes les instances dune tche ont la mme chance relative Di

    H4 Toutes les tches sont indpendantes. Il ny a pas de dpendances entre tches

    H5 Une tche ne peut se suspendre elle-mme

    H6 La surcharge lie aux oprations du noyau est nglige

    Nous traiterons ultrieurement les systmes o lhypothse H4 nest pas vrifie.Dans le cas des tches chance sur requte, nous pouvons calculer les temps darrive des tches,

    ainsi que leurs chances respectives de cette manire :ri,j = i + (j 1)Pi (3.1)

    di,j = ri,j + Pi = i +jPi (3.2)

    Une tche est dite faisable si toutes ses instances peuvent se terminer en respectant leur chance.Lensemble des tches ordonnancer est dit ordonnanable (ou faisable) si toutes ses tches de sont faisables.

    3.1.1 Gigue

    La gigue observe peut ltre sur diffrentes variables du systme. Nous pouvons dfinir les giguessuivantes : La gigue de release relative (Relative Release Jitter) dune tche est la dviation maximale des

    temps de dmarrage de deux instances conscutives :

    RRJi = maxj

    |(si,j ri,j) (si,j1 ri,j1)| (3.3)

    La gigue de release absolue (Absolute Release Jitter) dune tche est la dviation maximale destemps de dpart sur toutes les instances :

    ARJi = maxj

    (si,j ri,j) minj

    (si,j ri,j) (3.4)

    La gigue de fin relative (Relative Finishing Jitter) dune tche est la dviation maximale destemps de fin de deux instances conscutives :

    RF Ji = maxj|(fi,j ri,j) (fi,j1 ri,j1)| (3.5)

    La gigue de fin absolue (Absolute Finishing Jitter) dune tche est la dviation maximale destemps de fin sur toutes les instances :

    AF Ji = maxj

    (fi,j ri,j) minj

    (fi,j ri,j) (3.6)

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    27/35

    3.1. INTRODUCTION 3.

    3.1.2 Priode dtude

    Les ordonnancements de ce chapitre son ddis aux ensembles de tches priodiques. Le fonction-nement complet du systme est donc cyclique. Lalgorithme dordonnancement doit trouver une

    squence de tches, valable sur toute la dure de fonctionnement du systme. Cette squence esttoutefois caractrise par une priodicit de longueur L, tant donn que les tches sont priodiques.La priode de longueur L est appele priode dtude, ou priode de base.Pour un ensemble de tches priodiques synchrones (qui dbutent toutes linstant 0), la priodedtude est :

    L = [0, P P C M (Pi)] (3.7)

    O le P P C M dnote le plus petit multiple commun des priodes des tches. Ds lors, si les tchessont ordonnanables sur la priode dtude, nous pouvons garantir quelles le seront pour un tempsinfini, tant donn que lordonnancement pourra tre calcul en rptant la squence de tchestrouve sur cette priode dtude. La priode dtude peut toutefois savrer trs longue, suivant les

    relations entre les priodes.Pour des tches asynchrones, ne dbutant donc pas au mme instant, la priode dtude est :

    L = [min{ri,0}, 2 P P C M (Pi) + max{ri,0]} (3.8)

    O ri,0 est la date dactivation de la premire occurence de la tche priodique TiEt enfin, en prsence de tches apriodiques, la priode dtude devient :

    L = [min{ri,0}, 2 P P C M (Pi) + max{ri,0, rj + Dj}] (3.9)

    O rj est la date dactivation de la tche apriodique Tj , et o Di est son chance relative.

    3.1.3 Taux dutilisation du processeur

    Pour un ensemble de n tches priodiques , le facteur doccupation du processeur est la fractionde temps processeur ncessaire lexcution de cet ensemble de tches. Pour une tche i, le facteurdoccupation est dfini par :

    ui =Ci

    Pi(3.10)

    Pour lensemble des tches , le facteur dutilisation est ds lors :

    U =n

    i=1Ci

    Pi(3.11)

    Ce facteur U correspond la charge applique par lensemble des tches sur le processeur. Il estvident que la charge maximale ne doit pas dpasser 1, sans quoi le processeur nest pas mmedexcuter lensemble des tches.

    U =ni=1

    Ci

    Pi 1 (3.12)

    U, qui doit donc tre plus petit que 1, dpend en outre des caractristiques des tches, ainsi que delalgorithme dordonnancement utilis pour les ordonnancer. Pour un algorithme A particulier etun ensemble de tches , il existe une valeur Uub(, A) au-del de laquelle les tches ne sont pasordonnanables. Uub est la limite maximale dutilisation du processeur (Upper Bound).

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    28/35

    3.4 CHAPITRE 3. ALGORITHMES DORDONNANEMENT TEMPS REL POUR TCHES PRIODIQUES

    Si U = Uub(, A), alors lensemble utilise entirement le processeur. Une petite modification de peut ds lors faire dpasser cette limite et rendre lensemble des tches non ordonnanable. Pourun algorithme A donn, nous pouvons dfinir la valeur minimale des Uub (Least Upper Bound) :

    Ulub(A) = min

    Uub(, A) (3.13)

    De ce fait, un ensemble de tches est ordonnanable si son facteur dutilisation du processeur estinfrieur cette limite minimale :

    U =ni=1

    Ci

    Pi Ulub(A) = min

    Uub(, A) est ordonnanable (3.14)

    La figure 3.1 reprsente, pour un algorithme donn, lordonnanabilit de quatre ensembles detches. Si le facteur dutilisation du processeur est infrieur ou gal la limite minimale, alorslensemble est ordonnanable (3), sil est suprieur 1 il nest pas ordonnanable (3), et sinonun test supplmentaire est ncessaire pour tablir son ordonnanabilit (1, et 2).

    Figure 3.1 Signification du Least Upper Bound

    U1

    U2

    U3

    U4

    1

    2

    3

    4

    Ordonnanable ? Oui Peut-tre Non

    0 Ulub 1

    3.2 Rate Monotonic

    Lalgorithme Rate Monotonic est un algorithme statique, applicable un ensemble de tches chance sur requte, o les priorits des tches sont fixes et dcide avant le lancement du systme.La priorit des tches est fixe en fonction de leur priode dactivation. Plus une tche a une petitepriode dactivation, plus sa priorit sera haute. Il sagit dun algorithme premptif, lactivation

    dune tche de petite priode devant permettre la premption dune tche de priode plus grande.Cet algorithme est optimal dans le cas des priorits fixes, pour .La figure 3.2 montre un exemple dordonnancement selon lalgorithme Rate Monotonic.

    3.2.1 Analyse dordonnanabilit

    Une condition suffisante dordonnanabilit est :

    ni=1

    Ci

    Pi UlubRM(n) = n(2

    1

    n 1) (3.15)

    Le tableau suivant donne la valeur de Ulub(n) pour quelques valeurs de n :

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    29/35

    3.3. DEADLINE MONOTONIC 3.

    Figure 3.2 Exemple dordonnancement selon Rate Monotonic

    Tche Cot Priode

    T0 2 6T1 3 8T2 4 24

    T00 5 10 15 20 25

    T1

    T2

    n Ulub

    1 1.0002 0.8283 0.7804 0.7575 0.743

    Nous pouvons calculer Ulub pour de grandes valeurs de n :

    Ulub = limn

    n(21

    n 1) = ln2 0.69 (3.16)

    Donc, si U est plus petit que 0.69, lensemble est ordonnanable. Sil est plus grand, il faut lecomparer UlubRM(n). Sil est plus grand que cette dernire valeur, il reste un test permettant dta-blir son ordonnanabilit. Il est dcrit dans la section dvolue lalgorithme Deadline Monotonic,en page 6.En 2001, une nouvelle condition dordonnanabilit, appele Hyperbolic Bound, a t propose. Ilsagit galement dune condition suffisante mais pas ncessaire :

    ni=1

    (Ui + 1) 2 (3.17)

    Cette condition est moins restrictive que la prcdente, et est donc intressante.

    3.3 Deadline Monotonic

    Lalgorithme Rate Monotonic est bas sur lhypothse que les tches sont chance sur requte,cest--dire que lchance dune tche est gale sa priode. Dans certains systmes cette hypo-thse ne pourra savrer exacte, et les chances pourront tre plus petites que les priodes. Dansce cas, lalgorithme Deadline Monotonic est un algorithme optimal dans le cas des algorithmes priorit statique avec chances plus petites que les priodes. Comme RM, il est premptif.La priorit dune tche est fixe par son chance. Plus son chance est petite, plus sa priorit estgrande.La figure 3.3 montre un exemple dordonnancement selon lalgorithme Deadline Monotonic.

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    30/35

    3.6 CHAPITRE 3. ALGORITHMES DORDONNANEMENT TEMPS REL POUR TCHES PRIODIQUES

    Figure 3.3 Exemple dordonnancement selon Deadline Monotonic

    Tche Cot Priode Echance

    T0 2 6 5T1 3 8 4T2 4 24 20

    T00 5 10 15 20 25

    T1

    T2

    3.3.1 Analyse dordonnanabilit

    Une condition suffisante dordonnanabilit est :

    ni=1

    Ci

    Di n(2

    1

    n 1) (3.18)

    Ce test nest toutefois pas vraiment optimal, car la charge du processeur y est surestime. Il estpossible de dduire un autre test, en se basant sur les observations suivantes :

    1. Le pire cas au niveau des demandes dutilisation du processeur se trouve au moment o toutesles tches sont actives simultanment ;

    2. Le pire temps de rponse dune tche correspond la somme de son temps dexcution et desinterfrences des tches de priorit suprieure.

    Si nous supposons les tches ordonnes selon lordre ascendant de leurs chances, le test corres-pond vrifier que :

    i : 1 i n Ci + Ii Di (3.19)

    O Ii est linterfrence 1 mesure sur la tche i :

    Ii =i1j=1

    Di

    Pj

    Cj (3.20)

    Si ce test passe, alors lensemble de tches est ordonnanable. Toutefois, linterfrence est calculeen partant du principe quune tche j interfre exactementDiPj

    fois, ce qui nest pas forcment le

    cas.La mthode suivante permet une meilleure approximation de cette interfrence, et donc du tempsde rponse de la tche.

    Test en zone critique : calcul du temps de rponse

    Si le facteur dutilisation du processeur de lensemble de tches est plus petit que 1, mais plusgrand que Ulub(n), nous pouvons appliquer le test suivant, propos par Audlsey et al. Ce test est

    1. A titre de rappel, pour r R, n = r N, est lentier immdiatemment suprieur r.

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    31/35

    3.3. DEADLINE MONOTONIC 3.7

    valable pour lalgorithme Rate Monotonic et Deadline Monotonic. Ce test consiste en le calcul dupire temps de rponse des tches, en prenant en compte les interfrences des tches de prioritsuprieure.Lide est de partir du pire cas, o toutes les tches sont actives au mme instant. Le temps derponse Ri dune tche i est alors la somme de son temps dexcution et du temps dexcution detoutes les tches de priorit suprieure :

    Ri = Ci + Ii (3.21)

    O

    Ii =i1j=1

    Ri

    Pj

    Cj (3.22)

    Dans cette quation, le termeRiPj

    Cj reprsente linterfrence de la tche j sur la tche i le temps

    Ri.

    Nous avons donc :

    Ri = Ci +i1j=1

    Ri

    Pj

    Cj (3.23)

    Il faut vrifier que le temps de rponse soit plus faible que lchance de la tche. Nous nous trou-vons toutefois devant une quation o Ri apparat des deux cts de lgalit. Nous pouvons appli-quer une mthode itrative pour son calcul, en observant que seuls certains points dans lintervalle[0, Di] sont pertinents.

    1. Nous commenons par prendre un premier point dapproximation :

    R

    0

    i =

    i

    j=1 Cj (3.24)

    2. Si ce temps de rponse est au-del de lchance Di, la tche nest pas ordonnanable. Sinonnous passons au point suivant.

    3. Nous calculons le point dapproximation suivant :

    Rn+1i = Ci +i1j=1

    RniPj

    Cj (3.25)

    4. Si Rn+1i = Rni , nous avons atteint le pire temps de rponse pour la tche, qui peut alors tre

    compar Di. Sinon, nous reprenons au point 3.Prenons comme exemple lensemble de tches suivant :

    Tche Cot Priode Echance Priorit

    T0 40 100 100 3T1 40 150 150 2T2 100 350 350 1

    Pour T0, qui est la tche la plus prioritaire, il suffit de vrifier que son cot soit plus faible que sonchance.

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    32/35

    3.8 CHAPITRE 3. ALGORITHMES DORDONNANEMENT TEMPS REL POUR TCHES PRIODIQUES

    Pour T1, nous pouvons appliquer la mthode :

    R01 =1

    j=0

    Cj = C0 + C1 = 80

    R11 = C1 +0

    j=0

    R01Pj

    Cj = 40 +

    80

    100

    40 = 80

    R11 = R01, donc la phase itrative est termine.

    Comme R1 = 80 D1 = 100, T1 est ordonnanable.Pour T2, nous pouvons appliquer la mthode :

    R02 =2

    j=0

    Cj = C0 + C1 + C2 = 180

    R12 = C2 +

    1j=0

    R02Pj

    Cj = 100 +180

    100

    40 +180

    150

    40 = 260

    R22 = C2 +1

    j=0

    R12Pj

    Cj = 100 +

    260

    100

    40 +

    260

    150

    40 = 300

    R32 = C2 +1

    j=0

    R22Pj

    Cj = 100 +

    300

    100

    40 +

    300

    150

    40 = 300

    R31 = R21, donc la phase itrative est termine.

    Comme R2 = 300 D2 = 350, T2 est ordonnanable.

    3.4 Earliest Deadline First

    Lalgorithme Earliest Deadline First (EDF) donne la priorit la tche ayant lchance la plusproche. A chaque fois quune tche est rveille, lordonnanceur rvalue les tches prtes et s-lectionne celle ayant lchance la plus courte. Cet algorithme est appliqu, ici, des tches prio-diques chance sur requte o la premption est autorise.La figure 3.4 illustre cet algorithme.

    3.4.1 Analyse dordonnanabilit

    Lalgorithme EDF est optimal dans le cas premptif. La condition ncessaire et suffisante dordon-

    nanabilit est : ni=1

    Ci

    Pi 1 (3.26)

    Un ensemble de tches est donc ordonnanable si son taux dutilisation du processeur est plus petitou gal 0.

    3.4.2 Cas non-premptif

    Lalgorithme EDF est optimal dans le cas premptif. A titre indicatif, observons son comportementsi la premption est impossible.Considrons lexemple suivant deux tches :

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    33/35

    3.4. EARLIEST DEADLINE FIRST 3.

    Figure 3.4 Exemple dordonnancement EDF

    Tche Cot Priode

    T0 2 5T1 3 7T2 1 10

    T00 5 10 15 20

    T1

    T2

    Tche Cot Arrive Echance

    T0 4 0 7T1 2 1 5

    Dans le cas premptif, lordonnancement trouv est :

    T00 5 10

    T1

    Nous pouvons observer que la tche T0 est prempte au temps 1 par la tche T1, et lorsque cettedernire est termine, T0 peut reprendre son excution. Dans le cas non-premptif, larrive dela tche T1 au temps 1 voit la tche T0 continuer son excution, tant donn quelle ne peut treprempte :

    T00 5 10

    T1

    Nous pouvons donc observer que lchance de T1 nest pas respecte. Lordonnancement suivantest une solution possible dans le cadre non-premptif :

    T00 5 10

    T1

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    34/35

    3.10CHAPITRE 3. ALGORITHMES DORDONNANEMENT TEMPS REL POUR TCHES PRIODIQUES

    Cet ordonnancement montre quune solution existe dans ce cadre. Toutefois, EDF traite les tchesds leur moment darrive. Sans la connaissance a priori des temps darrive des tches, il nest paspossible, au temps 0, de prendre la dcision de retarder lexcution de T0. En effet, ici le processeurreste inactif durant un quantum de temps, ce qui aurait pu tre prjudiciable suivant le temps darri-ve de T1. Si la premption nest pas autorise, le problme de trouver un ordonnancement faisabledevient NP-dur.

    3.5 Least Laxity First

    Lalgorithme Least Laxity First (LLF) est, linstar dEDF, un algorithme priorit dynamique. Iltraite des tches priodiques pour lesquelles la premption est autorise.La rgle dcrivant lalgorithme est simplement que la tche dont la laxit est la plus faible est laplus prioritaire.Les dfinitions suivantes permettent daborder la notion de laxit :

    L = D C : sa laxit nominal. Indique le retard maximum que peut prendre la tche sansdpasser son chance D(t) = d t : son dlais critique rsiduel au temps t C(t) : sa dure dexcution rsiduelle au temps t L(t) = D(t) C(t) : sa laxit rsiduelle au temps t

    Figure 3.5 Exemple dvolution de la laxit dune tche, pour un ordonnancement EDF

    T00 5 10 15 20 25 30 35

    T1

    LT1(t)

    A partir de la dfinition de la rgle, nous pouvons dduire deux implmentations de LLF :

    1. La laxit rsiduelle est calcule au lancement de la tche. Nous nous trouvons dans un cas defigure de type EDF

    2. La laxit rsiduelle est calcule chaque instant t.

    La deuxime option est videmment la plus intressante. Elle permet dexcuter, un instant t, la

    tche qui a le moins de marge disposition pour tenir son chance.

    3.5.1 Analyse dordonnanabilit

    La condition dordonnanabilit est identique celle dEDF. Nous avons donc la condition suffi-sante et ncessaire suivante :

    ni=1

    Ci

    Pi 1 (3.27)

    Programmation Temps Rel cYann Thoma // HEIG-VD

  • 7/28/2019 introduction programmation temps rel

    35/35

    Bibliographie

    [1] Site web Xenomai : http ://www.xenomai.org .

    [2] Doug ABBOTT. Linux fo Embedded and Real-time Applications. Newnes, 2003.

    [3] Alan BURNS et Andy WELLINGS. Real-Time Systems and Programming Languages.Addison-Wesley, second edition dition, 1997.

    [4] Giorgio C. BUTTAZZO. Hard Real-time Computing Systems. Kluwer Academic Publishers,2000.

    [5] Francis COTTET, Jolle DELACROIX, Claude KAISER et Zoubir MAMMERI. Ordonnance-ment temps rel. HERMES Science Publications, 2000.

    [6] Alain DORSEUIL et Pascal PILLOT. Le Temps Rel en Milieu Industriel. Dunod, 1991.

    [7] Bruce Powel DOUGLAS. Real Time UML. Addison-Wesley, third edition dition, 2004.

    [8] Jack GANSSLE. The Art of Designing Embedded Systems. Newnes (Elsevier), 2008.

    [9] Cameron HUGHES et Tracey HUGHES. Parallel and Distributed Programming Using C++.Addison-Wesley, 2003.

    [10] Omar KERMIA. Ordonnancement temps rel multiprocesseur de tches non-premptivesavec contraintes de prddence, de priodicit stricte et de latence . PhD thesis, UniversitParis XI, UFR scientifique dOrsay, 2009.

    [11] Mark H. KLEIN, Thomas RALYA, Bill POLLAK, Ray OBENZA et Michael Gonzlez HAR-BOUR. A Practioners Handbook for Real-Time Analysis : Guide to Rate Monotonic Analysis

    for Real-Time Systems. Kluwer Academic Publishers, 1993.

    [12] Phillip A. LAPLANTE. Real-time Systems Design and Analysis. IEEE Press, second editiondition, 1997.

    [13] R.J. WIERINGA. Design Methods for Reactive Systems. Morgan Kaufmann Publishers, 2003.[14] P. Meumeu YOMSI et Y. SOREL. Extending Rate Monotonic Analysis with Exact Cost of

    Preemptions for Hard Real-Time Systems . Dans 19th Euromicro Conference on Real-TimeSystems. ECRTS 07., pages 280290, 2007.

    [15] Luigi ZAFFALON. Programmation Synchrone de Systmes Ractifs avec Esterel et les Synch-Charts. Presses Polytechniques et Universitaires Romandes, 2005.