Vous êtes sur la page 1sur 6

L’ordonnanceur ou le gestionnaire de commutation

  

3.1     Généralités
Dans un système à un seul processeur, on l’a vu, un seul processus peut tourner à
la fois ; les autres doivent attendre la disponibilité du processeur. L’objectif de la
multiprogrammation est de maximiser l’utilisation du processeur, en ayant toujours
un processus qui tourne. Le principe est simple : plusieurs processus sont
maintenus à l’état « prêt » en mémoire. Lorsqu’un processus doit attendre
(typiquement, pour une entrée sortie), alors au SE donne le temps CPU à un autre
processus.
L’ordonnanceur (scheduler) est la partie fondamentale du SE qui s’occupe de
distribuer les temps processeur entre les différents processus.
L’ordonnanceur règle les états et les transitions des processus d’un ordinateur. Il
a pour objectifs principaux :

 de maximiser l’utilisation du processeur ;

 d’être équitable entre les différents processus (pour éviter la famine pour certains

processus) ;

 de présenter un temps de réponse acceptable ;

 d’avoir un bon rendement (nombre de processus complétés dans un temps donné) ;

 d’assurer les priorités.


Il y a deux types d’algorithmes d’ordonnancement.

Les algorithmes sans réquisition (non-preemptive algorithms)


Le processus qui a le processeur ne le relâche que lorsqu’il termine son exécution
ou quand il se bloque sur une entrée-sortie. C’est lui qui décide quand il « redonne
la main » au SE pour que celui-ci alloue le processeur à un autre processus.
Les inconvénients sont évidents :
 Le CPU peut être monopolisé par un processus glouton (« vorace en temps »), qui accapare

complètement le système.

 Si le processus se bloque et qu’il ne redonne pas la main au SE, alors tout le système est

bloqué.
Ce type d’algorithmes n’est pas présent dans les SE modernes. Les premiers
systèmes MS-DOS, Windows 3.1 et Mac OS avant la version 9 étaient de ce type.
Lorsqu’une longue opération était en cours, le système était « gelé ».

3.1.2    Les algorithmes avec réquisition (preemptive algorithms)


Le système d’exploitation a la possibilité de forcer un processus à relâcher le
processeur, puis le SE peut l’allouer à un autre processus à l’état prêt. Ce sont des
algorithmes avec réquisition qui sont utilisés dans les SE modernes.

3.1.3    Commutation de contexte
On l’a vu, lorsque le SE change de processus élu, il y a commutation de contexte,
où le SE jongle avec les PCB des processus.

L’ordonnancement sous Windows XP


Sous Windows NT, XP, Vista, l’ordonnanceur est de type « Multilevel feedback
queue ».

3.2.1    Quantums de temps
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). Toutefois,
une interruption matérielle peut venir écourter le quantum de temps.
En d’autres termes, chaque processus possède son quantum de temps pendant
lequel il dispose des ressources de l’ordinateur et du microprocesseur. À la fin de
cet intervalle de temps, s’il n’a pas complété son travail, l’ordonnanceur lui retire
ses privilèges d’exécution et donne les ressources d’exécution à un autre
processus. Si le processus se bloque (E/S) ou se termine avant la fin de son
quantum, le processeur est alloué à un autre processus.
Un quantum trop petit provoque trop de commutations de processus et réduit
l’efficacité du système alors qu’un quantum trop grand augmente le temps de
réponse pour les utilisateurs.
Comme les processus ont tendance à basculer constamment entre des phases
d’entrées/sorties et des phases de calcul sur l’unité centrale, l’algorithme
d’ordonnancement doit profiter de ce comportement.
Pour s’assurer qu’un processus ne s’exécute pas trop longtemps, l’ordinateur
possède un compteur de temps qui génère des séquences de 30 à 100 fois par
seconde. À chacune de ces interruptions, le système d’exploitation reprend la
main et décide si le processus courant continue ou s’il passe le microprocesseur à
un autre processus prêt. Ce mécanisme se traduit par un changement de contexte
entre les processus

Les priorités des processus et des threads


Tous les processus n’ont pas la même importante. C’est là que devient
utile l’ordonnancement avec priorité, le mode utilisé par Windows, où chaque
processus a une priorité. L’ordonnanceur lance alors le processus qui a la plus
grande priorité.
Les processus « high » passent en priorité
 
À sa création, un processus Windows reçoit un niveau de priorité. La priorité d’un
processus détermine sa part de temps de calcul sur l’ensemble du système.  Il
peut être intéressant de s’intéresser à ce réglage si, par exemple, on a un long
calcul ou une tâche gourmande qui tourne mais que l’on veut continuer à pouvoir
utiliser son ordinateur !
On veut donc baisser la priorité de ce processus de calcul pour qu’il n’accapare
pas la totalité des ressources de la machine. Il faut en effet savoir que, par défaut,
un processus gourmand en temps processeur (comme un calcul numérique par
exemple) rendra une machine monoprocesseur quasiment inutilisable quand il
tourne.
Réduire sa priorité, c’est-à-dire réduire son autorisation à consommer du temps
CPU, permet d’avoir une machine toujours fonctionnelle pour des tâches légères
(comme la bureautique, le courrier électronique ou la navigation Internet) sans
pour autant pénaliser lourdement le temps que mettra le calcul (bien entendu, le
calcul sera un peu ralenti mais relativement peu).
Pour être plus précis, ce sont les threads des processus qui ont une priorité. La
priorité d’une thread dépend de deux facteurs :

 La priorité de son processus ;

 La priorité de la thread elle-même.


Windows gère un grand nombre de priorités différentes (32). Voyons le tableau
qui montre comment se combinent les priorités des processus des processus et
des threads.

Les priorités sous Windows

Il est possible de changer la priorité de certains processus en cours d’exécution.

Les changements possibles grâce au Process Explorer


de Sysinternals

Les changements de priorité possibles avec le


Gestionnaire de tâches
Les priorités peuvent être statiques ou dynamiques dépendant du système
d’exploitation. Les processus à priorité dynamique voient leur niveau réévalué
constamment selon plusieurs critères. Par exemple, les processus qui font
beaucoup de E/S, comme ils attendent des données la majeure partie de leur
« temps de vie », disposent du processeur rapidement dès qu’ils sont en
mode prêt dans la file d’attente.
L’ordonnanceur peut utiliser plusieurs méthodes pour respecter les priorités des
processus tout en conservant un certain niveau d’équité afin d’éviter la famine
d’un processus.

Vous aimerez peut-être aussi