Académique Documents
Professionnel Documents
Culture Documents
4
Objectifs de l’ordonnancement
• Le rôle majeur de l’ordonnancement est de maximiser
l’utilisation des ressources (identifier le processus qui conduira
à la meilleure performance possible du système).
• Un bon algorithme d’ordonnancement doit être capable de :
1. s’assurer que chaque processus reçoit sa part du temps
processeur (respecter l’équité entre les processus selon le
critère d’ordonnancement utilisé),
2. utiliser le temps processeur à 100% (au maximum),
3. minimiser le temps de réponse des processus,
4. maximiser le nombre de travaux effectués dans un intervalle
de temps.
5
Critères d’ordonnancement
• Les critères d’ordonnancement fréquemment utilisés sont les
suivants:
▪ Utilisation du processeur : Pourcentage de temps pendant lequel le
processeur exécute un processus. L’importance de ce critère varie
généralement en fonction du degré de partage du système.
▪ Débit : Nombre de processus pouvant être exécutés par le système
sur une période de temps donnée.
▪ Temps de rotation : le temps réel qu’il faut à un processus pour
s’exécuter. Le temps de rotation d’un processus comprend tout le
temps que celui-ci passe dans le système (la somme des périodes
d’attente dans les files, d’E/S et d’exécution). Il est inversement
proportionnel au débit.
Temps de rotation=Temps fin d’exécution - Temps d’arrivée
6
Critères d’ordonnancement
▪ Temps d’attente : quantité de temps qu’un processus passe à
attendre dans les différentes files .
Temps d’attente=Temps de rotation – Durée d’exécution
▪ Temps de réponse : le temps qui s’écoule entre la soumission d’une
requête et la première réponse.
▪ Equité : attribuer un temps processeur équitable à chaque processus.
▪ Priorité : attribuer un traitement préférentiel aux processus dont le
niveau de priorité est supérieur.
7
Types d’ordonnancement
Il existe 2 types d’ordonnancement:
a. Ordonnancement non-préemptif (sans réquisition)
• Le SE sélectionne un processus et le laisse s’exécuter jusqu’à ce
qu’il se bloque ou qu’il libère volontairement le processeur.
b. Ordonnancement préemptif (avec réquisition)
• Le SE sélectionne un processus et le laisse s’exécuter pendant un
délai maximum déterminé : le quantum (avant de passer la main
à un autre processus).
• Pour s’assurer qu’aucun processus ne s’exécute pendant trop
longtemps, les ordinateurs ont une horloge électronique qui
génère périodiquement une interruption.
• A chaque interruption d’horloge, le SE reprend la main et décide
si le processus courant doit poursuivre son exécution ou s’il doit
être suspendu pour laisser place à un autre.
8
Décisions d’ordonnancement
• Les décisions d’ordonnancement peuvent avoir lieu par exemple
dans l’une des trois circonstances suivantes :
1. Un processus commute de l’état en exécution vers l’état en attente
(requête d’E/S).
2. Un processus commute de l’état en exécution vers l’état prêt
(quantum de temps épuisé).
3. Un processus se termine.
• Dans les circonstances 1 et 3, l’ordonnanceur doit choisir un
nouveau processus. Nous parlerons dans ce cas d’ordonnancement
sans réquisition.
• Dans le cas 2, l’ordonnanceur peut choisir d’interrompre le
processus courant pour allouer le processeur à une autre tâche. Nous
parlerons dans ce cas d’ordonnancement avec réquisition.
9
Algorithmes d’ordonnancement (1)
Ordonnancement FCFS
(First Come First Served, Premier Arrivé, Premier Servi)
• Le plus simple algorithme d’ordonnancement.
• Ordonnancement non préemptif (sans réquisition).
• Le premier processus qui demande le processeur le reçoit en premier.
• Il peut être mis en œuvre simplement grâce à une file d’attente FIFO.
• Quand un processus rentre dans la file d’attente des processus prêts, son
BCP est enchainé en queue de file.
• Dès que le processeur est libre, il est alloué au processus en tête de file.
• Le processus en cours d’exécution est alors retiré de la file.
• Avantage : algorithme simple (prendre le premier processus non bloqué de
la file).
• Inconvénient : les processus longs monopolisent le processeur donc le
temps d’attente moyen est souvent long.
10
Ordonnancement FCFS
Exemple
P1 0 7
P2 1 5
P3 2 2
P4 3 5
13
Ordonnancement SJF
Exemple
• On reprend les mêmes données d’ordonnancement illustrées dans
l’exemple précédent. Le diagramme de Gantt correspondant est le
suivant :
14
Algorithmes d’ordonnancement (3)
SRTF (Shortest Remaining Time First, Plus Court
Temps d'Exécution Restant en Premier)
15
Ordonnancement SRTF
Exemple
• On reprend les mêmes données d’ordonnancement illustrées dans
l’exemple précédent. Le diagramme de Gantt correspondant est le
suivant :
16
Algorithmes d’ordonnancement (4)
Ordonnancement du tourniquet, circulaire ou
RR (Round Robin)
• Algorithme simple et très utilisé, conçu spécialement pour les
systèmes à temps partagé.
• Similaire à FCFS mais avec réquisition du processeur afin de
passer d’un processus à un autre.
• Il mémorise dans une file de type FIFO (First In First Out) la
liste des processus prêts, c’est-à-dire en attente d’exécution.
• On définit une petite tranche de temps appelée quantum.
Chaque processus est donc autorisé à s’exécuter pendant son
quantum de temps.
17
Implémentation de l’algorithme RR
• La file des processus prêts est une FIFO circulaire.
• Les nouveaux processus sont ajoutés à la fin de la file.
• L’Ordonnanceur RR prend le premier processus dans la file,
initialise un timer pour générer une interruption après un quantum
de temps et lance le processus.
• Premier cas :
▪ Le processus a un cycle CPU inférieure au quantum : il va libérer
lui-même le processeur et RR passe au processus suivant dans la
file des processus prêt.
• Deuxième cas :
▪ Le cycle CPU du processus est plus long que le quantum: le
timer va générer une interruption; en traitant cette interruption, le
SE va mette le processus en fin de la file et RR sélectionne le
prochain processus. 18
Avantages et inconvénients du RR
• Avantages : garantit que tout processus soit servi au bout d’un
temps Fini (éviter la famine).
• Inconvénients : L’efficacité de cet ordonnanceur dépend
principalement de la valeur du quantum:
▪ Le choix d’un quantum assez petit augmente le nombre de
commutation.
▪ Le choix d’un quantum assez grand augmente le temps de
réponse du système.
19
Ordonnancement avec RR
Exemple
22
Avantages et inconvénients de
l’ordonnancement avec priorité
• Avantage: Permet de classer les processus en fonction de leur
importance pour le système.
• Inconvénients: Un algorithme d’ordonnancement avec priorité
pose un problème majeur :
▪ Blocage infini ou famine (peut laisser des processus à
priorité basse en attente indéfinie).
• Solution :
▪ Incrémenter graduellement la priorité des processus qui
attendent dans le système depuis une longue période
(technique dite du vieillissement (aging)).
23
Algorithmes d’ordonnancement (6)
Ordonnancement utilisant des files
multi-niveaux
• La file des processus prêts est subdivisée en plusieurs files
d’attente séparées suivant la classe des processus (par exemple,
batch, interactif, temps réel, etc.).
• Ces processus ont des exigences différentes en temps de réponses,
ce qui implique des besoins différents en ordonnancement.
• Cet algorithme est implémenté de la manière suivante :
▪ Une priorité est attribuée à chaque processus.
▪ Les processus de même priorité sont dans une même file.
▪ Il y a autant de files qu’il y a de niveaux de priorité.
▪ Chaque file a son propre algorithme d’ordonnancement.
▪ Un processus peut être servi seulement si toutes les files de
priorité supérieure sont vides. 24
Ordonnancement utilisant des files
multi-niveaux
Exemple
• Gestion des processus en premier-plan (interactifs) et processus
en arrière-plan (batch processes).
• Algorithme Round Robin pour la file des processus en
premier-plan et FCFS pour les processus en arrière-plan.
25
Ordonnancement utilisant des files
multi-niveaux
• L’ordonnancement entre les files elles-mêmes peut se faire de
deux manières:
▪ Ordonnancement préemptif avec priorité fixe à chaque file →
famine possible (servir tous les processus en premier-plan
avant les autres), ou
▪ Attribuer à chaque file un certain pourcentage de temps CPU.
Exemple: 80% pour les processus en premier-plan et 20% pour
les processus en arrière-plan.
26
Algorithmes d’ordonnancement (7)
Ordonnancement avec des files d’attente
feedback à multi-niveaux
• Séparer les processus ayant des caractéristiques différentes de
cycle de CPU en différentes files.
• Permettre aux processus de se déplacer entre les files.
• Processus employant beaucoup de temps processeur: file de
priorité inférieure.
• Processus tributaire d’E/S et intéractifs: file de priorité
supérieure.
• Afin de remédier au problème de famine, un processus qui
attend trop longtemps dans une file de priorité basse peut être
déplacé dans une file de priorité supérieure.
27
Ordonnancement avec des files d’attente
feedback à multi-niveaux
Exemple
• Soient trois files d’attente avec retour:
File 0 : dont les processus sont gérés suivant l’algorithme Round
Robin avec un quantum de temps de 8 ms.
File 1 : utilise le même algorithme que la File 0 mais avec un
quantum de temps de 16 ms.
File 2 : utilise l’algorithme FCFS pour l’ordonnancement des
processus.
28
Ordonnancement avec des files d’attente
feedback à multi-niveaux
Exemple
La politique d’ordonnancement est décrite comme suit :
• Lorsqu’un nouveau processus arrive, il est d’abord inséré dans la
File 0, s’il ne termine pas son exécution au bout de 8 ms alors il
sera interrompu et placé dans la File 1.
• Si la File 0 est vide, le processus en tête de la File 1 commence
son exécution. S’il ne termine au bout de 16 ms, il sera alors
interrompu et placé dans la File 2
• Les processus de la File 2 sont exécutés suivant l’algorithme
FCFS uniquement si la File 0 et la File 1 sont vides.
29
Cas d’étude: Ordonnancement sous Linux
Généralités
• Sous le SE Linux, il existe trois politiques d’ordonnancement :
▪ Deux d’entre elles sont des politiques d’ordonnancement en temps réel. Elles
accordent aux processus une très haute priorité appelées SCHED_FIFO et
SCHED_RR.
• Par défaut, un processus est associé à la politique à temps partagé. Seul le mode
superviseur peut associer un processus à une des classes d’ordonnancement en
temps réel.
• Dans tous les cas, chaque processus possède une valeur de priorité comprise entre
-20 et +19. Plus la priorité est basse plus l’ordonnanceur privilégiera ce processus.
32
Ordonnancement sous Linux
Temps partagé ou SCHED_OTHER
• Cette classe d’ordonnancement est destinée aux processus non prioritaires. Ces processus
s’exécutent uniquement si aucun processus des classes 1 et 2 n’est à l’état prêt.
• Les processus de cette classe se partagent le processeur de manière inégale, selon leur
priorité et leur usage du processeur.
• Chaque processus possède une valeur de priorité qui lui est attribuée au moment de sa
création appelée priorité statique qui peut être modifiée via des appels systèmes.
• Une priorité dynamique est calculée par la suite en prenant en compte la priorité statique
ainsi que d’autres facteurs tels que le taux d’utilisation du processeur et l’intensité des
entrées/sorties.
• En fonction de la valeur de la priorité dynamique, l’ordonnanceur choisi un processus et
lui attribue le processeur pour un temps d’exécution maximal.
33
Ordonnancement sous Linux
Appels système
Appel Système Description
nice( ) Change la priorité d’un processus.
getpriority( ) Renvoie la priorité maximale d’un groupe de processus.
setpriority( ) Définit la priorité d’un groupe de processus.
sched_getscheduler( ) Renvoie la politique d’ordonnancement d’un processus.
sched_setscheduler( ) Définit la politique d’ordonnancement et la priorité d’un
processus.
sched_getparam( ) Renvoie la priorité d’un processus.
sched_setparam( ) Définit la priorité d’un processus.
sched_yield( ) Abandon volontaire du processeur sans blocage.
sched_get_priority_min( ) Revoie la priorité minimale pour une politique
d’ordonnancement.
sched_get_priority_max( ) Revoie la priorité maximale pour une politique
d’ordonnancement.
sched_rr_get_interval( ) Revoie le quantum de temps pour une politique
d’ordonnancement Round Robin.
34