Documente Academic
Documente Profesional
Documente Cultură
P ROGRAMMATION T EMPS R EL
HEIG-VD
2010
Chapitre 1
Introduction la programmation temps rel
U
N SYSTME temps rel est un systme informatique devant rpondre des stimuli de
lenvironnement en tenant compte de contraintes de temps. Le comportement correct
dun tel systme ne dpend donc pas uniquement des rsultats fournis, mais galement
de 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. Les
donnes 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 la
gestion dune partie du systme. La figure 1.1 illustre linteraction qua un tel systme avec son
environnement, dans le cas dune tche de contrle. Nous pouvons noter que certains systmes
nauront pas proprement parler de systme de gestion des sorties vers lenvironnement. Les sorties
pourront effectivement tre un fichier restant interne au systme informatique.
Systme
temps rel Systme de
contrle
Environnement
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 informations
dentre sans quelles soient trop vieilles pour lintrt quelles reprsentent, et par
ailleurs, de ragir celles-ci suffisamment vite pour que cette raction ait un sens. [6]
Temps Exemple
nanosecond - O(ns) Temps daccs une RAM (5-80ns)
Dure entre deux ticks dhorloge dun processeur Pentium
(1GHz)
Frquence de 1GHz (109 Hz)
microseconde - O(s) Traitement dans un noyau de systme dexploitation (chan-
gement de contexte, interruption matrielle)
Systmes utilisant des radars (navigation, dtection de
mouvement, etc.)
Transmission sur des bus de terrain, transmission radio
Frquence 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-
munication
Frquence de 1 KHz (103 Hz)
seconde (s) - O(s) Systmes de visualisation humain (temps durant lequel
loeil peut "intgrer" 25 images au plus)
Applications multimdia
Temps de rponse des applications informatiques (accs
DB, 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 aux
fautes 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 tre
pens 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 rel
doit 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 des
tches. 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
Le code dune tche devant tre excute dans un contexte temps rel doit tre particulirement bien
conu. Nous notons ici trois lois quun dveloppeur devrait respecter :
Absence de structures de donnes dynamiques. Les langages de haut niveau permettent dallouer
et de dsallouer dynamiquement de la mmoire lors de lexcution. Toutefois ces oprations sont
trs lourdes en termes de temps processeur, et ne peuvent aisment tre bornes en temps. Ds
lors il est trs dlicat dvaluer le pire temps dexcution dune tche excutant une allocation
mmoire. Si des allocations dynamiques sont ncessaires, elles devraient tre faites au lancement
du systme, mais pas durant son excution courante.
Absence de rcursion. Les appels rcursifs devraient tre vits, car, si la profondeur de rcursion
nest 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 pouvoir
estimer 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 permettent
par 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 avec
dautres tches. Ces diffrents appels systme, vus par le programmeur, restent des appels des
fonctions 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 appeles
devraient 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 dexploitation
standards, 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 rellement
prsente. Ce concept puissant a toutefois un dsavantage en termes de temps dexcution. Les accs
mmoires 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 prdire
le 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 les
OS standards.
Verrous/Smaphores
Nous verrons plus loin le concept de verrous et de smaphores. Les verrous servent protger une
ressource 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 crire
des donnes en mme temps sous peine de corruption de fichier. Lutilisation de verrous dans un
cadre 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,
allocation de ressource base sur une pile) qui doivent tre implments dans le noyau. Les fonctions
daccs aux verrous et aux smaphores doivent donc tre adaptes pour pouvoir donner des garanties
sur 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 peut
donc 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 impossible
de savoir quand ses interruptions peuvent survenir, ni quel sera leur frquence. Afin de grer tout de
mme 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 au
soin des tches, qui doivent aller rgulirement vrifier ltat des priphriques et agir en
consquence. Lobservation des priphriques se fait donc par scrutation, ce qui oblige le
processeur tre oisif lorsquil est en attente dune entre. De la puissance de calcul est
alors perdue chaque fois quune tche doit attendre quil se passe quelque chose sur un
priphrique.
2. Toutes les interruptions sont masques, lexception du timer. Une routine du noyau est alors
appele rgulirement et vrifie ltat des diffrents priphriques. Si un priphrique voit son
tat modifi, la routine averti alors la tche attendant les donnes y relatives. Cette approche
permet de grer les priphriques avec une tche priodique borne, qui peut sans autre tre
prise 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 ny
fait que noter le fait quune interruption a t leve, et active la tche qui tait en attente
sur des donnes particulires. Ici une tche ayant besoin dattendre des donnes venant dun
port de communication sera mise en attente passive et permet de ne pas gaspiller du temps
processeur en excutant une boucle de scrutation. Le temps de gestion de linterruption par
la 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 permettant
dacclrer le traitement global, ce mcanisme peut momentanment ralentir le cours dexcution
car le processeur doit partager le bus de donnes avec le contrleur DMA. Si la tche excute par le
processeur 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 tre
nglig lors de lestimation du temps dexcution dune tche.
1. Portion de code charge dans le noyau, et responsable de la bonne gestion dun priphrique.
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 de
localit 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 accs
russi et lesquels seront des checs. Il est donc possible de borner le temps dexcution dune tche
lorsquil 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 aisment
conduire lobservation dun systme fonctionnant parfaitement le 99% du temps et se retrouvant
soudainement dans un tat non grable. Ces facteurs doivent donc tre finement analyss lors de la
mise au point dune application temps rel.
garanti pour chacun de ces scnarios. Lensemble du systme doit videmment tre suffisamment
connu pour pouvoir fournir de telles garanties.
A titre dexemple, le contrle dun avion par un pilote automatique est un systme temps rel
strict.
Il existe galement des systmes appels temps rel ferme (firm), o la pertinence du rsultat est
nulle 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 calculer
des 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 temps
moins exigeantes que les prcdents. Une faute temporelle ny est pas catastrophique pour le
fonctionnement. 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 des
applications 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 dune
chance stricte ou firme, pass lchance, le calcul na plus aucune valeur. La diffrence entre
ces deux cas vient du fait quune chance stricte manque met en pril le systme, alors quune
chance firme manque implique uniquement que le rsultat du calcul nest plus pertinent. Dans
le cas dune chance molle, la pertinence du rsultat perd de sa valeur aprs lchance, mais ce
dune manire plus douce.
E
N PROGRAMMATION 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 suite
des 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, des
temps dexcution et des chances diffrentes. Il serait parfois possible de les combiner en une
seule tche, mais cet exercice nest pas souhait, notamment cause du contrle plus dlicat sur les
parties dexcution que ceci impliquerait.
Considrons un simple systme compos de deux entres (un port srie et un clavier), dune partie
de 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, en
milieu de traitement, aller vrifier ltat du port srie, sans oubli la gestion du clavier. Il faudrait
galement 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 imaginer
une tche responsable de lire les donnes venant du port srie, et ce une cadence garantissant le
respect des chances visant ne pas perdre doctet. Une autre tche serait responsable de la gestion
du clavier, une autre du traitement, et enfin une dernire de la gestion de la sortie. Des mcanismes
de communication peuvent tre mis en oeuvre pour permettre aux diffrentes tche de schanger
des 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 a
t rendu possible par la mise au point de systmes dexploitation nettement plus complexes. Un
processeur 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 tche
responsable dexcuter un calcul lourd pendant quun autre gre les interactions avec lutilisateur. Il
est 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 sexcutent
tour tour de manire transparente, et sur un multi-coeur, un rel paralllisme peut tre observ,
Espaced'adressage
Processus
stacksegment
datasegment
textsegment
(code)
La deuxime contenant des informations lies ltat dexcution, telles que le compteur de
programme (aussi appel compteur ordinal) et la pile dexcution. Cette partie correspond une
tche. Il est noter que chaque tche possde un compteur de programme et une pile. Il sagit de
la partie lie la tche.
Etant donn que les tches dun mme processus partagent le mme espace dadressage, une
tche 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 de
manire approprie.
Toujours li au partage de lespace dadressage, si une tche effectue un accs mmoire erron
fatal, 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 plus
aisment rutiliss.
Espaced'adressage
Processus
stacksegment
threadA PileduthreadA
Attributs Registres
ThreadID
________ ________
________ fonctionA()
priorit=2 SP
212 i=100
taille=... PC
... ...
threadB PileduthreadB
Attributs Registres
ThreadID
________ ________
________ fonctionB()
priorit=2 SP
315 i=10
taille=... PC
... ...
main()
datasegment
ThreadA
threadB
x
y
textsegment
pthread_tthreadA;
pthread_tthreadB;
intx;
inty;
voidfonctionA(void*p)
{
inti=100;
}
voidfonctionB(void*p)
{
inti=10;
}
main()
{
pthread_create(&threadA,NULL,fonctionA,NULL);
pthread_create(&threadB,NULL,fonctionB,NULL);
...
}
Dans le cadre de systmes temps rel, un autre avantage du multi-tche est la possibilit de mieux
grer les chances et priodes des tches. Nous reviendrons sur ces notions dans le chapitre sur
lordonnancement.
Figure 2.3 Etats et transitions dune tche dans un contexte temps rel.
non existante
cration prte
requte premption
rveil
faute temp.
excution
passive faute temporelle
bloque
premption
attente
terminaison requte
terminaison
lue termine
Ce passage nest pas du ressort de la tche, mais bien de lordonnanceur, qui soccupe dallouer
le processeur aux diffrentes tches concurrentes, et ce en suivant la politique dordonnancement
choisie. A tout instant lordonnanceur peut replacer la tche dans ltat prte, pour laisser une autre
tche sexcuter. Il sagit de la premption dune tche, qui se fait sans que la tche prempte
nen soit consciente. Depuis ltat lue, la tche peut aussi se retrouver dans ltat bloque, lors
de lattente dun vnement ou du relchement dun mutex, par exemple. La tche ressort de cet
tat par son rveil suite au relchement dun mutex ou au fait quun vnement sur lequel la tche
attend 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. Elle
peut galement terminer une occurence, et passer dans ltat passive, si elle est priodique. Il est
intressant de noter que des fautes temporelles peuvent survenir, la tche nayant pas termin son
traitement temps. Ceci peut faire passer la tche de ltat lue ou prte ltat passive. Elle y
restera 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 est
gr 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 donc
survenir nimporte quel instant. Il sagira typiquemenent de tches de configuration, et de tches
actives 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 cas
o une tche doit attendre quune autre ait termin son traitement pour pouvoir commencer le
sien.
Au niveau des politiques dordonnancement, il est clair que les dpendances entre tches auront un
rle crucial et devront tre prises en compte de manire judicieuse.
L = D C : sa laxit nominal. Indique le retard maximum que peut prendre la tche sans
dpasser 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 :
u1
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 priodique
lest 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 la
priode (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 la
tche tant reprsente par une flche pointant vers le bas.
Ti
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.6 Paramtres typiques dune tche priodique chance sur requte T .
D=P D=P
C C
T
r0 s0 f0 r1 s1 f1 r2
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. Certains
algorithmes ne peuvent tre appliqus quau des systmes monoprocesseur (ordonnancement mo-
noprocesseur), alors que dautres se destinent des systmes multi-processeur (ordonnancement
multiprocesseur). 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 peuvent
tre premptes (cf. figure 2.8), tandis que les algorithmes non-premptifs traitent de ceux dont
une tche ayant commenc son traitement doit obligatoirement le terminer avant quune autre ne
sexcute (cf. 2.7).
T1
T0
T1
T0
La possibilit de premption permet notamment dviter que le processeur ne soit occup trop
longtemps par une tche, ce qui pourrait empcher une autre tche de se terminer temps. Cette
flexibilit 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 un
systme 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 tous
les 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 chaque
moment dordonnancement dans une table, lordonnanceur exploitant ensuite cette information pour
slectionner 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 raliser
dans un systme embarqu.
Un ordonnancement en-ligne est effectu durant le fonctionnement du systme. Lordonnanceur
recalcule un nouvel ordonnancement chaque fois quune nouvelle tche est active. Lavantage de
cette 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 simple
et rapide possible, rendant impossible une solution dite optimale. Diffrents algorithmes permettent
de rsoudre ceci, notamment en utilisant des heuristiques.
Statique/dynamique
Un ordonnancement est dit statique sil est uniquement bas sur les proprits des tches avant le
lancement 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 de
priorit).
Optimal/non optimal
Un algorithme dordonnancement est dit optimal sil est capable de fournir un ordonnancement qui
respecte toutes les contraintes de temps si un tel ordonnancement existe. Si un algorithme optimal
nest pas capable de trouver un ordonnancement correct, aucun autre algorithme ne le pourra. Un
algorithme non optimal (ou heuristique, ou best effort) na pas la prtention dtre optimal, mais
doit faire de son mieux pour fournir un ordonnancement le plus proche possible de loptimal.
Comment calculer lefficatit dun algorithme dordonnancement ? La question est dlicate et peut
conduire plusieurs rponses. Il faut en effet dfinir le facteur valuer. Le tableau 2.1 donne des
fonctions de cot qui peuvent tre exploites pour la comparaison des algorithmes.
Nom Fonction
n
1
(fi ri )
P
Temps de rponse moyen tr = n
i=1
Cet algorithme fonctionne de la manire la plus simple qui soit. Les tches sont stockes dans une
structure 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.
Afin dviter que des tches courtes ne doivent attendre trop longtemps sur des tches longues, il
est 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 problmes
de cette approche est le risque de famine des tches longues. Si de nouvelles tches courtes son
rgulirement rveilles, il se peut quelles passent toujours devant une tche longue, empchant
ainsi celle-ci de sexcuter.
La figure 2.10 illustre le fonctionnement de cet algorithme.
T2
T1
T0
0 5 10 15
T2
T1
T0
0 5 10 15
Round robin/tourniquet
Lalgorithme du tourniquet (round robin en anglais) vise traiter les tches avec le plus dquit
possible, en allouant un quantum de temps identique toutes les tches, et les traiter dans un ordre
FIFO. Les tches sont places dans une file dattente, et la premire de la file est excute pendant
un quantum de temps. A la fin de ce quantum, si la tche nest pas termine, elle est replace la
fin de la file et une nouvelle tche est slectionne depuis le dbut de la file. Si la file est vide, la
tche peut continuer son excution.
La figure 2.11 illustre cet algorithme, avec un quantum de temps gal 2. Nous pouvons noter que la
tche T0 garde laccs au processeur lorsquelle se retrouve tre la seule en cours dexcution. Il ny
a donc pas de changement de contexte si ceci nest pas ncessaire. Cette technique de tourniquet
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 sagira
dune variante avec priorit.
T2
T1
T0
0 5 10 15
Priorit fixe
Lalgorithme du tourniquet traite toutes les tches sur le mme pied dgalit. Hors il est souvent
ncessaire de dfinir des priorits entre tches, afin par exemple de garantir que la lecture dun
fichier 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, pour
autant 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 que
la tche T1 , la plus prioritaire, est excute au dpart, puis un tourniquet est effectu pour les deux
autres tches. Cette technique de tourniquet priorit correspond la politique standard observe
dans les systmes dexploitation, car elle permet toutes les tches de sexcuter sans risque de
famine.
T2
T1
T0
0 5 10 15
T2
T1
T0
0 5 10 15
3.1 Introduction
L
E PROBLME fondamental en programmation concurrente est celui de garantir le respect
des chances des diffrentes tches le constituant. Il existe en outre un grand nombre
de 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 dun
capteur tous les diximes de seconde. Ces tches sont appeles tches priodiques, puisquelles
doivent sexcuter rgulirement, en suivant une priode fixe.
Pour la mise au point des algorithmes dordonnancement dans le cadre des tches priodiques, nous
utiliserons la notation suivante :
Variable Description
Dans la suite de ce chapitre, nous allons en outre faire les hypothses suivantes :
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
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 gigues
suivantes :
La gigue de release relative (Relative Release Jitter) dune tche est la dviation maximale des
temps de dmarrage de deux instances conscutives :
La gigue de release absolue (Absolute Release Jitter) dune tche est la dviation maximale des
temps de dpart sur toutes les instances :
La gigue de fin relative (Relative Finishing Jitter) dune tche est la dviation maximale des
temps de fin de deux instances conscutives :
La gigue de fin absolue (Absolute Finishing Jitter) dune tche est la dviation maximale des
temps de fin sur toutes les instances :
O le P P CM dnote le plus petit multiple commun des priodes des tches. Ds lors, si les tches
sont ordonnanables sur la priode dtude, nous pouvons garantir quelles le seront pour un temps
infini, tant donn que lordonnancement pourra tre calcul en rptant la squence de tches
trouve 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 :
Ce facteur U correspond la charge applique par lensemble des tches sur le processeur. Il est
vident que la charge maximale ne doit pas dpasser 1, sans quoi le processeur nest pas mme
dexcuter lensemble des tches.
n
X Ci
U= 1 (3.12)
P
i=1 i
U , qui doit donc tre plus petit que 1, dpend en outre des caractristiques des tches, ainsi que de
lalgorithme dordonnancement utilis pour les ordonnancer. Pour un algorithme A particulier et
un ensemble de tches , il existe une valeur Uub (, A) au-del de laquelle les tches ne sont pas
ordonnanables. Uub est la limite maximale dutilisation du processeur (Upper Bound).
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. Pour
un algorithme A donn, nous pouvons dfinir la valeur minimale des Uub (Least Upper Bound) :
De ce fait, un ensemble de tches est ordonnanable si son facteur dutilisation du processeur est
infrieur cette limite minimale :
n
X Ci
U = Ulub (A) = minUub (, A) est ordonnanable (3.14)
i=1
Pi
3
U3
2
U2
1
U1
0 Ulub 1
T2
T1
T0
0 5 10 15 20 25
n Ulub
1 1.000
2 0.828
3 0.780
4 0.757
5 0.743
Donc, si U est plus petit que 0.69, lensemble est ordonnanable. Sil est plus grand, il faut le
comparer 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. Il
sagit galement dune condition suffisante mais pas ncessaire :
n
Y
(Ui + 1) 2 (3.17)
i=1
Cette condition est moins restrictive que la prcdente, et est donc intressante.
T2
T1
T0
0 5 10 15 20 25
Ce test nest toutefois pas vraiment optimal, car la charge du processeur y est surestime. Il est
possible 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 toutes
les tches sont actives simultanment ;
2. Le pire temps de rponse dune tche correspond la somme de son temps dexcution et des
interfrences 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 :
i1
& '
X Di
Ii = Cj (3.20)
j=1
Pj
valable pour lalgorithme Rate Monotonic et Deadline Monotonic. Ce test consiste en le calcul du
pire temps de rponse des tches, en prenant en compte les interfrences des tches de priorit
suprieure.
Lide est de partir du pire cas, o toutes les tches sont actives au mme instant. Le temps de
rponse Ri dune tche i est alors la somme de son temps dexcution et du temps dexcution de
toutes les tches de priorit suprieure :
R i = Ci + I i (3.21)
O
i1
& '
X Ri
Ii = Cj (3.22)
j=1
Pj
l m
Ri
Dans cette quation, le terme Pj Cj reprsente linterfrence de la tche j sur la tche i le temps
Ri .
Nous avons donc :
i1
& '
X Ri
Ri = Ci + Cj (3.23)
j=1
Pj
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 :
i
X
Ri0 = Cj (3.24)
j=1
2. Si ce temps de rponse est au-del de lchance Di , la tche nest pas ordonnanable. Sinon
nous passons au point suivant.
3. Nous calculons le point dapproximation suivant :
i1
& '
Rin
Rin+1
X
= Ci + Cj (3.25)
j=1
Pj
4. Si Rin+1 = Rin , 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 :
Pour T0 , qui est la tche la plus prioritaire, il suffit de vrifier que son cot soit plus faible que son
chance.
T2
T1
T0
0 5 10 15 20
T1
T0
0 5 10
Nous pouvons observer que la tche T0 est prempte au temps 1 par la tche T1 , et lorsque cette
dernire est termine, T0 peut reprendre son excution. Dans le cas non-premptif, larrive de
la tche T1 au temps 1 voit la tche T0 continuer son excution, tant donn quelle ne peut tre
prempte :
T1
T0
0 5 10
Nous pouvons donc observer que lchance de T1 nest pas respecte. Lordonnancement suivant
est une solution possible dans le cadre non-premptif :
T1
T0
0 5 10
Cet ordonnancement montre quune solution existe dans ce cadre. Toutefois, EDF traite les tches
ds leur moment darrive. Sans la connaissance a priori des temps darrive des tches, il nest pas
possible, au temps 0, de prendre la dcision de retarder lexcution de T0 . En effet, ici le processeur
reste 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 faisable
devient NP-dur.
Figure 3.5 Exemple dvolution de la laxit dune tche, pour un ordonnancement EDF
LT1 (t)
T1
T0
0 5 10 15 20 25 30 35