1 - Cours SE Partie 4
1 - Cours SE Partie 4
1 - Cours SE Partie 4
2021-2022
Ordonnancement Processus
Introduction
Les méthodes d’ordonnancement ont des nombreuses
applications
Et ont été très étudiées, surtout avec des méthodes
probabilistes et de simulation
Non seulement en informatique, mais aussi en gestion:
Supposons qu’on parle de différents tâches à exécuter
dans une usine dans laquelle il y a des ressources qui
sont des ouvriers et des outils
3
Diagramme de transition d’états d’un processus
4
Files d’attente de processus pour ordonnancement
file prêt
Nous ferons l’hypothèse que le premier processus dans une file est celui qui utilise la ressource: ici,
proc7 exécute.
Nous débuterons avec l’hypothèse qu’il n’y a qu’une seule UCT
5
Concepts de base
La multiprogrammation vise à obtenir une
utilisation optimale des ressources
et aussi un bon temps de réponse pour l’usager
L ’UCT est la ressource la plus précieuse dans un
ordinateur, donc nous parlons d’elle
cependant, les principes que nous verrons s’appliquent aussi à
l’ordonnancement des autres ressources (unités E/S, etc).
L’ordonnanceur UCT est la partie du SE qui décide quel
processus dans la file ready/prêt obtient l’UCT quand elle
devient libre
6
Les cycles d’un processus
Ch. 6 8
Quand invoquer l’ordonnanceur UCT
L ’ordonnanceur UCT doit prendre sa décision chaque fois que le processus
exécutant est interrompu, c-à.-d:
9
Dispatcheur (meilleur français: répartiteur)
Le processus qui donne le contrôle au processus choisi
par l’ordonnanceur. Il doit se préoccuper de:
changer de contexte
changer à mode usager
réamorcer le processus choisi
Attente de dispatcheur (dispatcher latency)
le temps nécessaire pour exécuter les fonctions du
dispatcheur
il est souvent négligé, il faut supposer qu’il soit petit par
rapport à la longueur d’un cycle
Ch. 6 10
Critères d’ordonnancement
Il y aura normalement plusieurs processus dans la file
prêt
Critères généraux:
Bonne utilisation de l’UCT
Réponse rapide à l’usager
12
Critères d’ordonnancement: maximiser/minimiser
À maximiser
• Utilisation UCT: pourcentage d’utilisation
• Débit = Throughput: nombre de processus qui
complètent dans l ’unité de temps
• Temps de rotation (turnaround): temps
terminaison moins temps arrivée
À minimiser
• Temps d’attente: attente dans la file prêt
• Temps de réponse (pour les systèmes
interactifs): le temps entre une demande et la
réponse
13
Algorithmes d’ordonnancement
L'ordonnanceur (scheduler) définit l'ordre dans lequel les processus prêts
utilisent l'UC (en acquièrent la ressource) et la durée d'utilisation, en utilisant
un algorithme d'ordonnancement.
Un bon algorithme d'ordonnancement doit posséder les qualités suivantes:
Équité chaque processus reçoit équitablement sa part
du temps processeur
efficacité le processeur doit, si possible, travailler à 100 %
du temps
temps de réponse Il doit être le plus court possible (en mode
interactif )
temps d'exécution Il doit être le plus court possible en minimisant
le temps d’attente.
rendement On doit avoir le plus grand nombre possible de
travaux effectués par unité de temps
A noter que l'ensemble de ces objectifs est contradictoire, par exemple le 3ème
et le 4ème objectif.
14
Examinons maintenant plusieurs méthodes
d’ordonnancement et voyons comment elles
se comportent par rapport à ces critères
15
Premier arrivé premier servi (FCFS)
L'ordre d'exécution est identique à l'ordre d'arrivée dans la file des
processus éligibles. Classement par ordre d’arrivée. Ordonnanceur
sélectionne premier dans la file.
Exemple :
trois processus P1, P2, P3 à exécuter de durées d'exécution respectives 14
, 2 et 2 unités de temps.
P1 P2 P3 FCFS
0 14 16 18
Si l'ordre d'arrivée est 1, 2, 3, les temps d’exécution respectifs sont 14, 16,
et 18 unités de temps, et le temps d’exécution moyen est de 16 unités de
temps.
Mais si l'ordre d'arrivée est 2,3,1, le temps de service moyen est de 8
(2+4+18) / 3.
Premier arrivé, premier servi (First come,
first serve, FCFS)
Exemple: Processus Temps de cycle
P1 24
P2 3
P3 3
Si les processus arrivent au temps 0 dans l’ordre: P1 , P2 , P3
Le diagramme Gantt est:
P1 P2 P3
0 24 27 30
P1 P2 P3
0 24 27 30
Ch. 6 18
Tenir compte du temps d’arrivée!
Dans le cas où les processus arrivent à moment différents, il
faut soustraire les temps d’arrivée
Exercice: répéter les calculs si:
P1 arrive à temps 0 et dure 24
P2 arrive à temps 2 et dure 3
P3 arrive à temps 5 et dure 3
Donc P1 attend 0 comme avant
Mais P2 attend 24-2, etc.
P1 P2 P3
0 24 27 30 19
arrivée P2
FCFS Scheduling (Cont.)
Si les mêmes processus arrivent à 0 mais dans l’ordre
P2 , P3 , P1 .
Le diagramme de Gantt est:
P2 P3 P1
0 3 6 30
Temps d’attente pour P1 = 6 P2 = 0 P3 = 3
Temps moyen d’attente: (6 + 0 + 3)/3 = 3 était 17
Temps de rotation moyen: (3+6+30)/3 = 13 était 27
Beaucoup mieux!
Donc pour cette technique, les temps peuvent varier grandement par
rapport à l’ordre d’arrivée de différent processus
20
Avantages et Inconvénients du FCFS
Avantages
Simple à réaliser (pas de préemption)
Répond au critère d’équité
Inconvénients
Ne répond pas à tous les critères de performances et
notamment temps d’exécution et temps de réponse.
Temps d’exécution peut dépendre de l’ordre d’arrivée.
21
Plus Court d’abord = Shortest Job First (SJF)
P2 P3 P1
0 3 6 30
Ch. 6 22
SJF avec préemption ou non
Avec préemption:
si un processus qui dure moins que le restant du
processus courant se présente plus tard,
23
SJF sans préemption
Non préemptif
Le processus ayant le plus court temps de traitement passe
premier.
Privilégie les petits travaux
Problème : comment prédire la durée d'exécution des processus
apriori ?
Solutions :
Soit faire de la prédiction sur la durée d'exécution des processus.
faire accompagner chaque programme d'une durée maximum
d'exécution autorisée .
Grand inconvénient: famine (starvation): un processus long peut
attendre indéfiniment d’être sélectionné par l’ordonnanceur si
des processus court arrivent en permanence dans la file.
D’où la nécessité de la préemption!
SJF avec préemption
Allocation à base de quantum
A la fin de chaque quantum, l’ordonnanceur choisit la
tâche dont le temps d'exécution restant est le plus
court.
P1 P3 P2 P4
0 7 8 12 16
P1 P2 P3 P2 P4 P1
0 2 4 5 7 11 16
28
Le plus court d’abord SJF: critique
Difficulté d’estimer la longueur à l’avance
Plus pratique pour l’ordonnancement travaux que pour
l’ordonnancement processus
Normal. on peut plus facilement prévoir la durée d’un travail
entier que la durée d’un cycle
Il y a assignation implicite de priorités: préférences aux
travaux plus courts
Famine possible pour les travaux aux cycles longs
29
Préemption ou non
La préemption est le cas normal pour l’UCT car
l’arrivée d’un nouveau proc cause une interruption et à
ce moment là
l’ordonnanceur devra prendre une décision sur le
prochain proc à exécuter
Mais dans quelques ressources la préemption est
impossible:
P.ex. dans une imprimante il faut toujours terminer
l’impression courante avant d’en amorcer une nouvelle
30
Comment déterminer la longueur des cycles à l’avance?
Quelques méthodes proposent de déterminer le
comportement futur d’un processus sur la base de
son passé
p.ex. méthode de la moyenne exponentielle
Ch. 6 31
Différentes méthodes en principe
Hypothèse de comportement constant d’un processus:
Un processus qui a eu des cycles d’UCT de 3
millisecondes en moyenne continuera comme ça
Hypothèse de comportement variable d’un processus:
Un processus qui avant avait des cycles d’UCT de 3ms,
maintenant a allongé ces cycles, qui sont de 10ms
La durée des cycles les plus récents est considérée plus
importante pour la prévision des prochains cycles
32
Difficultés majeures avec les méthodes
discutées
Premier arrivé, premier servi, FCFS:
Temps moyen d’attente non-optimal
Mauvaise utilisation des ressources s’il y a apport continu de
processus aux cycles longs (v. effet d’accumulation)
Plus court servi, SJF:
Difficulté d’estimer les cycles
Famine
Donc besoin d’une méthode systématiquement préemptive
Le tourniquet
si vous faites toujours les devoirs les plus courts en premier, vous pourriez avoir l’impression de
faire beaucoup mais vous pourriez ne jamais arriver aux plus longs…
si vous faites les devoirs dans l’ordre d’arrivée, les longs pourraient vous bloquer pour
longtemps…
donc votre solution est de donner un peu de temps à chacun, cycliquement
33
Le tourniquet
Si j’ai une seule grande pizza et plusieurs personnes
affamées, je pourrais:
Offrir la pizza à chacun mais attendre qu’une personne
ait fini avant de passer à la suivante
(méthodes précédentes)
Ou sinon offrir une tranche à la fois à chacun et
permettre aux personnes de revenir
Ch. 6 34
Tourniquet = Round-Robin (RR)
Le plus utilisé en pratique
P[5] P[4]
Ch. 6 35
Exemple: Tourniquet tranche = 20
Processus Cycle
P1 53
P2 17
P3 68
P4 24
P1 P2 P3 P4 P1 P3 P4 P1 P3 P3
Observez
temps de rotation et temps d’attente moyens beaucoup plus
élevés que SJF (exercice: calculez-les…)
mais aucunCh.
processus
6 n’est favorisé 36
Performance de tourniquet
S ’il y a n processus dans la file prêt et la tranche est t,
alors chaque processus reçoit 1/n du temps UCT dans
unités de durée max. t
Si t grand FCFS
Si t petit... nous verrons
Ch. 6 37
Une petite tranche augmente les
commutations de contexte (temps de SE)
Ch. 6 38
Exemple pour voir l’importance
d’un bon choix de tranche (à développer
comme exercice)
Trois cycles:
A, B, C, toutes de 10
Essayer avec:
t=1
t=10
Dans ce deuxième cas, tourniquet fonctionne comme
FIFO et le temps de rotation moyen est meilleur
Ch. 6 39
Comment déterminer la tranche en
pratique
Évidemment la durée médiane des cycles des
processus en attente est impossible à déterminer!
En pratique, les observations passées peuvent être
utilisées:
le SE peut garder une trace des durées des cycles des
processus récemment exécutés et ajuster la tranche
périodiquement
40
Priorités
Affectation d’une priorité à chaque processus (p.ex. un
nombre entier)
souvent les petits chiffres dénotent des hautes priorités
0 la plus haute
L’UCT est donnée au processus prêt avec la plus haute
priorité
avec ou sans préemption
il y a une file prêt pour chaque priorité
41
Problème possible avec les
priorités
Famine: les processus moins prioritaires n’arrivent
jamais à exécuter
Solution: vieillissement:
modifier la priorité d ’un processus en fonction de son
âge et de son historique d ’exécution
le processus change de file d`attente
Plus en général, la modification dynamique des
priorités est une politique souvent utilisée (v. files à
rétroaction ou retour)
42
Files à plusieurs niveaux (multiples)
La file prêt est séparée en plusieurs files, p.ex.
travaux `d’arrière-plan` (background - batch)
travaux `de premier plan` (foreground - interactive)
Chaque file a son propre algorithme d’ordonnancement, p.ex.
FCFS pour arrière-plan
tourniquet pour premier plan
Comment ordonnancer entre files?
Priorité fixe à chaque file famine possible, ou
Chaque file reçoit un certain pourcentage de temps UCT, p.ex.
80% pour arrière-plan
43
Ordonnancement avec files multiples
(ex.: serveur principal d’une université)
Un proc peut être servi seulement si toutes les files de priorités plus hautes sont vides
44
Algorithme des files multiniveaux
Utilisation de plusieurs files d’attente
Une file d’attente contient des processus de même
nature
Eviter le mélange de processus (utilisateurs et
système)
Algorithme des files multiniveaux
Principe général
1. Fixer le nombre de files
2. Hiérarchiser les files ( fixer un ordre des files)
• Priorité d’allocation (F1 > F2 > … > Fn)
• Allocation selon le niveau d’une file dans la hiérarchie
3. Fixer la politique de gestion de chaque file
• Critère(s) d’entrée dans la file
• Critère de sortie de la file pour l’allocation de l’UC
• Critère de passage d’une file à une autre
Algorithme des files multiniveaux
4. Principe d’allocation
• Commencer par la file la plus prioritaire
• Ne passer à la file i+ 1 que si tous les processus de la file i
ont été satisfaits (le processeur leur a été alloué)
• Préemption entre files
•Revenir à une file prioritaire en cas d’arrivée de
nouveaux processus dans cette file
Files multiples et à retour
Un processus peut passer d’une file à l’autre, p.ex.
quand il a passé trop de temps dans une file
À déterminer:
nombre de files
algorithmes d’ordonnancement pour chaque file
algorithmes pour décider quand un proc doit passer d ’une file
à l`autre
algorithme pour déterminer, pour un proc qui devient prêt,
sur quelle file il doit être mis
48
Files multiples et à retour
PRIO = 0
la + élevée
PRIO = 1
PRIO = 2
49
Exemple de files multiples à retour
Trois files:
P0: tourniquet, tranche = 8 msecs
P1: tourniquet, tranche = 16 msecs
P2: FCFS
Ordonnancement:
Un nouveau processus entre dans Q0, il reçoit 8 msecs d ’UCT
S ’il ne finit pas dans les 8 msecs, il est mis dans Q1, il reçoit 16
msecs additionnels
S ’il ne finit pas encore, il est interrompu et mis dans Q2
Si plus tard il commence à avoir des cycles plus courts, il
pourrait retourner à Q0 ou Q1
50
Exercice
Exemple concret
Dans un système avec files multiples, un processus a
besoin de 50 secondes d’UCT (sans appels au SE) .
Dans la première file on lui donne 5 secondes et à
chaque file successive on lui donne le double (10, 20, 40
…)
Combien de fois sera-t-il interrompu et dans quelle file
se trouvera-t-il quand il terminera?
51
En pratique...
Les méthodes que nous avons vu sont toutes utilisées (sauf
plus court servi pur qui est normalement impossible)
Les SE sophistiqués fournissent aux gérants de grands
systèmes des librairies de méthodes, qu’ils peuvent choisir
et combiner au besoin après avoir observé le comportement
du système
Pour chaque méthode, plusieurs params sont disponibles:
p.ex. durée des tranches, coefficients, etc.
Ces méthodes évidemment sont importantes surtout pour
les grands ordis qui ont des fortes charges de travail
52
Aussi…
Notre étude des méthodes d’ordonnancement est
théorique, ne considère pas en détail tous les problèmes
qui se présentent dans l’ordonnancement UCT
53
Aussi…
Cependant les mêmes principes d’ordonnancement
s’appliquent à unités qui ne peuvent pas être
interrompues, comme une imprimante, une unité
disque, etc.
55
Ordonnancement avec plusieurs UCTs
identiques: homogénéité
UCT
Méthodes symétriques: chaque
UCT peut exécuter UCT
l’ordonnancement et la répartition
Une seule liste prêt pour toutes UCT
les UCTs (division travail = load
UCT
sharing)
57
Ch. 6
Systèmes temps réel
systèmes temps réel rigides (hard):
les échéances sont critiques (p.ex. contrôle d’une
chaîne d`assemblage, animation graphique)
il est essentiel de connaître la durée des fonctions
critiques
il doit être possible de garantir que ces fonctions
sont effectivement exécutées dans ce temps
(réservation de ressources)
ceci demande une structure de système très
particulière
58
Systèmes temps réel
systèmes temps réel souples (soft):
les échéances sont importantes, mais ne sont pas