Académique Documents
Professionnel Documents
Culture Documents
Chap8 Transport Planif
Chap8 Transport Planif
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
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.
"
B
5
C
10
D
15
Processus
A
B
C
D
E
Temps dexcution
3
6
4
2
1
Temps darrivage
0
1
4
6
7
Temps de sejour
3-0 = 3
9-1 = 8
13-4 = 9
15-6 = 9
16-7 = 9
Temps dattente
3-3 = 0
8-6 = 2
9-4 = 5
9-2 = 7
9-1 = 8
#/.
'
67,98;:<)=>*-?
B
5
E
10
5
D
C
15
Processus
A
B
E
D
C
Temps de sjour
3-0 = 3
9-1 = 8
10-7 = 3
12-6 = 6
16-4 = 12
Temps dattente
3-3 = 0
8-6 = 2
3-1 = 2
6-2 = 4
12-4 = 8
#D.
67,98;:C=>*-?
F .
pour la premire ;
Les ordonnanceurs non premptifs ne sont pas intressants pour les systmes multi-utilisateurs car les temps de rponse ne sont pas toujours acceptables.
Processeur
Fin
Processus suspendu
"
B
5
A
10
A
15
A
15
A
5
A
10
O67:>*-:
C,
Il y a 3 changements de contexte.
Round robin (quantum = 3) :
A
1
B
5
B
10
A
15
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
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
11
Priorit 4
Priorit 3
Priorit 2
Priorit 1
"
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.
12
]^?
Y5_
"
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).
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
-2
-1
-4
-3
Priorit 0 utilisateur
Priorit 1 utilisateur
Priorit n utilisateur
Basse
priorit
Processus en attente
mode utilisateur
Processus en attente
mode kernel
14
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.
15
16
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
17
A
20
B
18
C
10
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
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 :
19
20
Suggestions de lecture
Rfrence : Silverwschatz A., Galvin P., Gagn G., Principles appliqus des
systmes dexploitation avec Java, Vuibert, Paris, France, 2002.
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).
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