Vous êtes sur la page 1sur 22

Chapitre 8

Ordonnancement des processus

Ans

un systme multi-utilisateurs temps partag, plusieurs processus peuvent tre prsents en mmoire centrale en attente dexcution.
Si plusieurs processus sont prts, le systme dexploitation doit grer lallocation du processeur aux diffrents processus excuter. Cest lordonnanceur qui sacquitte de cette tche.

8.1 Introduction
Tout le logiciel dun ordinateur peut tre vu comme un ensemble de
processus dont lexcution est gre par un processus particulier : lordonnanceur (scheduler en anglais). Un ordonnanceur fait face deux problmes principaux :
le choix du processus excuter, et
le temps dallocation du processeur au processus choisi.
Un systme dexploitation multitche est premptif lorsque celui-ci peut
arrter (rquisition) tout moment nimporte quelle application pour passer la main la suivante. Dans les systmes dexploitation premptifs on
peut lancer plusieurs applications la fois et passer de lune lautre, voire
lancer une application pendant quune autre effectue un travail.
Il y a aussi des systmes dexploitation dits multitches, qui sont en fait
des multi-tches coopratifs . Quelle est la diffrence ? Un multitche
coopratif permet plusieurs applications de fonctionner et doccuper des
plages mmoire, laissant le soin ces applications de grer cette occupation, au risque de bloquer tout le systme. Par contre, avec un multi-tche
premptif , le noyau garde toujours le contrle (qui fait quoi, quand et
comment), et se rserve le droit de fermer les applications qui monopolisent
1

CHAPITRE 8. ORDONNANCEMENT DES PROCESSUS

les ressources du systme. Ainsi les blocages du systme sont inexistants.

8.2 Types dordonnanceurs


Il est possible de distinguer trois types dordonnanceurs : long terme,
moyen terme et court terme. Leurs principales fonctions sont les suivantes :
long terme : Lordonnanceur fait la slection de programmes admettre
dans le systme pour leur excution. Les programmes admis deviennent des processus ltat prt. Ladmission dpend de la capacit
du systme (degr de multiprogrammation) et du niveau de performance requis.
moyen terme : Il fait la slection de processus dj admis dbarquer
ou rembarquer sur la mmoire. Il effectue ses tches de gestion en
fonction du degr de multiprogrammation du systme, et aussi des
requtes dE/S des priphriques.
court terme : Lordonnanceur court terme a comme tche la gestion
de la file des processus prts. Il slectionne en fonction dune certaine politique le prochain processus excuter. Il effectue aussi le
changement de contexte des processus. Il peut implanter un ordonnancement premptif, non premptif, ou coopratif. Lordonnanceur
est activ par un vnement : interruption du temporisateur, interruption dun priphrique, appel systme ou signal.

8.3 Objectifs de lordonnanceur dun systme multiutilisateur


Les objectifs dun ordonnanceur dun systme multi-utilisateur sont,
entre autres :
Sassurer que chaque processus en attente dexcution reoive sa part
de temps processeur.
Minimiser le temps de rponse.
Utiliser le processeur 100%.
Utilisation quilibre des ressources.
Prendre en compte des priorits.
tre prdictibles.

8.4. ORDONNANCEURS NON PREMPTIFS

Ces objectifs sont parfois complmentaires, parfois contradictoires : augmenter la performance par rapport lun dentre eux peut se faire en dtriment dun autre. Il est impossible de crer un algorithme qui optimise tous
les critres de faon simultane.

8.4 Ordonnanceurs non premptifs


Dans un systme ordonnancement non premtif ou sans rquisition,
le systme dexploitation choisit le prochain processus excuter, en gnral, le Premier Arriv est le Premier Servi PAPS (ou First-Come FirstServed FCFS) ou le plus court dabord (Short Job First SJF ). Il lui alloue le
processeur jusqu ce quil se termine ou quil se bloque (en attente dun
vnement). Il ny a pas de rquisition.
Si lordonnanceur fonctionne selon la stratgie SJF, il choisit, parmi le
lot de processus excuter, le plus court (plus petit temps dexcution).
Cette stratgie est bien adapte au traitement par lots de processus dont
les temps maximaux dexcution sont connus ou fixs par les utilisateurs
car elle offre un meilleur temps moyen de sjour. Le temps de sjour dun
processus (temps de rotation ou de virement) est lintervalle de temps entre
la soumission du processus et son achvement.
Considrons par exemple un lot de quatre processus dont les temps

respectifs dexcution sont , ,  et  . Le premier processus se termine au

bout du temps ; le deuxime processus se termine au bout du temps  ;

  ; le quatrime
le troisime processus se termine au bout du temps 
  

  . Le temps moyen de
processus se termine au bout du temps
sjour 
est :    . On obtient un meilleur temps de



 . Toutefois,
sjour pour !
lordonnancement du plus court
dabord est optimal que si les travaux sont disponibles simultanment.

"

Exemple 1. Considrons cinq travaux A, B, C, D et E, dont les temps


dexcution et leurs arrivages respectifs sont donns dans la table 8.1. Faire
un schma qui illustre son excution et calculer le temps de sjour de chaque
processus, le temps moyen de sjour, le temps dattente et le temps moyen
dattente en utilisant :
1. Premier arriv premier servi (PAPS)
2. Le plus court dabord (SJF)
1. PAPS. Schma dexcution :
A
1

B
5

C
10

D
15

CHAPITRE 8. ORDONNANCEMENT DES PROCESSUS

Processus
A
B
C
D
E

Temps dexcution
3
6
4
2
1

Temps darrivage
0
1
4
6
7

TAB . 8.1 Donnes dordonnancement.


Au temps 0, seulement le processus A est dans le systme et il sexcute. Au temps 1 le processus B arrive mais il doit attendre quA termine car il a encore 2 units de temps. Ensuite B sexcute pendant 4
units de temps. Au temps 4, 6, et 7 les processus C, D et E arrivent
mais B a encore 2 units de temps. Une fois que B a termin, C, D et
E entrent au systme dans lordre1 .
Le temps de sjour pour chaque processus est obtenu soustrayant le
temps dentre du processus du temps de terminaison. Ainsi :
Processus
A
B
C
D
E

Temps de sejour
3-0 = 3
9-1 = 8
13-4 = 9
15-6 = 9
16-7 = 9

Le temps moyen de sjour est : $%' %%&  ' $ )(+*-,


Le temps dattente est calcul soustrayant le temps dexcution du
temps de sjour :
Processus
A
B
C
D
E

Temps dattente
3-3 = 0
8-6 = 2
9-4 = 5
9-2 = 7
9-1 = 8

#/.

'

Le temps moyen dattente est :  ' 10$& 2'  435*3


Il y a cinq tches excutes dans 16 units de temps, alors
units de temps par processus.
2. Le plus court dabord. Schma dexcution :
1

Bien entendu, on suppose quil ny a aucun blocage.

67,98;:<)=>*-?

8.4. ORDONNANCEURS NON PREMPTIFS


A
1

B
5

E
10

5
D

C
15

Pour la stratgie SJF nous aurons la squence dexcution A,B,E,D,C,


et le temps de sjour est :

Processus
A
B
E
D
C

Temps de sjour
3-0 = 3
9-1 = 8
10-7 = 3
12-6 = 6
16-4 = 12

$' @BA&   '  C,>*3


Processus
A
B
E
D
C

Temps dattente
3-3 = 0
8-6 = 2
3-1 = 2
6-2 = 4
12-4 = 8

Le temps moyen dattente est :

#D.

' E-$&  A' @ C=>*-?

Il y a cinq tches excutes dans 16 units de temps, alors


units de temps par processus.

67,98;:C=>*-?

Comment appliquer cette technique aux processus interactifs ?


Chaque processus se comporte comme suit : il attend une commande,
lexcute, attend la commande suivante, et ainsi de suite. Alors parmi les
processus prts, le processus lu est celui dont la commande excuter
est la plus courte en temps. Le temps dexcution de la prochaine commande de chaque processus est estim en se basant sur le comportement
pass du processus : Si F . est le temps dexcution estim pour la premire
GJIKLI commande, les
commande et F1G le temps dexcution mesur pour la H
estimations successives sont :

F .

pour la premire ;

F . ;8 ?  F A 8;? pour la seconde ;


F . 8M3  F A M8 3  F  8;? pour la troisime ;
F . 8;N  F A 8;N  F  8M3  F  8;? , ...

CHAPITRE 8. ORDONNANCEMENT DES PROCESSUS

Les ordonnanceurs non premptifs ne sont pas intressants pour les systmes multi-utilisateurs car les temps de rponse ne sont pas toujours acceptables.

8.5 Ordonnanceurs premptifs


Dans un schma dordonnanceur premptif, ou avec rquisition, pour
sassurer quaucun processus ne sexcute pendant trop de temps, les ordinateurs ont une horloge lectronique qui gnre priodiquement une interruption. A chaque interruption dhorloge, le systme dexploitation reprend la main et dcide si le processus courant doit poursuivre son excution ou sil doit tre suspendu pour laisser place un autre. Sil dcide de suspendre son excution au profit dun autre, il doit dabord sauvegarder ltat des registres du processeur avant de charger dans les registres les donnes du processus lancer. Cest quon appelle la commutation de contexte ou le changement de contexte . Cette sauvegarde est ncessaire pour pouvoir poursuivre ultrieurement lexcution du processus
suspendu.
Le processeur passe donc dun processus un autre en excutant chaque
processus pendant quelques dizaines ou centaines de millisecondes. Le
temps dallocation du processeur au processus est appel quantum. Cette
commutation entre processus doit tre rapide, cest--dire, exiger un temps
nettement infrieur au quantum.
Le processeur, un instant donn, nexcute rellement quun seul processus, mais pendant une seconde, le processeur peut excuter plusieurs
processus et donne ainsi limpression de paralllisme (pseudo-paralllisme).
Problmes :
Choix de la valeur du quantum.
Choix du prochain processus excuter dans chacune des situations
suivantes :
1. Le processus en cours se bloque (passe ltat Attente).
2. Le processus en cours passe ltat Prt (fin du quantum...).
3. Un processus passe de ltat Attente ltat Prt (fin dune E/S).
4. Le processus en cours se termine.

8.5. ORDONNANCEURS PREMPTIFS

8.5.1 Ordonnancement du plus petit temps de sjour


Lordonnancement du plus petit temps de sjour ou Shortest Remaining Time est la version premptive de lalgorithme SJF. Un processus arrive dans la file de processus, lordonnanceur compare la valeur espre
pour ce processus contre la valeur du processus actuellement en excution.
Si le temps du nouveau processus est plus petit, il rentre en excution immdiatement.

8.5.2 Ordonnancement circulaire


Lalgorithme du tourniquet, circulaire ou round robin montr sur la
figure 8.1 est un algorithme ancien, simple, fiable et trs utilis. Il mmorise
dans une file du type FIFO (First In First Out) la liste des processus prts,
cest--dire en attente dexcution.
E

Processeur

Fin

Processus suspendu

F IG . 8.1 Ordonnancement circulaire.

Choix du processus excuter


Il alloue le processeur au processus en tte de file, pendant un quantum
de temps. Si le processus se bloque ou se termine avant la fin de son quantum, le processeur est immdiatement allou un autre processus (celui
en tte de file). Si le processus ne se termine pas au bout de son quantum,
son excution est suspendue. Le processeur est allou un autre processus
(celui en tte de file). Le processus suspendu est insr en queue de file.
Les processus qui arrivent ou qui passent de ltat bloqu ltat prt sont
insrs en queue de file.
Choix de la valeur du quantum
Un quantum trop petit provoque trop de commutations de processus
et abaisse lefficacit du processeur. Un quantum trop lev augmente le

CHAPITRE 8. ORDONNANCEMENT DES PROCESSUS

temps de rponse des courtes commandes en mode interactif. Un quantum


entre 20 et 50 ms est souvent un compromis raisonnable 2 .

"

Exemple 2. Soient deux processus A et B prts tels que A est arriv en


premier suivi de B, 2 units de temps aprs. Les temps de UCT ncessaires
pour lexcution des processus A et B sont respectivement 15 et 4 units
de temps. Le temps de commutation est suppos nul. Calculer le temps de
sjour de chaque processus A et B, le temps moyen de sjour, le temps dattente, le temps moyen dattente, et le nombre de changements de contexte
pour :
SRT
Round robin (quantum = 10 units de temps)
Round robin (quantum = 3 units de temps)
Solution SRT :
A
1

B
5

A
10

A
15

A
15

Processus Temps de sjour


A
19-0 = 19
B
6-2 = 4
Temps moyen de sjour = A%E O6P6;*-:

Processus Temps dattente
A
19-15 = 4
B
4-4 = 0
.
Le temps moyen dattente = - C?

Il y a 3 changements de contexte.
Round robin (quantum = 10) :
A
1

A
5

A
10

Processus Temps de sjour


A
19-0 = 19
B
14-2 = 12
Temps moyen de sjour = A%BA

Processus Temps dattente
A
19-15 = 4
B
12-4 = 8
Le temps moyen dattente = -$
2

O67:>*-:

C,

Le quantum tait de 1 seconde dans les premires versions dUnix.

8.5. ORDONNANCEURS PREMPTIFS

Il y a 3 changements de contexte.
Round robin (quantum = 3) :
A
1

B
5

B
10

A
15

Processus Temps de sjour


A
19-0 = 19
B
10-2 = 8
Temps moyen de sjour = A%$ O67=>*-:

Processus Temps dattente
A
19-15 = 4
B
8-4 = 4
Le temps moyen dattente = -E 43

Il y a 5 changements de contexte.
Dans le trois solutions (SRT, RR QSR =10 et RR QTR =3), il y a 2 tches excutes dans 19 units de temps, alors 67U98;?VWU>*-: units de temps par processus.
Quantum = 30 ms
0

30

61

A A A B B B
A
C

123

92

A A A C C C
C
B

B
A

144

165

B B

176

A A C

A
C

C
B

207

B B B

Quantum = 50 ms
0

50

101

A A A A A B B B B B
B
C

C C C C
A
B

C
A

173

142

204

A AA B B B
B

Quantum = 20 ms
0

20

A A

62

41

B B
BA

104

83

136

125

157

A A B B C C A A B C C
B
C

C
A

A
B

B
C

C
A

178

209

A A B B B

A B
B

F IG . 8.2 Diagrammes de Gantt pour diffrentes valeurs de quantum

CHAPITRE 8. ORDONNANCEMENT DES PROCESSUS

10

"

Exemple 3. Soient trois processus A, B et C. Le processus A arrive en premier suivi de B (20 msec aprs), puis C (46 msec aprs A). On suppose que
lexcution du processus A ncessite 80 msec de temps UCT. Lexcution
du processus B ncessite dabord 50 msec de temps UCT, bloquera ensuite
durant 20 msec pour une entre/sortie, puis exigera finalement 30 msec de
temps UCT. Lexcution du processus C ncessite 40 msec de temps UCT.
Le temps de changement de contexte est de 1 msec. La figure 8.2 montre
les diagrammes de Gantt obtenus pour des quanta de 30 msec, 50 msec
et 20 msec. La table 8.2 donne les temps de sjours moyens pour chaque
situation.

QR

30
50
20

A
165
173
178

B
187
184
189

C
130
96
111

Ch. de contexte
7
4
9

Temps de sjour moyen


161
151
159

TAB . 8.2 Solution des trois processus A, B, C.

8.5.3 Ordonnancement avec priorit


Lalgorithme round robin permet une rpartition quitable du processeur. Cependant il nest pas intressant si certains processus sont plus importants ou urgents que dautres. Lordonnanceur priorit attribue chaque processus une priorit. Le choix du processus lire dpend des priorits des processus prts.
Les processus de mme priorit sont regroups dans une file du type
FIFO. Il y a autant de files quil y a de niveaux de priorit. Lordonnanceur
choisit le processus le plus prioritaire qui se trouve en tte de file. En gnral, les processus de mme priorit sont ordonnancs selon lalgorithme du
tourniquet.
Attribution et volution des priorits
Pour empcher les processus de priorit leve de sexcuter indfiniment, lordonnanceur diminue rgulirement la priorit du processus en
cours dexcution.
La priorit du processus en cours est compare rgulirement celle
du processus prt le plus prioritaire (en tte de file). Lorsquelle devient
infrieure, la commutation a lieu. Dans ce cas, le processus suspendu est

8.5. ORDONNANCEURS PREMPTIFS

11

Priorit 4
Priorit 3
Priorit 2
Priorit 1

F IG . 8.3 Ordonnancement avec priorit.


insr en queue de file correspondant sa nouvelle priorit. Lattribution
et lvolution des priorits dpendent des objectifs fixs et de beaucoup de
paramtres.

"

Exemple 4. Les processus qui font beaucoup dE/S (qui sont souvent
en attente) doivent acqurir le processeur ds quils le demandent, afin de
leur permettre de lancer leur requte suivante dE/S. Lorsquun processus
passe de ltat lu ltat bloqu, sa priorit est recalcule. Sa nouvelle valeur est le rapport : quantum/temps rellement utilis par le processus.
Les processus qui ont le plus grand rapport sont les plus prioritaires :
Si le quantum = 100 ms et le temps utilis = 2 ms, la nouvelle priorit
est 50.
Si le quantum = 100 ms et le temps utilis = 50 ms, la nouvelle priorit
est 2.

8.5.4 Files multiples (quantum variable)


Pour viter quil y ait beaucoup de commutations pour les processus
consommateurs de temps UCT, il est prfrable dallouer un plus grand
quantum ces processus. Lorsquun processus passe ltat lu : Pour la
premire fois, le processeur lui est allou pendant un quantum. Pour la
GJIKLI
seconde fois, le processeur lui est allou pendant
2 quantum... Pour la X
#DY[Z
fois, le processeur lui est allou pendant ?
A\& quantum.
Chaque processus a une priorit. Cette dernire dpend du nombre de
quantum qui lui sera allou lors de sa prochaine activation. Les processus
dont le nombre de quantum est le plus petit sont les plus prioritaires. Les
processus prts sont rpartis selon leur priorit dans des files (FIFO).
Dabord on fait llection du processus le plus prioritaire qui se trouve
en tte de file. Lorsque lexcution dun processus est suspendue pour la

12

CHAPITRE 8. ORDONNANCEMENT DES PROCESSUS

n-ime fois, sa priorit est recalcule


file approprie.

]^?

Y5_

puis il est insr la queue de la

"

Exemple 5. Considrons un processus qui doit effectuer des calculs pendant 100 quantum. Ce processus obtient successivement 1, 2, 4, 8, 16, 32 et
64 quantum. Mais il utilisera 37 des 64 derniers quantum. Le nombre de
changements de contexte passe de 100 (cas du tourniquet) 7. Le processeur passe moins de temps commuter et a donc un meilleur temps de
rponse. Surtout dans le cas o la commutation ncessite des transferts sur
disque.
Un processus qui descend de plus en plus dans les files priorit sexcute de moins en moins frquemment et favorise ainsi les processus courts
en mode interactif. Pour ne pas dfavoriser un processus qui stait excut
pendant assez longtemps avant de devenir interactif, on peut lui attribuer
la plus haute priorit ds quun retour chariot est tap sur le terminal associ au processus (les premires versions dUnix utilisaient cette solution).

8.6 Ordonnancement deux niveaux


Lors dune commutation, si le processus lu nest pas en mmoire, il
faut le charger en mmoire. Le temps de commutation est deux trois fois
plus lev que celui des processus qui se trouvent en mmoire centrale.
Pour viter ces va-et-vient entre le disque et la mmoire lors dune commutation, lordonnanceur deux niveaux dplace les processus entre le
disque et la mmoire (haut niveau) et choisit le processus excuter parmi
ceux qui sont en mmoire (bas niveau). Priodiquement, lordonnanceur
de haut niveau retire de la mmoire les processus qui y sont rests assez
longtemps et les remplace par des processus qui sont rests sur le disque
pendant trop de temps. Pour lire un processus, lordonnanceur de bas niveau se restreint au processus en mmoire.

8.7 Cas dtude


8.7.1 MS-DOS
MS-DOS est un systme mono-utilisateur, et il nest non plus un systme multiprogramm. Il peut y avoir, un moment donn, plusieurs processus en mmoire mais un seul est ltat prt, tous les autres tant en

8.7. CAS DTUDE

13

attente de la fin dun fils. Lordonnanceur des processus du systme MSDOS est trs simple : il excute un processus jusqu ce quil se termine ou
cre un fils. Le processus crateur est suspendu jusqu ce que le processus
cr se termine.

8.7.2 Unix

Haute
priorit

Cest un ordonnanceur deux niveaux. Lordonnanceur de bas niveau


se charge dlire un processus parmi ceux qui rsident en mmoire. Lordonnanceur de haut niveau se charge des transferts de processus entre la
mmoire centrale et le disque. Lordonnanceur de bas niveau utilise plusieurs files, une priorit est associe chaque file (plusieurs niveaux de
priorit). Les processus prts qui sont en mmoire sont rpartis dans les
files selon leur priorit. Les priorits des processus sexcutant en mode
utilisateur sont positives ou nulles, alors que celles des processus sexcutant en mode noyau sont ngatives. Les priorits ngatives sont les plus
leves, comme illustr la figure 8.4.

-2

En attente E/S disque


En attente disque buffer
En attente entre terminal

-1

En attente sortie terminal

En attente cration fils

-4
-3

Priorit 0 utilisateur

Priorit 1 utilisateur

Priorit n utilisateur

Basse
priorit

Processus en attente
mode utilisateur

Processus en attente
mode kernel

Processus en file de priorit


niveau n

F IG . 8.4 Ordonnancement sous Unix.


Lordonnanceur de bas niveau choisit le processus le plus prioritaire qui
se trouve en tte de file. Le processus lu est alors excut pendant au maximum un quantum (100 ms). Sil ne se termine pas ou ne se bloque pas au
bout de ce quantum, il est suspendu. Le processus suspendu est insr en
queue de sa file. La priorit initiale dun processus utilisateur est en gnral
gale 0. La commande nice permet dattribuer une priorit plus basse
un processus ( a` ). Les priorits des processus prts en mmoire sont re-

CHAPITRE 8. ORDONNANCEMENT DES PROCESSUS

14

calcules priodiquement toutes les secondes. La priorit dun processus


est recalcule, dans certaines versions, en ajoutant sa valeur de base (en
gnral 0 pour les processus utilisateurs), la moiti du temps UCT utilis
(temps en nombre de pulsations dhorloge) et la valeur de nice.
Lorsquun processus passe de ltat bloqu ltat prt, il se voit attribuer une forte priorit (ngative). Aprs le calcul des priorits, les processus sont dplacs vers les files dattente correspondant leurs nouvelles
priorits.

8.7.3 Linux
Linux offre trois politiques dordonnancement. Deux dentre elles sont
des politiques dordonnancement en temps rel "soft", cest--dire quelles
accordent aux processus une trs haute priorit par rapport aux autre processus, mais ne garantissent pas une rponse dans un temps spcifi. La
troisime politique dordonnancement utilise un algorithme de temps partag bas sur des valeurs de priorit.
Par dfaut, un processus est associ la politique de temps partag.
Seul root peut associer un processus une des classes dordonnancement
en temps rel.
En Linux, chaque processus se voit attribuer une politique dordonnancement. Dans tous les cas, le processus possde aussi une valeur de priorit,
variant de 1 40. Plus la valeur est leve, plus la priorit est haute. Par dfaut, un processus utilisateur a une valeur de priorit de 20.
Il est possible, pour un processus, de modifier sa priorit, en utilisant
lappel systme nice(valeur), o valeur est un nombre compris entre
-20 et 20. Si la valeur est positive, on diminue dautant la priorit du processus. Rciproquement, si la valeur est ngative, on augmente la priorit.
noter que seul root peut augmenter la priorit dun processus.
Temps rel
Une premire politique dordonnancement, dnomme SCHED_FIFO,
garantit au processus une utilisation illimite du processeur. Il ne sera interrompu que dans une des circonstances suivantes :
Le processus bloque sur un appel systme ou se termine.
Un autre processus de la classe SCHED_FIFO de priorit plus leve
est prt. Dans ce cas le processus actuel est remplac par celui-ci.

8.7. CAS DTUDE

15

Le processus libre lui-mme le processeur, en excutant lappel systme sched_yield().


Rien nest plus prioritaire quun processus de la classe SCHED_FIFO,
lexception dun autre processus de la mme classe qui possde une valeur
de priorit suprieure.
Lautre politique dordonnancement en temps rel, dnomme SCHED_RR,
est, contrairement la premire, premptive. Chaque processus de cette
classe se voit attribuer un quantum (temps limite dexcution). Lorsque ce
quantum sera coul, le contrle sera donn un autre processus de mme
priorit de la classe SCHED_RR, sil y en a un, en appliquant lalgorithme
du tourniquet. noter que le tourniquet ne se fait quavec des processus de
mme priorit. Un processus temps rel de plus haute priorit a toujours
prsance. Ainsi, si deux processus de la classe SCHED_RR avec priorit
20 sexcutent, ils alterneront dans le processeur. Si entretemps apparat un
processus de la mme classe, mais de priorit 25, cest ce dernier qui prend
le contrle du processeur et ne le redonnera que lorsquil se terminera.
moins, bien sr, que napparaisse un autre processus SCHED_RR de priorit suprieure ou gale, ou encore un processus SCHED_FIFO.
Le quantum attribu un processus de la classe SCHED_RR est variable et tabli selon les mme principes que ceux appliqus aux processus
temps partag, dcrits la section suivante.
Temps partag
Nous avons vu, la section prcdente, les deux politiques dordonnancement em temps rel offertes par Linux. Il nous reste maintenant voir la
dernire polique dordonnancement, qui regroupe tous les processus de la
classe OTHER. Les processus de cette classe se partagent le processeur de
manire ingale, selon leur priorit et leur usage du processeur.
Premirement, comme nous lavons dj dit, chaque processus possde
une valeur de priorit qui lui est attribue au moment de sa cration. Cest
ce que nous appellerons la priorit statique.
Initialement, on attribue chaque processus un quantum dont la valeur
utilise une unit de temps qui correspond normalement 10ms. La valeur
initiale du quantum est gale la valeur de priorit. Ainsi, un processus
de priorit 25 aura un quantum de 25 units, ce qui correspond 250 ms.
Ce quantum est le temps allou au processus. chaque 10 ms, on diminue de 1 la valeur du quantum du processus en cours dexcution dans le
processeur.

16

CHAPITRE 8. ORDONNANCEMENT DES PROCESSUS

Chaque fois que lordonnanceur est appel, une note est attribue tous
les processus. Cette note, comme nous le verrons la section suivante,
dpend la fois de la priorit du processus et de la valeur actuelle de
son quantum. Cest cette note qui permettra de dterminer quel processus
prendra le contrle du processeur.
ventuellement, on peut arriver une situation o tous les processus
sont dans une des deux situations suivantes :
Son quantum est 0. Il a coul tout le temps qui lui tait allou.
Il est bloqu. Il na pas ncessairement puis son quantum.
Dans ce cas, tous les quanta (y compris les quanta des processus en
attente qui ont encore une valeur non nulle) sont rajusts selon la formule
suivante :
Quantum

Quantum 8;?

priorit

Ceci a pour effet de favoriser les processus qui nont pas utilis tout
le temps qui leur est allou. En effet, un processus qui na pas puis son
quantum se retrouve avec une nouveau quantum plus lev que lancien.
On peut facilement vrifier que la valeur maximale du quantum est deux
fois la priorit.
Comme nous le verrons dans la prochaine section, un processus qui voit
son quantum augmenter peut se retrouver avec une meilleure note lorsque
vient le moment de choisir un processus excuter.
Algorithme dordonnancement
Lorsque lordonnanceur est appel, Linux attribue une note chaque
processus, en utilisant la mthode suivante :
Si le processus est de la classe SCHED_FIFO ou SCHED_RR
Note = 1000 + priorit
Sinon
Si Quantum c`
Note = Quantum + Priorit
Sinon
Note = 0

8.7. CAS DTUDE

17

On remarquera quun processus membre dune des deux classes de


temps rel aura toujours priorit sur les autres. En effet, puisque le quantum ne peut dpasser le double de la priorit du processus, et que la valeur
maximale de la priorit dun processus est 40, on naura jamais une note suprieure 120 pour un processus de la classe OTHER, ce qui est nettement
infrieur au minimum de 1000 pour un processus em temps rel.
On remarquera aussi quun processus qui a coul tout son quantum
reste en attente tant quil y a des processus qui peuvent sexcuter. Comme
nous lavons dj dit, il ne se verra attribuer un nouveau quantum que
lorsque tous les autres processus auront puis leur quantum ou seront
bloqus.
Exemple
Supposons trois processus A, B et C, tous de la classe OTHER, et dont
les priorits sont les suivantes :
Processus
Priorit

A
20

B
18

C
10

Supposons quils arrivent tous dans le systme au mme moment et


quils sont seuls. A et B sont des processus qui sinterrompent pour faire
des appels systme bloquant, alors que C ne bloque jamais.
Initialement, cest videmment le processus A qui a la meilleure note.
Cest donc lui qui est excut, ayant droit 200 ms. Supposons maintenant
quil sinterrompt aprs 160 ms pour excuter un appel systme bloquant.
Le systme doit maintenant choisir entre B et C. B est lu et sexcute pendant 40 ms (lui aussi bloque sur un appel systme). ce moment, le processus C prend le contrle et utilise toutes le 100 ms qui lui sont accordes.
On se retrouve alors dans la situation suivante : A et B sont toujours
bloqus, et C a un quantum nul. Le systme ralisera donc un rajustement
des quanta. Les processus se verront attribuer les nouvelles valeurs suivantes (rappelons quil reste 40 ms A et 140 ms B) :
Processus
Nouveau quantum

A
4/2 + 20 = 22

B
14/2 + 18 = 25

C
0/2 + 10 = 10

Comme A et B sont toujours bloqus, C sexcute nouveau. Supposons maintenant que A et B redeviennent prts durant ce temps. Aprs
100 ms, C a puis son quantum. Il aura une note gale zro. Le systme
choisira alors entre A et B. Voici les notes qui sont attribues aux processus :

18

CHAPITRE 8. ORDONNANCEMENT DES PROCESSUS

Processus
Nouveau quantum

A
22 + 20 = 42

B
25 + 18 = 43

C
0

Cest donc B qui sera choisi, malgr sa priorit statique plus basse. Il
est favoris parce quil a utilis une proportion plus petite du temps qui lui
avait t allou.

8.7.4 Windows
Lalgorithme dordonnancement de Windows est semblable celui du
VAX/VMS : il est bas sur une priorit qui peut changer au cours de lexcution des processus. Windows ordonne des threads, sans se proccuper
de savoir quel processus ils appartiennent. On nutilise pas un ordonnanceur autonome : quand un thread ne peut plus continuer sexcuter, il
se met en mode superviseur pour excuter la routine dordonnancement.
Sil signale un objet (UP sur un smaphore, par exemple), il vrifie sil na
pas ainsi rveill un thread plus prioritaire auquel il doit cder sa place.
Si le quantum est expir et que le thread est slectionn nouveau, on lui
attribue un nouveau quantum.
Deux autres situations exigent lexcution de la routine dordonnancement :
Une entre/sortie vient dtre complte
Un timeout vient dexpirer (ce qui va en gnral rveiller un thread)
Un appel SetPriorityClass fixe la priorit de base pour tous les
thread dun processus. Les valeurs possibles sont (en ordre dcroissant
de priorit) : realtime, high, above normal, normal, below normal et idle. Un appel SetThreadPriority permet de fixer la priorit
dun thread par rapport aux autres du mme processus. Les valeurs permises sont : time critical, highest, above normal, normal, below normal, lowest et idle. Selon la combinaison de ces deux attributs,
on attribue un thread une valeur de priorit entre 0 et 31, quon appelle
priorit de base. En plus, chaque thread a une priori courante qui varie
dynamiquement : elle peut tre plus haute que la priorit de base.
chaque valeur de priorit une file dattente est associe et Windows
parcourt ces files de manire classique. Chaque file est traite par lalgorithme du tourniquet. Lordonnancement des threads se fait sans tenir compte
du processus auquel il appartient. Le tableau des priorit est divis en trois
segments :

8.7. CAS DTUDE

19

Temps rel (16 31)


Utilisateur (1 15)
Thread 0 (0)
Seul le SE peut manipuler le segment temps rel. Le thread 0 nest excut que lorsquil ny a aucun autre thread : il initialise zro les pages de
mmoire. Sil ny a vraiment rien faire, un thread idle sexcute.
Cest la priorit courante dun thread qui est considre pour lordonnancement. La priorit courante dun thread utilisateur, qui est initialement
la priorit de base, peut tre augmente dans certaines circonstances :
Le thread vient dtre libr dune attente dentre/sortie (ex. +1 pour
disque, +6 pour clavier, +8 pour carte son)
Le thread vient dtre libr dune attente sur un smaphore (+2 pour
thread dun processus en premier plan et +1 pour les autres)
Lorsquun thread a expir son quantum, sa priorit descend de 1 jusqu ce quil revienne sa priorit de base.
Pour viter les inversions de priorit, Windows utilise la technique suivante :
Quand un thread na pas t excut depuis un temps qui dpasse un
seuil prspcifi, il passe la priorit 15 pour deux quanta
Un thread non prioritaire mais qui dtient un smaphore aura donc
la chance de le dbloquer pour redonner le contrle un thread plus
prioritaire en attente sur ce smaphore
Finalement, un thread associ une fentre qui vient dtre active reoit un plus gros quantum (typiquement 3 X quantum normal).

20

CHAPITRE 8. ORDONNANCEMENT DES PROCESSUS

Suggestions de lecture
Rfrence : Silverwschatz A., Galvin P., Gagn G., Principles appliqus des
systmes dexploitation avec Java, Vuibert, Paris, France, 2002.

Chaptre 6 : Ordonnancement dexcution.


Chaptre 20 : Le systme Unix.

8.8. EXERCICES

21

8.8 Exercices
1. Citez quatre vnements qui provoquent linterruption de lexcution
dun processus en cours, dans le systme Unix.
2. Quel est le rle de lordonnanceur ?
3. Dcrire brivement lordonnanceur du systme Unix. Favorise-t-il les
processus interactifs ?
4. Expliquez une raison pour laquelle certains systmes (tel Unix) assignent des priorits internes plutt quexternes aux processus.
5. Identifiez lalgorithme dordonnancement qui est le plus utilis, et
spcifiez la raison.
6. Identifiez lalgorithme dordonnancement sans rquisition qui fournit la meilleure performance. Pourquoi ?
7. Expliquez la diffrence fondamentale entre un algorithme dordonnancement rquisition et sans rquisition. Lequel fournit la meilleure
performance ?
8. Quel sera leffet sur la performance du systme dun temps de quantum trop long et trop petit.
9. Expliquez la diffrence fondamentale existant entre un ordonnanceur
de bas-niveau et un ordonnanceur de haut-niveau. Existe-il des systmes dexploitation qui utilisent un seul ordonnanceur ? Expliquez
aussi.
10. Expliquez quel mcanisme permet un processus deffectuer un partage volontaire de lUCT. Quels sont les avantages et dsavantages
du partage volontaire ?
11. Expliquez comment le systme dtermine le moment deffectuer un
changement de contexte entre deux processus. Durant un changement de contexte, quels sont les processus (utilisateur ou systme)
qui sont chargs et dchargs ?
12. Considrez la charge de processus montr sur la table 8.3 suivante.
Pour chacun des algorithmes dordonnancement spcifis ci-bas, dessinez un diagramme montrant ltat doccupation de lUCT, des priphriques, et des files dattente. Aussi, calculez les temps de virement
et dattente. Supposez un temps de changement de contexte instantan (infiniment petit). Finalement, comparez les performances des
divers algorithmes pour cette charge de processus.
a) Lalgorithme du premier-arriv-premier-servi (PAPS).

CHAPITRE 8. ORDONNANCEMENT DES PROCESSUS

22

Processus
P0
P1
P2

Temps
darrive
0
2
5

Temps
de service
9
6
5

Dure
des E/S
2
0
1

Priodes
des E/S
5,9
4

TAB . 8.3 Charge de processus.


b) Lalgorithme du tourniquet avec un quantum de 5 units de temps.
c) Lalgorithme du tourniquet avec un quantum de 5 units de temps
et des niveaux de priorit externe de 3, 1, 2 respectivement pour
P0, P1, P2.
d) Lalgorithme du tourniquet avec un quantum de 5 units de temps
et deux UCTs fonctionnant en parallle.
e) Lalgorithme du tourniquet avec un quantum de 5 units de temps
et des niveaux de priorit interne initiaux de 20 respectivement
pour P0, P1, P2. Au moment dun changement de contexte, la
priorit du processus dbarquant diminue de 1 unit. Aussi, un
processus qui est bloqu dans une file dattente des E/S perd
2 units de priorit. Si le processus nattend pas pour effectuer
son E/S alors il ne perd que 1 unit de priorit. Lorsquun processus dans la file dattente de lUCT a plus haute priorit quun
processus en excution, lUCT est alors prempt avant la fin du
quantum.

Vous aimerez peut-être aussi