Vous êtes sur la page 1sur 27

Chapitre 3

Ordonnancement de tches temps rel


et standard Posix

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


93

1. Introduction la problmatique dordonnancement


Concepts et dfinitions

T2
T3

T1 R1 T4
Document de conception

T6 R2 T5

Ensemble de tches

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


94

1
Contraintes de tches (1)

Top dpart Dure dexcution Echance

Contraintes individuelles

Contraintes collectives

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


95

Contraintes de tches (2)

Modle simple (tches priodiques)

1re activation 2me activation ime activation


1re chance 2me chance ime chance
a b c

r0 r0+D r0+P r0+P+D r0+(i-1)P r0+(i-1)P+D


0
Dlai critique

r0 : date de premire activation


C : pire dure dexcution = Max(a) + Max(b) + Max(c)
D : dlai critique
P : priode Si P = D : chance sur requte

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


96

2
z Charge processeur dune application TR

Ci
ui = : Pourcentage de lactivit du processeur ddie la tche Ti
Pi

n
U =
Ci
: Charge processeur = taux dutilisation du processeur
Pi
pour les tches priodiques
i= 1

U > m application non ordonnanable sur m processeurs


(U m : Condition ncessaire, mais pas suffisante)

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


97

Contraintes de tches (3)

z Type de tche (critique ou non)

z Priorit de tche

z Premptible ou non

z Contraintes temporelles

Tche priodique ou apriodique


Priode
Instant darrive (fixe, cyclique, alatoire)
Dure d'excution (Worst Case Execution Time )

Echance absolue (date au plus tard de terminaison)

Echance relative (temps de rponse maximum)

Autres

z Autres contraintes

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


98

3
Contraintes de tches (4)
Contraintes collectives

z Contraintes de relations entre tches


- Prcdence
- Partage de ressources

z Contraintes de rpartition

z Contraintes de tolrance aux fautes

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


99

Notion dordonnancement

z Ordonnancement = liste (partiellement) ordonne daccs aux ressources partages

z Entits ordonnanables : tches, threads, processus, messages,

z Ordonnancement valide : Ordonnancement qui satisfait les contraintes temporelles

z Lordonnancement = discipline qui puise ses racines dans la recherche oprationnelle

z Priorits
P i it importantes
i t t attendues
tt d
Optimalit
Stabilit
Complexit

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


100

4
Classification des algorithmes dordonnancement

z Ordonnancement statique / Ordonnancement dynamique

z Ordonnancement hors ligne / Ordonnancement en ligne

z Premptif / Non premptif

z A priorits statiques / A priorits dynamiques

z Monoprocesseur / Multiprocesseur

z Local / Global (distribu)

z Oisif / Non oisif

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


101

2. Principaux algorithmes dordonnancement de


tches priodiques indpendantes

z A priorits statiques

Rate Monotonic : fond sur les priodes

z A priorits dynamiques
Earliest Deadline First (EDF) : fond sur les chances

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


102

5
Rate Monotonic

La priorit est inversement


Principe proportionnelle la priode
Priorit = F(Priode)
Plus petite priode Plus prioritaire

RM est optimal (pour Pi = Di)

Condition dordonnanabilit (pour Pi = Di) :

CS (thorme de la limite dutilisation - Lui 73)


n
Pii n(2
C 1
n
1)
i =1

log 2 69%
1
n(2 n 1 ) log 2 quand n

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


103

RM : exemple 1

r1 = r2 = 0 D 1 = P1 = 6 D 2 = P2 = 9
C1 = 2 C2 = 3

Prio2 < Prio1

T1

T2
0 2 5 6 8 9 12 14 16 18

U = 0,67 < 2(21/2 -1) = 0,83 CS vrifie

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


104

6
RM : exemple 2

r1 = r2 = r3 = 0 D 1 = P1 = 6 D 2 = P2 = 9 D3 = P3 = 18
C1 = 2 C2 = 3 C3 = 4

Prio3 < Prio2 < Prio1

T1

T2

T3
0 2 5 6 8 9 12 14 16 18

U = 0,89 > 3(21/3 -1) = 0,78 CS non vrifie

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


105

Earliest Deadline First

La priorit est inversement


proportionnelle l chance
Principe
Echance la plus proche Plus prioritaire

EDF est optimal pour les systmes de tches indpendantes (pour Pi = Di)

CNS pour les systmes chance sur requte :

U1

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


106

7
EDF : exemple

r1 = r2 = 0 D 1 = P1 = 5 D 2 = P2 = 3
C1 = 3 C2 = 1

T1

T2

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

U = 3/5 + 1/3 = 14/15 < 1 le systme est ordonnanable par EDF

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


107

3. Ordonnancement de tches apriodiques indpendantes

z Cas des tches apriodiques contraintes strictes (Sporadiques)

Tapi(ri, Ci, Di)


Alarme
coupure courant

Transformation ( la conception) de tches apriodiques en tches priodiques

Acceptation dans les temps creux dune squence rigide de tches


(utilisation de test dacceptation)

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


108

8
z Cas des tches apriodiques contraintes relatives

Pas dchance
Tapi(ri, Ci)
Transfert dimage
Optimiser le temps de rponse

Traitement en arrire plan (background processing)


les tches apriodiques sont traites pendant les temps d'oisivet du processeur
(quand il ny a pas de tches priodiques excuter).

Utilisation d
d'un
un serveur de tches apriodiques

Autres techniques

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


109

z Serveur de tches apriodiques


z Un serveur = une tche priodique dfinie par une priode Ps et une
capacit Cs

z Quand le serveur est activ sa capacit est utilise par les tches
apriodiques quil gre pour sexcuter (i.e. les tches apriodiques
sexcutent
la place du serveur)

z Les tches apriodiques sont excutes seulement quand elles arrivent


et quand la capacit du serveur nest pas nulle

z Diffrents types de serveurs existent selon les mthodes de


rapprovisionnement de la capacit du serveur
- serveur scrutation
- se
serveur
eu ajournable
ajou ab e
- serveur sporadique
- serveur change de priorit
- serveur Earliest Deadline Last (EDL)
- serveur largeur de bande maximale
-

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


110

9
Diffrentes stratgies pour le traitement de tches apriodiques

tches
priodiques

rejet

tches Test Processeur


sporadiques dacceptation

Serveur X

tches Serveur Y
apriodiques

Arrire
plan

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


111

Traitement en arrire plan

File d'attente
de priorit leve
tches RM EDF,
RM, EDF ...
priodiques

Processeur

tches
apriodiques FIFO ou priorit
File d'attente
de priorit faible

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


112

10
Traitement en arrire plan : exemple

T1 (r0 = 0, C=4, P=10)


0 4 10 14 20

T2 (r0 = 0, C=5, P=20)


0 2 4 9 20

Temps creux
0 9 10 14 20

Tches apriodiques
0 8 9 10 14 18 20

T4 (r =12, C=3)
T3 (r =8, C=2)

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


113

Serveur sporadique (sporadic server)

z Le serveur sporadique permet damliorer les temps de rponse des tches


apriodiques, sans affecter les tches priodiques.

z Le serveur sporadique ne rapprovisionne pas sa capacit de manire priodique


mais seulement quand elle a t consomme par des tches apriodiques.

z Il existe plusieurs formes de serveurs sporadiques, pour priorits fixes ou


dynamiques (les serveurs sporadiques se distinguent par la manire de consommer
et rapprovisionner la capacit de service)

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


114

11
Fonctionnement dun serveur sporadique simple (1)
(avec priorits fixes)
PRexe : priorit de la tche en cours dexcution.
PRs : priorit du serveur sporadique.
Ps : priode du serveur sporadique. Cs : capacit maximale du serveur sporadique.
RT : instant o aura lieu le rapprovisionnement de la capacit du SS.
RA : quantit
tit d
de rapprovisionnement
ii t quii sera rajoute
j t lla capacit
it du
d SS.
SS
Le SS est dit activable quand PRexe PRs (SS en cours de service ou bloqu par une tche
plus prioritaire). Le SS est dit inactif quand PRexe < PRs .
Quand une tche apriodique arrive, elle sexcute si la capacit du serveur nest pas nulle et si
la priorit du serveur le permet (les tches apriodiques sexcutent avec le mme niveau de
priorit que le serveur sporadique).
Rgles de rapprovisionnement de la capacit du serveur sporadique
z A linitialisation, la capacit du SS est approvisionne avec la valeur maximale Cs.
z Linstant de rapprovisionnement RT est fix ds le moment o le SS devient activale et Cs > 0
(soit ta ce moment). La valeur de RT est fix ta + Ps.
z La quantit de rapprovisionnement, RA, effectuer linstant RT est fixe au moment o le SS
devient inactif ou quand sa capacit est puise (soit t1 ce moment). La valeur de RA est fixe
une quantit gale celle consomme durant lintervalle [ta, t1].

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


115

Serveur sporadique avec RM : exemple (1)

Ts (r0 = 0, Cs = 5, Ps = 10, Ds = 10)

T1 t
(C=1, P=5)
5 10 15 20
T2
t
(C=4, P=15)
5 10 15 20
C=2 C=2
Tches t
apriodiques
5 10 15 20
Serveur t
activable
ta 1 5 10 15 20
t11 ta2 t12
Cs(t)
5
4 RA3 = 2
3
RA1 = 0 (rien na 2 RA2 = 2
t consomm 1 t
RT1 RT2 RT3
dans [0, 1]
0
5 10 15 20

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


116

12
Serveur sporadique avec RM : exemple (2)

- A t = 0, T1 (tche la plus prioritaire) est active et le SS (serveur sporadique) devient activable.


Comme Cs > 0, RT1 est fix t + Ps =10. (ta1 = 0)
- A t = 1, T1 se termine, le SS devient inactif, car il na pas de tche apriodique servir.
RA1 (pour t11 = 1) est gale 0 et aucun rapprovisionnement nest effectu linstant RT1, car
aucune quantit de la capacit du SS n na
a t consomme dans llintervalle
intervalle [0, 1].
- A t = 4, une tche apriodique, T3, arrive. Comme Cs > 0, le SS devient actif et T3 sexcute.
Par consquent un rapprovisionnement est prvu RT2 = t + Ps = 14. (ta2 = 4)
- A t = 5, la tche apriodique T3 est prempte par T1. Le SS reste activable pendant la premption.
- A t = 6, T1 se termine et T3 reprend son excution et se termine t = 7.
- A t = 7, le SS devient inactif. La quantit de rapprovisionnement faire RT2 est gale
la capacit consomme pendant lintervalle [4, 7], cest--dire, RA2 = 2.
- A t = 8,
8 le SS devient actif pour servir une nouvelle tche apriodique
apriodique, T4, arrive t = 8.
8 Un
nouveau rapprovisionnement est prvu RT3 = t + Ps = 18. (ta3 = 8)
- A t = 10, T4 se termine, mais le SS reste activable car PRexe PRs.
- A t = 11, le SS devient inactif et la quantit de rapprovisionnement faire linstant RT3 est fixe
RA3 = 2 (2 tant la capacit consomme dans lintervalle [8, 11]).

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


117

4. Partage de ressources

Utilisation de ressources critiques


Mono ou multi exemplaires
Mode lecture/criture
Fichiers, BD Ressource
Demande de 1 ou n ressources physique

Difficults :
Interblocage
Inversion de priorits

E/S Rseau

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


118

13
Inversion de priorit

Libration
Prio3 < Prio2 < Prio1 de ressource

R
T3 R R R

R
T2

R
T1 R

R
Dure de blocage

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


119

Protocole hritage de priorit : PIP


(Priority Inheritance Protocol)

z Principe
La tche Ti qui possde une section critique
prend une priorit gale au Max{Prioi, Priok | Tk en
attente de la section critique}.

Quand Ti sort de la SC, elle reprend sa priorit initiale.

z Utilisable pour les ressources mono exemplaires

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


120

14
Exemple du protocole hritage de priorit

Reprend Prio3
Hrite de Prio1
R
T3 R R R

T2

R
T1 R

Blocage R
Prio3 < Prio2 < Prio1

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


121

Protocole plafond de priorit : PCP (Priority Ceiling Protocol)

z Principe
Chaque ressource Rx possde une priorit plafond gale
Max(Prio
( k | Tk p
pouvant accder Rx}}.
On note s le maximum des priorits plafonds des ressources en cours
dutilisation par des tches. s est gal une valeur infrieure
la priorit la plus basse quand aucune ressource nest utilise.

Quand une tche Ti veut accder une ressource Rx qui est libre :
- Cas 1 : si Prioi est suprieur s, alors Ti obtient Rx.
- Cas 2 : si Prioi nest pas suprieur s, alors Ti obtient Rx seulement si Ti est
la tche qui dtient la (ou les) ressource(s) dont le plafond est gal s.
- Autres cas : Ti est bloque.
Une tche Ti qui est en SC prend la priorit
Prio = Max{Prioi, Priok| Tk en attente de SC}. En dautres termes, si une tche
Ti bloque une tche Tj, Ti hrite de Prioj si Prioj > Prioi.
Quand Ti sort de la SC, elle reprend la priorit quelle avait avant dentrer en SC.

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


122

15
Exemple de fonctionnement de PCP

T1 T2 R2 T4 T3
R1

R3

Prio4 < Prio3 < Prio2 < Prio1


Plafond(R1) = Prio1 Plafond(R2) = Prio2 Plafond(R3) = Prio2

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


123

Exemple de fonctionnement de PCP (suite)

T1
R2
Plafond((R3) = Prio2 => requte
q refuse
T2

T3

R3 Hrite de Prio2

T4 R3 R3

Prio4 < Prio3 < Prio2 < Prio1


Plafond(R1) = Prio1 Plafond(R2) = Prio2 Plafond(R3) = Prio2

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


124

16
Exemple de fonctionnement de PCP (suite)

R1
Plafond(R3) = Prio2 < Prio1
T1 R1

R2 R1
T2

T3
Prio2 > Prio3
R3 Hrite de Prio2 R2 Pas de ressource alloue
dautres tches
T4 R3 R R3 R3 R2 R3
3

R2 R3
Prio4 < Prio3 < Prio2 < Prio1
Plafond(R1) = Prio1 Plafond(R2) = Prio2 Plafond(R3) = Prio2

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


125

Exemple de fonctionnement de PCP (suite)

R1
Plafond(R3) = Prio2 < Prio1
T1 R1

R2 R1 R3
T2 R2 R3 R2 R2

R2
R3
T3
Prio2 > Prio3
R3 Hrite de Prio2 R2 Reprend sa Prio4

T4 R3 R R3 R3 R2 R3
3

R2 R3
Prio4 < Prio3 < Prio2 < Prio1
Plafond(R1) = Prio1 Plafond(R2) = Prio2 Plafond(R3) = Prio2

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


126

17
5. Ordonnancement avec POSIX

z Principes

- Chaque processus peut demander tre ordonnanc avec une politique quil choisit.

- Il y a quatre politiques :
* SCHED_FIFO
SCHED FIFO
* SCHED_RR
* SCHED_SPORADIC (introduit par Posix de 1999)
* SCHED_OTHER (attention la portabilit des applications!)

- Chaque politique dfinit un nombre minimum de priorits (32 niveaux au moins) pour
ordonnancer les processus.

- Posix utilise une structure sched_param qui contient les infos ncessaires lordonnancement
pour chaque politique supporte.

- Lutilisation des primitives dordonnancement ncessite lintgration du fichier entte <sched.h>

- Quand des threads sont en attente sur des mutex ou variables conditionnelles,
ils sont rveills selon leur ordre de priorit (i.e. le plus prioritaire est rveill en premier).

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


127

Politiques dordonnancement

z SCHED_FIFO (First In First Out)


- Les threads excuter sont placs dans une file selon leur ordre darrive.
- Il y a une liste par priorit.
- Premption : Le thread en cours dexcution continue sexcuter jusqu sa fin ou bien
jusqu
jusqu ce quil
qu il se bloque ou jusqu
jusqu
ce quun
qu un thread plus prioritaire demande ssexcuter.
excuter.
- Lorsque le thread en cours se termine, le thread se trouvant en tte de file dattente
la plus prioritaire est lu pour sexcuter.
- Il est trs difficile de garantir des contraintes de temps avec la politique FIFO

z SCHED_RR (round robin)


- Cette politique sapparente SCHED_FIFO, mais un thread na le droit de sexcuter que
pendant un certain quantum ensuite il est prempt et recycl en queue de la file associe
sa priorit.

- Il y a une file par priorit.
- Cycle RR : intervalle de temps tel que chaque thread utilise son quantum.
- Le cycle RR est gnralement global au systme.
- Il est difficile de garantir des contraintes de temps avec la politique SCHED_RR

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


128

18
z SCHED_SPORADIC

- Technique utilise pour servir des threads apriodiques.


- Un serveur sporadique est dfini par deux paramtres (contenu dans sched_param)
* la priode de rapprovisionnement du serveur (sched_ss_repl_period)
* capacit du serveur (initialise sched_ss_init_budget)

- La priorit dun thread servi par la politique SCHED_SPORADIC commute entre les valeurs de
sched_priority et sched_ss_low_priority de la structure sched_param

- La priorit affecte au thread servi par SCHED_SPORADIC est dfinie comme suit :
* si la capacit restante du Serveur Sporadique nest pas nulle et le nombre doprations de
rapprovisionnement est infrieur sched_ss_max_repl, la priorit du thread est fixe
sched_priority. Sinon, elle est fixe sched_ss_low_priority.

* si
s la
a valeur
a eu de sc
sched
ed_p o ty est infrieure
priority eu e ou ga gale
e ce
celle
e de sc
sched
ed_ss_
ss low
o _p priority,
o ty,
le fonctionnement du systme est indfini. Il sagit dune mauvaise utilisation des priorits.

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


129

z SCHED_SPORADIC (suite)
La capacit disponible du SS est modifie selon les rgles suivantes :

(1) Quand le thread en tte de file dattente associe la priorit sched_priority devient actif,
son temps dexcution ne doit pas dpasser la capacit disponible du SS.

(2) A chaque fois que le thread est recycl


recycl, cest--dire
cest dire mis en queue de la file associe la
priorit sched_priority, parce que le thread est bloqu ou parce quune opration de
rapprovisionnement a eu lieu, linstant o cette opration est effectue est mmorise dans
activation_time.

(3) Quand le thread en excution, avec la priorit gale sched_priority, est prempt, il
est mis en tte de la liste associe cette priorit et le temps quil a consomm est soustrait
de la capacit disponible.

((4)) Q
Quand le thread en excution,, avec la priorit
p gale
g sched_p y, est bloqu
priority q le
temps consomm est soustrait de la capacit disponible et lopration de rapprovisionnement
est programme comme lindiquent les rgles (6) et (7).

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


130

19
z SCHED_SPORADIC (suite)

(5) Quand le thread en excution, avec la priorit gale sched_priority, atteint la limite
impose par son temps dexcution, il est mis en queue de liste associe la priorit
sched_ss_low_priority. Le temps consomm est soustrait de la capacit disponible et
lopration de rapprovisionnement est programme comme lindiquent les rgles (6) et (7).

(6) Chaque fois que lopration de rapprovisionnement a lieu, la quantit de


rapprovisionnement, note replenish_amount, est gale au temps consomm depuis linstant
activation_time du thread. Le rapprovisionnement est programm linstant
activation_time plus la valeur de sched_ss_repl_period. On peut avoir plusieurs oprations
de rapprovisionnement (sans dpasser sched_ss_max_repl oprations) qui sont pendantes en
mme temps, chacune tant servie son ton instant respectif.

(7) Une opration de rapprovisionnement consiste ajouter la quantit replenish_amount


la capacit disponible au moment du rapprovisionnement. La valeur de la capacit disponible est
ramene sched_ss_initial_budget si le l rapprovisionnement
conduit
d dpasser
d ce seuil.
l

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


131

z Combinaison de politiques
- Un systme peut grer plusieurs processus avec des politiques diffrentes.

Tche Politique Priorit Quantum


T1 SCHED_FIFO 1 -
T2 SCHED_FIFO 2 -
T3 SCHED_OTHER - -
T4 SCHED_OTHER - -
T5 SCHED_RR 5 15
T6 SCHED_RR 5 5
T7 SCHED_RR 5 10
T8 SCHED_FIFO 3 -
T9 SCHED_FIFO 4 -
T10 SCHED_SPORADIC 6 -
T11 SCHED_SPORADIC 7 -

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


132

20
API pour lordonnancement

z Primitives pour la manipulation des paramtres et politique dordonnancement


- La primitive pthread_getschedparam permet dobtenir les paramtres dordo dun thread
int pthread_getschedparam (pthread_t thread, int *policy,
struct sched_param *param)
/* sched_param contient (en gnral) la priorit.
- La primitive pthread_setschedparam permet de modifier les paramtres dordo dun thread
int pthread_setschedparam (pthread_t thread, int policy,
const struct sched_param *param)

- La primitive sched_setscheduler permet de modifier la politique dordonnancement et


les paramtres (i.e. la priorit) dordo dun processus
int sched_setsheduler (pid
p _t p
pid, int p
policy,
y
const struct sched_param *param)
- La primitive sched_getscheduler permet dobtenir la politique dordonnancement dun
processus
int sched_getscheduler (pid_t pid)

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


133

z Primitives pour la manipulation des paramtres et politique dordonnancement (suite)

- La primitive sched_get_priority_max permet dobtenir le niveau de priorit le plus lev


dune politique dordonnancement donne.
int sched_get_priority_max (int policy)

- La primitive sched_get_priority_min permet dobtenir le niveau de priorit le plus bas dune


politique dordonnancement donne.
int sched_get_priority_min (int policy)

- La primitive sched_rr_get_interval permet dobtenir la valeur du quantum associ


lexcution par round robin du processus spcifi.
int sched_rr_get_interval (pid_t pid, struct timespec *interval)

- La primitive sched_yield
h d i ld permet au processus appelant de librer le processeur (CPU) et de
se mettre en queue de file (i.e. il cde volontairement le processeur).
int sched_yield (void)

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


134

21
z Primitives de manipulation des attributs lis lordonnancement

- Modifier les attributs des threads revient remplir la structure des attributs de threads attr qui
est du type pthread_attr_t.

- La primitive pthread_attr_init permet dinitialiser la structure d'attributs dun thread et la


remplit avec les valeurs par dfaut pour tous les attributs

int pthread_attr_init (pthread_attr_t *attr)

Valeurs par dfaut (ces valeurs peuvent tre changes par les primitives
pthread_attr_set<nom de lattribut>):

* Etat de cration avec PTHREAD_CREATE_JOINABLE (qui signifie quun autre thread peut se synchroniser
avec la fin du thread et reprendre son excution la fin du thread en utilisant pthread_join)
* Politique dordonnancement = SCHED_OTHER
* Priorit = 0
* Etat de cration avec PTHREAD_EXPLICIT_SCHED (qui signifie que le thread cr hrite des attributs
dordonnancement de son pre).

- La primitive pthread_attr_destroy permet de supprimer des attributs dun thread


int pthread_attr_destroy (pthread_attr_t *attr)

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


135

z Primitives de manipulation des attributs lis lordonnancement (suite)


- La primitive pthread_attr_getschedparam permet de connatre les attributs dordonnancement
dun thread.
int pthread_attr_getschedparam (const pthread_attr_t *attr
struct sched_param *param)
- La primitive pthread_attr_setschedparam permet de modifier les attributs dordonnancement
dun thread.
int pthread_attr_setschedparam (pthread_attr_t *attr
const struct sched_param *param)
- La primitive pthread_attr_getschedpolicy permet de connatre la politique dordonnancement
dun thread.
int pthread_attr_getschedpolicy (const pthread_attr_t *attr, int *policy)
- La primitive pthread_attr_setschedpolicy permet de modifier la politique dordonnancement
dun thread.
int pthread_attr_setschedpolicy (pthread_attr_t *attr, int policy)

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


136

22
z Primitives de manipulation des attributs lis lordonnancement (suite)
- La primitive pthread_attr_getinheritshed permet de connatre la valeur de lattribut
dhritage des proprits dordonnancement du fils partir du pre.
int pthread_attr_getinheritsched (const pthread_attr_t *attr,int *inheritsched)
- La primitive pthread_attr_setinheritsched permet de modifier dattribut dhritage des
proprits dordonnancement
int pthread_attr_setinheritsched (pthread_attr_t *attr, int inheritsched)
- La primitive pthread_attr_getscope permet de connatre ltendue des proprits
dordonnancement dun thread (pour le moment seul ltendue Systme global est spcifie)
int pthread_attr_getscope (const pthread_attr_t *attr, int *scope)
- La primitive pthread_attr_setscope permet de modifier ltendue des proprits
dordonnancement dun thread.
int pthread_attr_setscope
pthread attr setscope (pthread_attr_t
(pthread attr t *attr,
attr, int scope)

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


137

Utilisation de mutex priorit

z Inversion de priorit : problme crucial pour les STRE

z Mutex plafond de priorit : une solution pour viter linversion de priorit

- Si defined(_POSIXTHREAD_PRIO_PROTECT) || defined(_POSIX_THREAD_PRIO_INHERIT) alors on


peut utiliser les primitives sur les mutex priorit.
* Si la condition defined(_POSIXTHREAD_PRIO_PROTECT) est satisfaite, le systme
support le protocole plafond de priorit (Priority ceiling)

* Si la condition defined(_POSIX_THREAD_PRIO_INHERIT) est satisfaite, le systme


supporte lhritage de priorit (priority inheritance)

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


138

23
z Dfinition et fonctionnement de mutex plafond de priorit

- Au moment de la cration du mutex, on spcifie un plafond de priorit.


Tout thread qui verrouille le mutex hrite automatiquement de cette priorit, ce qui lui
permet de sexcuter sans tre interrompu par un autre thread qui tenterait de
verrouiller
ill lel mutex.

- On peut lire ou modifier les attributs dun mutex plafond de priorit.

- Problmes :
* Les mutex priorits ont un surcot plus lev que les mutex normaux.
* Sil y a des threads qui ont une priorit plus leve que celle du mutex, le protocole
vitement dinversion de priorit peut devenir inefficace

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


139

z Primitives de manipulation de mutex plafond de priorit


- La primitive pthread_mutexattr_getprioceiling permet de connatre la priorit
dexcution dun thread (cr avec pthread_mutexattr_init) aprs quil ait verrouill un
mutex.
int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t *attr,
int *prioceiling)
- La primitive pthread_mutexattr_setprioceiling permet de spcifier la priorit
dexcution dun thread (cr avec pthread_mutexattr_init) quand celui-ci verrouille
un mutex.
int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *attr,
int prioceiling)
- La primitive pthread_mutex_getprioceiling permet de connatre la priorit dexcution dun
thread aprs quil ait verrouill un mutex.
int p
pthread_mutex_g
getprioceiling
p g (const p
pthread_mutex_t *mutex,
int *prioceiling)
- La primitive pthread_mutex_setprioceiling permet spcifier la priorit dexcution
dun thread quand celui-ci verrouille un mutex
int pthread_mutex_setprioceiling (const pthread_mutex_t *mutex,
int prioceiling, int *old_ceiling)

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


140

24
z Dfinition et fonctionnement de mutex hritage de priorit

- Quand un thread verrouille un mutex, la priorit des threads qui demandent


verrouiller le mutex est contrle ainsi :

1) Si un thread a verrouill un mutex, il hrite de la priorit la plus leve des


threads bloqus en attente de ce mutex, condition que sa priorit soit
infrieure celles des demandeurs.

2) Quand un thread dverrouille un mutex, il reprend sa priorit initiale.

- On peut lire ou modifier les attributs dun mutex hritage de priorit.

- Le protocole hritage de priorit est le plus rpandu

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


141

z Primitives de manipulation de mutex hritage de priorit


- La primitive pthread_mutexattr_getprotocol permet de savoir si un mutex (cr avec
pthread_mutexattr_init) dispose ou non de lhritage de priorit.
int pthread_mutexattr_getprotocol (const pthread_mutexattr_t *attr,
int *protocol)
- La primitive pthread_mutexattr_setprotocol permet de valider ou invalider le
protocole dhritage de priorit pour un mutex (cr avec pthread_mutexattr_init)
int pthread_mutexattr_setprotocol (pthread_mutexattr_t *attr,
int protocol)

o protocol peut prendre lune des valeurs suivantes :


PTHREAD_PRIO_NONE /* Aucun protocole nest associ au mutex
PTHREAD_PRIO_INHERIT /* Protocole dhritage de priorit associ au mutex
PTHREAD_PRIO_PROTECT /* Protocole plafond de priorit associ au mutex

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


142

25
Points forts / Points faibles de POSIX

+ Facilite la portabilit des applications


+ Offre un bon support pour lordonnancement priorits fixes

- Ne supporte pas lordonnancement dynamique et pas dactivation priodique


- Les intervalles de valeurs des priorits ne sont pas fixs
- Si les intervalles de valeurs de priorits ne sont pas disjoints entre les politiques,
que se passe-t-il ?
- La valeur du quantum pour le Round Robin et la possibilit de le changer dpend de lOS
- Aucune garantie absolue sur les performances temps rel (les appels systmes sont
premptibles)
premptibles).

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


143

Exercices
Exercice 1
Quels sont les ensembles de tches (parmi les ensembles suivants) ordonnanables avec RM ? Avec EDF ?
Ensemble 1 = {T1(P1 = 8, C1 = 2), T2(P2 = 4, C2 = 1), T3(P3 = 6, C3 = 3)}
Ensemble 2 = {T1(P1 = 8, C1 = 4), T2(P2 = 12, C2 = 4), T3(P3 = 20, C3 = 4)}
Ensemble 3 = {T1(P1 = 8, C1 = 4), T2(P2 = 10, C2 = 2), T3(P3 = 12, C3 = 3)}
1. Donner une squence dordonnancement RM qui se rpte indfiniment pour un des ensembles qui est
ordonnanable avec RM.
2. Donner une squence dordonnancement EDF qui se rpte indfiniment pour un des ensembles qui est
ordonnanable avec EDF.

Exercice 2
Soit un systme contenant les tches priodiques suivantes : T1(P1 = 10, C1 = 2), T2(P2 = 20, C2 = 4) et
P3 = 5, C3 = 1). Un serveur sporadique est utilis pour servir les tches apriodiques.
1. Supposons que toutes les tches sont ordonnances avec EDF.
- Quelles sont la priode et capacit maximale du serveur sporadique ?
- En retenant comme priode du serveur sporadique 10, donner la squence dordonnancement si trois tches
apriodiques arrivent comme suit : T4(r4 = 6, C4 = 3), T5(r5 = 8, C5 = 2), T6(r6 = 11, C6 = 3)
2. Mmes questions avec RM (mais en retenant 20 comme priode du serveur sporadique).

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


144

26
Exercices

Exercice 3
Montrer que le protocole PIP ne permet pas dviter les inrteblocages.

Exercice 4
Dmontrer que les situations dinterblocage ne peuvent pas apparatre si PCP est utilis.

Exercice 5
Expliquer limpact de lunit avec laquelle sont exprimes les contraintes temporelles sur les performances
du systme.

Cours Module ASTRE Z. MAMMERI IRIT - UPS - Toulouse


145

27