Telechargé par Said Alahiane

Ordonnancement des processus : Algorithmes et Implémentation

publicité
2. Ordonnancement des processus
M. Ben Salah
1
Contexte
Plusieurs processus peuvent être présents en mémoire centrale.
Si plusieurs processus sont prêts à être exécutés , le système
d'exploitation (SE) doit gérer l'allocation du processeur aux différents
processus. Il doit donc choisir le processus qui détiendra le processeur
(processus élu) .
La partie du SE qui effectue ce choix est l’ordonnanceur (scheduler)
L’ algorithme que l’Ordonnanceur emploie s’appelle algorithme
d’ordonnancement
Objectif = optimiser l’utilisation concurrente du processeur
2
Qu'est-ce l'ordonnancement ?
Définition d’ordonnancement (scheduling ):
L’ordonnancement permet de gérer le partage du processeur entre les
différents processus en attente pour s'exécuter (état prêt). L'opération
d'élection consiste à allouer le processeur à un processus.
3
Qu’est ce la préemption (réquisition) ?
Définition de préemption (réquisition) :
La préemption est la mise en attente forcée d’un processus. Elle
correspond à une opération de réquisition du processeur au processus
élu (c'est-à-dire que le processeur est retiré au processus élu ) alors que
celui-ci dispose de toutes les ressources nécessaires à la poursuite de
son exécution. Cette réquisition porte le nom de préemption .
4
Entités responsable de l’ordonnancement
Deux entités systèmes sont responsable de l’ordonnancement :
- l’ordonnanceur (scheduler )
- le dispatcheur dans (cas système multiprocesseurs)
5
Ordonnanceur vs dispatcher
● L’ordonnanceur est responsable de l’organisation des file d’attente des processus :
Le système d'ordonnancement gère une file des processus prêts et une file
des processus bloqués. La file des processus prêts est classée selon une politique
d'ordonnancement qui assure que le processus en tête de file est le prochain processus à élire
au regard de la politique mise en œuvre. Ce classement est effectué par l' ordonnanceur et est
réactualisé à chaque fois qu'un processus est préempté ou qu'un processus est débloqué (ajout
d'un nouvel élément prêt).
● Le dispatcher : Il s’occupe de l’allocation du processeur à un processus sélectionné
par l’Ordonnanceur  multiprocessseur
- Une fois allouer, le processeur doit réaliser les tâches suivantes :
*) Commutation de context : sauvegarder le contexte du processus qui doit
libérer le processeur et charger le contexte de celui qui aura le prochain cycle
processeur
*) Passer en mode utilisateur : basculer du mode maître (mode d’exécution du
dispatcheur) en mode utilisateur (mode d’exécution du processeur utilisateur)
*) Branchement : se brancher au bon emplacement dans le processus utilisateur
pour le faire démarrer
6
Principe (mono-processeur)
L'ordonnanceur permet ainsi à tous les processus :
- de s'exécuter suivant une politique (ordonnancement)
- d'utiliser le processeur de manière optimale du point de vue de l'utilisateur.
comment ? : à intervalles réguliers, le système appel une procédure
d'ordonnancement qui élit le processus à exécuter.
préemption
ordonnanceur
B B B B B
C C C C C
P P P P P
CPU
Classement selon une politique
d’ordonnancement
P1 P4 P2 P5 P3
fil e d’attente processus prêts
blocage
B B B B B
C C C C C
P P P P P
file d’attente processus bloqués
déblocage
7
Principe (multi-processeur)
préemption
ordonnanceur
CPU
CPU
dispatcheur
CPU
B B B B B
C C C C C
P P P P P
P1 P4 P2 P5 P3
Classement selon une politique
d’ordonnancement
file d’attente processus prêts
blocage
B B B B B
C C C C C
P P P P P
file d’attente processus bloqués
déblocage
8
Critères d’ordonnancement
À maximiser :
◦Utilisation du processeur : Pourcentage d’utilisation
◦ Débit : nombre de processus qui complètent dans l ’unité de
temps
À minimiser :
◦ Temps de réponse (pour les systèmes interactifs):
Le temps entre une demande et la réponse
◦ Temps de rotation
◦Temps d’attente : attente dans la file prêt
9
Algorithmes d’ordonnancement
Il existe deux types d’ordonnancement :
- Sans réquisition = non préemptif : un processus est exécuté
jusqu’à la fin.
Le choix d'un nouveau processus ne se fait que sur blocage ou
terminaison du processus courant == > la transition de l'état
élu vers l'état prêt est interdite : un processus quitte le
processeur uniquement s’il a terminé son exécution ou si il se
bloque.
Inefficace et dangereux (ex: exécution d’une boucle sans fin…)
- Avec réquisition = préemptif : à intervalle régulier,
l'Ordonnanceur reprend la main et élit un nouveau processus
actif la transition de l'état élu vers l'état prêt est autorisée : un
processus quitte le processeur si il a terminé son exécution , si
il se bloque ou si le processeur est réquisitionné.
10
Algorithmes d’ordonnancement
Quelques définitions :
 Temps de rotation : le temps pris par un processus de son arrivée
jusqu’à ce qu’il se termine
temps rotation=temps fin d’exécution - temps d’arrivée
 Temps d’attente : attente dans la file (somme de tout le temps
passé en file d’attente)
temps d’attente=temps de rotation-durée d’exécution
11
Les algorithmes d’ordonnancement sans réquisition
(non-préemptif )
Quelques alogoritmes non-préemtif (sans réquisition) :
- FCFS (first come first Served ) : Premier arrivé, premier servi (PAPS)
- SJF (Shortest Job First) : Plus Cours temps d'Exécution en Premier
12
Premier arrivé, premier servi (PAPS)
(First Come First Served (FCFS) )
Nom préemptif
● Basé sur la gestion d’une file FIFO (sans réquisition)
● Dès que le processeur est libre, le processus en tête de la file de
processus prêt est élu.
● Une fois le processeur alloué à un processus celui-ci le garde
jusqu’à ce qu’il termine
● C’est le plus simple à implémenter
Inconvénients :
● Les processus de faible temps d'exécution peuvent être pénalisés
quand un processus de longue durée les précède dans la file
● Conséquences désastreuses si le processus en exécution ne se
termine pas
●
13
Premier arrivé, premier servi (PAPS)
(First Come First Served (FCFS) )
Soient les différents processus suivants (on suppose que ces travaux ne font pas d'entréessorties) :
processus
Temps d’arrivé
durée
P1
0
3
P2
1
4
P3
2
2
P4
3
3
Diagramme de Gantt :
3
8
10
12
0
P1
P2
P3
P4
temps d’attente de P4
14
Premier arrivé, premier servi (PAPS)
(First Come First Served (FCFS) )
Temps d’attente :
TaP1=3-3=0
TaP2=6-4=2
TaP3=7-2=5
TaP4=9-3=6
Temps moyenne d’attente :
Tma=3.25
Temps de rotation de chaque processus
(Date de fin d'exécution - Date d'arrivée) :
TRP1=(3-0)=3
TRP2=(7-1)=6
TRP3=(9-2) = 7
TRP4=(12-3) = 9
Temps moyenne de rotation (TmR) :
TmR=(3+6+7+9)/4=6,25
Rendement :
= temps de rotation /durée
Rp1=3/3
Rp2=4/6=0.66
Rp3=2/7=0.28
Rp4=3/9= 0.33
Rendement moyen :
0.56
processus
temps de
rotation
temps
d’attente
rendement
P1
3
0
1
P2
6
2
0.66
P3
8
5
0.28
P4
7
6
0.33
Moyenne
6.25
3.25
0.56
15
Le plus court d’abord (SJF)
● Non-préemptif
● L’unité centrale est allouée au processus de plus petit temps
d'exécution
● Permet de remédier au problème engendré par PAPS
● Elle pénalise les travaux longs
Le plus court d’abord (SJF)
Nom préemptif : sans interruption
processus
Temps d’arrivé
durée
processus
P1
0
3
temps de
rotation
temps
d’attente
P1
3
0
P2
1
4
P2
11
7
P3
2
2
P4
3
3
P3
3
1
P4
5
2
Moyenne
5.5
3.25
processus
Diagramme de Gante:
3
0
8
10
12
P1
P2
P3
P4
temps
17
Le plus court d’abord (SJF)
Temps de rotation de chaque processus
(Date de fin d'exécution - Date d'arrivée) :
TRP1=(3-0)=3
TRP2=(12-1)=11
TRP3=(5-2) = 3
TRP4=(8-3) = 5
Temps d’attente :
TaP1=3-3=0
TaP2=11-4=7
TaP3=3-2=1
TaP4=5-3=2
Temps moyenne d’attente :
Tma=2.5
Temps moyenne de rotation :
TmR=(3+6+7+9)/4=5.5
Rendement :
Rp1=1
Rp2=4/11=0.36
Rp3=2/3=0.66
Rp4=3/5= 0.6
Rendement moyen :
0.65
processus
temps de
rotation
temps
d’attente
rendement
P1
3
0
1
P2
11
7
0.36
P3
3
1
0.66
P4
5
2
0.6
Moyenne
5.5
3.25
0,65
18
Les algorithmes d’ordonnancement préemptif
Quelques alogoritmes avec réquisition :
- Shortest Remaining Time (SRT)
- Rond Robin (Tourniquet)
- Avec priorité
En fonction de la politique de ces l’algorithme avec réquisition le système
d’exploitation décide si le processus courant doit poursuivre son exécution
ou s’il doit être suspendu pour laisser place à un autre. S’il décide de
suspendre son exécution pour un autre, l’opération de changement de
contexte doit avoir lieu.
.
19
Les algorithmes d’ordonnancement préemptif
commutation de contexte :
La commutation du processeur sur un autre processus lors d’une péremption
nécessite la sauvegarde de l’état du processus suspendu (qui doit quitter le
processeur) et de charger l’état sauvegardé pour le nouveau processus élu.
Cette tâche est connue sous le nom de commutation de contexte ou le
changement de contexte.
.
20
Shortest Remaining Time (SRT)
●
Principe de l’algorithme SRT
● Les processus dont il reste le temps d’exécution le plus court sont
exécutés en premier.
- Priorité au processus pour lequel il reste moins de temps
d’exécution
● Préemptif : par l’arrivée d’un nouveau processus;
● Nécessité de connaître la durée des processus;
● On favorise les travaux courts;
● Coûts d’exploitation importants
21
Shortest Remaining Time (SRT)
Exemple 1 :
processus
Temps d’arrivé
durée
P1
0
3
P2
1
4
P3
2
2
P4
3
3
processus
3
8
10
0
P1
P2
P3
P4
temps
22
Shortest Remaining Time (SRT)
processus
Exemple 2 : SRT et si égalité PAPS
processus
Temps d’arrivé
durée
processus
P1
0
4
temps de
rotation
temps
d’attente
P1
8
4
P2
2
3
P3
1
2
P2
9
6
P4
3
2
P3
2
0
P4
2
0
Moyenne
5.25
2.5
3
8
10
11
0
P1
P2
P3
P4
temps
23
Shortest Remaining Time (SRT)
- Temps de rotation moyen si on suppose que le temps de commutation est
négligeable :
TRmoy=[ (8-0) + (11-2) +(3-1) + (5-3) ]/4
= [ 8+9+2+2 ]/4
- Temps de rotation moyen si on suppose que le temps de commutation est 0.5 UCT:
* le nombre de commutation de contexte =4
* Temps de rotation moyen :
TRmoy= [ (8+3*0.5)+ (9+0.5*4)+(2+0.5)+(2+2*0.5) ]/4
24
Round Robin (Tourniquet)
● Préemptif
● Description de l’algorithme tourniquet (circulaire ou round robin) :
- Il mémorise dans une file de type FIFO la liste des processus prêts.
- Un intervalle de temps égale, appelé quantum, est assigné à chaque processus.
- Le processeur est alloué au processus en tête de la file, pendant un quantum
- Si l’exécution du processus n’est pas terminée à la fin du quantum, il est suspendu
et replacé en fin de file des processus prêt. Le processeur et alloué à un autre
processus (celui qui est en tête de la file des processus prêt)
● Permet une répartition équitable du processeur entre les processus
● Conçu spécialement pour le temps partagé
● Propriétés de l’algorithme :
-Pas de notion de
priorité sur les processus;
- Préemptif ;
- Pas de connaissance
sur la durée des processus
P1
P5
P6
P1
P2
La file d’attente est un cercle
processeur
fin
25
Round Robin (Tourniquet)
● Point important : Le choix de la valeur du quantum
- Un quantum trop petit provoque trop de commutations de processus
et abaisse l’efficacité du processeur
- Si le quantum est trop grand, on se rapproche de l’algorithme PAPS
26
Round Robin (Tourniquet)
Exemple : quantum=1
processus
temps de
rotation
temps
d’attente
P1
7
4
processus Temps
d’arrivé
durée
P1
0
3
P2
6
4
P2
1.99
2
P3
10
6
p3
1
4
P4
9
6
P4
3
3
Moyenne
8
5
processus
quantum = 1
3
8
10
11
0
P1
P2
P3
P4
temps
27
Round Robin (Tourniquet)
Avantage : permet une répartition équitable du processeur.
Inconvénient :
- problème si certains processus sont plus urgents que d’autres
- Un quantum très court favorise les traitements interactifs mais quand c’est
trop court cause une augmentation des changement de contexte ce qui
démunie les performance.
Solution :
- introduire des priorités
- Eventuellement, faire du RR pour les processus a priorité égale
28
Ordonnancement avec priorités
● L'ordonnanceur à priorité attribue à chaque processus une priorité.
- Choix du processus ayant la plus haute priorité.
● Possibilité de :
- Version sans réquisition
- version avec réquisition
- Les processus de même priorité sont regroupés dans une file.
 Ordonnancés :
- selon l’algorithme tourniquet (généralement le cas)
- selon PAPS (FCFS)
Priorité n
- Avec ou sans extinction de priorité :
priorité fixe (sans extinction)
priorité évolutif (extinction)
Priorité n-1
...
Priorité 1
29
Ordonnancement avec priorités constante
Inconvénient :
problème de famine : un processus de priorité basse risque de ne pas
être servi (attente indéfinie)
Solution : faire "vieillir" la priorité des processus en attente
= priorité évolutif (dynamique)
Augmentation progressive de la priorité des processus en attente
depuis une longue période.
30
Ordonnancement avec priorités constante
Exercice :
Dessinez un diagramme de Gantt correspondant à l’exécution de ces processus en
utilisant l’ordonnancement avec priorités. Considérer le cas préemptif et le cas
non-préemptif. On suppose que les processus de même priorité sont organisé selon
PAPS.
processus
Temps
d’arrivé
durée
priorité
P1
0
3
3
P2
2
2
5 (le plus prioritaire)
p3
1
4
4
P4
3
3
1
31
files de priorité constante
et Round Robin
Exercice :
Dessinez un diagramme de Gantt correspondant à l’exécution de ces processus en
utilisant l’ordonnancement avec priorités préemptif. Les processus de même
priorité sont ordonnancé avec l’algorithme Round Robin (quantum=1 qu’on suppose
identique pour toute les priorités) .
processus
Temps
d’arrivé
durée
priorité
P1
0
3
3
P2
2
2
5 (le plus prioritaire)
p3
0.99
4
3
P4
3
3
1
quantum = 1
32
files de priorité et Round Robin
Propriétés de l’algorithme :
- notion de priorité sur les processus : file par priorité
-- > Round-robin si même priorité : dans une file les processus sont servis
une politique de tourniquet (Round Eobin)
Exemple
- :
processus
Préemptif
processus
temps de
rotation
temps
d’attente
P1
7
4
processus
Temps
d’arrivé
durée
priorité
P1
0
3
3
P2
2
0
P2
2
2
5
P3
8
4
p3
1 (0.99)
4
3
P4
9
6
P4
3
3
1
Moyenne
6.5
3.5
3
quantum = 1
8
10
11
0
P1
P2
P3
P4
temps
Ordonnancement Unix
- La priorité initiale d’un processus utilisateur est
en général égale à 0.
- La commande nice : permet d’attribuer une
priorité plus basse à un processus (>0`).
- Les priorités des processus prêts en mémoire
sont re-calculé périodiquement
34
Les politiques d'ordonnancement sous
le système Linux
● Classes de priorités :
SCHED_FIFO
SCHED_RR
priorité
Temps réel
SCHED_OTHER : temps partagé
…
● Afficher la priorité :
ps –el
● Affichage de la priorité à chaud :
top
● Vérifier la valeur de nice :
● La commande nice : fixer la priorité d’un
processus dès son démarrage.
- valeur par défaut : 0
pour un root : l’intervalle [-20, 19]
pour un user : l’intervalle [0, 19]
● La commande renice : modifier la priorité
d’un processus déjà lancé
ps -lax | head
Syntaxe renice :
renice <Priorité> {-p <PID> | -g <GID> | -u <User>}
35
Téléchargement