Title: Ordonnanceur
1Ordonnanceur
- Partie du système dexploitation qui sélectionne
le prochain processus à sexécuter - Permet daméliorer les performance
- Systèmes de traitement par lots (batch)
- Systèmes interractifs
- Systèmes en temps réel
- Sassurer (entre autres) de lusage efficace du
CPU - Il ne faut pas basculer dun processus à lautre
trop fréquemment.
2Comportement des processus
- Les rafales d'utilisation du processeur alternent
avec les périodes d'attente des E/S - (a) Processus borné processeur
- (b) Processus borné E/S
3Quand ordonnancer?
- À quels moments l'ordonnanceur doit-il être
exécuté? - Quand un processus est créé
- Quand un processus se termine
- Quand un processus bloque
- Quand il y a une interruption (E/S ou horloge)
- Deux catégories d'algorithmes d'ordonnancement
- non préhemptif On laisse le processus
s'exécuter jusqu'à ce qu'il bloque ou libère le
processeur. - préhemptif On arrête le processus après un laps
de temps donné (quantum). Une horloge est
nécessaire.
4Objectifs des algorithmes d'ordonnancements
Tout les systèmes Équité Donner à des
processus comparables un temps processeur
équitable Respect de la politique La politique
établie doit être respectée Équilibre Tenir
occupé toutes les parties du système Systèmes de
traitement par lots Débit maximiser le nombre
de tâches par heure Temps de traitement
Minimiser le temps entre soumission et
terminaison Utilisation processeur Tenir le CPU
occupé en tout temps Systèmes interactifs (temps
partagé et serveur) Temps de réponse Réponse
rapide aux requêtes Proportionnalité Rencontrer
les attentes des usagers Systèmes à temps
réel Respect des échéances Éviter de perdre
des données Prévisibilité Éviter une
dégradation de la qualité (systèmes multimédia)
5Ordonnancement des systèmes de traitement par
lots (1)
- Premier arrivé, premier servi
- Une seule file dattente
- Facile à programmer et à comprendre
- Inconvénient pour les processus bornés E/S
- Exemple
- Un processus A utilise le CPU en rafales
dune seconde. - 10 autres processus utilisent peu le CPU mais
font 1000 accès disque. - Si A arrive en premier alors les 10 autres
processus devront attendre 1000 secondes pour
terminer.
6Ordonnancement des systèmes de traitement par
lots (2)
- Autres algorithmes
-
- Plus court en premier
- Temps restant le plus court (préhemptif)
- Un exemple d'ordonnancement par tâche la plus
courte en premier
7Trois niveau d'ordonnancement
8Ordonnancement des systèmes interactifs (1)
- Ordonnancement de type tourniquet (Round-Robin)
- liste des processus exécutables
- liste des processus exécutables après que B ait
utilisé son quantum - Préhemptif
- Petit quantum temps CPU perdu
- Grand quantum temps de réponse élevé
9Ordonnancement des systèmes interactifs (2)
- Ordonnancement par priorités
- Tous les processus nont pas la même priorité.
- La priorité peut être donnée dynamiquement par le
système - Ex. Si le système réalise quun processus est
borné E/S - On peut regrouper les processus en catégorie de
priorité - On doit alors revoir périodiquement les priorités
pour ne pas affamer les processus de faible
priorité
10Ordonnancement des systèmes interactifs (3)
- Files dattentes multiples
- Ordonnancement du système CTSS (1961)
- Catégories de priorités
- On donne 1 quantum aux processus de la catégorie
supérieure, 2 quanta aux processus de la
catégorie suivante, puis 4, 8 ,etc. - Lorsquun processu a épuisé tous ses quanta, il
descend dune catégorie. - Permet de réduire le nombre de changement
- Ex. Un processus nécessitant 100 quanta.
- 1 2 4 8 16 32 64 127
- Note Rendu à la 7ième catégorie, le
processus naura pas besoin de tout ses 64
quanta.
11Ordonnancement des systèmes interactifs (4)
- Exécuter le processus suivant le plus court
- On tente de minimiser le temps de réponse
- Comment déterminer le processus le plus court?
- Estimation fondé sur les comportements antérieurs
- Ex. Supposons que lestimation du temps restant
dune commande est T0 et que la prochaine
exécution nécessite un temps T1 - Alors on peut estimer le temps de la
prochaine exécution de cette cammande à - aT0 (1-a)T1
- Selon la valeur de a notre estimation
possède plus ou moins de mémoire. -
12Ordonnancement des systèmes interactifs (4)
- Ordonnancement par tirage au sort
- Chaque processus se voit attribué un certain
nombre de billets de lotterie - Lordonnanceur choisit au hasard un billet pour
déterminer quel sera le prochain processus à être
exécuté. - Plus un processus est prioritaire, plus il
possède de billets de loterie - Des processus coopératifs peuvent échanger des
billets sils le désirent. - Aucun processus ne peut être affamé. Chacun
possède une chance non nulle dêtre choisi. - Permet de mieux controler le taux dutilisation
du CPU par les différents processus.
13Systèmes à temps réel (1)
- Exemples
- Lecteur de disques compacts
- Monitoring dans les services de soins intensifs
- Pilote automatique dun avion
- Automates des chaînes de fabrication
- Le programme est divisé en un certain nombre de
processus très court dont le comportement est
prévisible et connu à lavance. - Deux catégories de systèmes
- Temps réel à tolérance zéro (hard real time)
- Temps réel avec tolérance (soft real time)
- Deux catégories dévénements
- Périodiques
- Apériodiques
14Systèmes à temps réel (2)
- Étant donné
- m événements périodiques
- événement i se produit périodiquement à fréquence
Pi et requiert Ci secondes - La charge de travail est réalisable seulement si
- Exemple 3 événements avec des périodes de 100,
200 et 500ms ayant besoin de 50, 30 et 100ms
respectivement. - 0,5 0,15 0.2 0,85 lt 1
- Un événement de période 1000 peut être
ajouté tant quil requiert pas plus 150ms
15Politique versus Mécanisme
- Distinguer entre ce qui doit être fait
(politique) et la façon de le faire (mécanisme) - Chaque processus sait quels sont ses threads
enfants qui sont les plus prioritaires. - Algorithme d'ordonnancement paramétré
- L'ordonnancement est effectué par le noyau en
fonction de la priorité des chaque thread. - Paramètres fournis par les processus
- Selon sa politique, un processus attribut des
priorités à ses enfants.
16Ordonnancement des threads (1)
- Exemple avec des threads usagers
- Processus avec quantum de 50-msec
- Chaque threads s'exécute 5 msec par rafale de
processeur
17Ordonnancement des threads (2)
- Exemple avec des threads noyaux
- Processus avec quantum de 50-msec
- Chaque threads s'exécute 5 msec par rafale de
processeur
18Windows XP (1)
Z
- 32 niveaux de priorité pour les threads
19Windows XP (2)
20Windows XP (3)
- DWORD WINAPI GetPriorityClass( __in HANDLE
hProcess) - BOOL WINAPI SetPriorityClass( __in HANDLE
hProcess, -
__in DWORD dwPriorityClass) - int WINAPI GetThreadPriority( __in HANDLE
hThread) - BOOL WINAPI SetThreadPriority( __in HANDLE
hThread, -
__in int nPriority)
21Windows XP (4)
22Solaris (1)
- Plusieurs classes d'ordonnancement qui
définisssent les - politiques d'ordonnancement
- Niveau de priorité
- Algorithme d'ordonnancement utilisé
- Sur Solaris 9
- Real Time
- System
- Time Sharing
- Interactive
- Fixed
- Fair Share
23Solaris (2)
59
0
59
0
24Solaris (3)
25Solaris (4)
int pthread_getschedparam(pthread_t thread,
int restrict policy,
struct sched_param
restrict param) int
pthread_setschedparam(pthread_t thread,
int
policy,
const struct sched_param param) Le
paramètre policy peut être
SCHED_FIFO, SCHED_RR ou SCHED_OTHER
26Solaris (5)
Exemple int set_my_thread_priority(int
priority) struct sched_param sp
memset(sp, 0, sizeof(struct sched_param))
sp.sched_prioritypriority if
(pthread_setschedparam(pthread_self(), SCHED_RR,
sp) -1) printf( Impossible de
changer la priorité.\n") return -1
return 0