Académique Documents
Professionnel Documents
Culture Documents
Ordonnancement
Ordonnancement
2 Algorithmes d’ordonnancement
Ordonnancement
Sans préemption
Avec préemption
Fabien Rico
3 Améliorations
Univ. Claude Bernard Lyon 1
Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 1 / 37 Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 2 / 37
Introduction Introduction
À un instant donné 2 processus (A et B) doivent s’exécuter. Les tâches arrivent aléatoirement (sauf cas particulier ex. temps réel).
1 1 On ne connaı̂t pas à priori leur durée.
Chacun alterne 2s de lecture sur le disque et 2s de calcul.
Chacun dure en tout 5 secondes. Plusieurs tâches peuvent être disponibles et assez souvent aucune ne
Si on les exécute l’est.
I à la suite il faut 10 secondes : Elles ont des importances différentes (p. ex. swap).
I A IA A IA A IA A IA A IB B IB B IB B IB B IB B
Elles peuvent avoir des dépendances.
I en même temps il faut 5, 5 secondes
IB IA IB IA IB IA IB IA IB
Il y a parfois des contraintes externes (pilote).
IA A B A B A B A B A B Le comportement des tâches est différent :
I Processus interactifs (court, temps de réponse important)
Si un processus est bloqué, il faut exécuter un autre processus I Processus avec beaucoup d’entrée/sortie (analyse de disque)
Mais ce n’est pas si simple. I Long calculs (rare)
Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 3 / 37 Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 4 / 37
Introduction Introduction
Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 7 / 37 Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 8 / 37
FIFO
1 Introduction
2 Algorithmes d’ordonnancement Le plus simple, on exécute les tâches dans l’ordre d’arrivée : Par exemple :
Sans préemption
T1 T2 T3
Avec préemption
Durée 10 2 1
3 Améliorations Arrivée 0 0, 001 2
5 Conclusion Cette méthode a les mêmes problèmes que toutes les queues.
Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 9 / 37 Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 10 / 37
Problème
Les 2 derniers ordonnancements ne sont pas équitables : 1 Introduction
Si un processus est peu prioritaire (ou long pour SJF), il est bloqué
par tous les autres 2 Algorithmes d’ordonnancement
Sans préemption
T1 T2 T3 T4 T20
Avec préemption
Durée 10 2 1 3 2
Arrivée 0 0 0 2 5 3 Améliorations
Priorité 10 3 4 6 3
4 Ordonnancement dans les systèmes
T2 T3 T4 T20 T1 T1 T1
Linux
0 5 10 15 Windows
Il y a famine Evolutions
Idée de solution : on peut augmenter la priorité des processus qui ne
sont pas élus 5 Conclusion
Nouveau problème : une tâche longue devient prioritaire puis bloque
le processeur (mauvais temps de réponse).
⇒ il faut une préemption pour découper la tâche.
Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 13 / 37 Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 14 / 37
Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 15 / 37 Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 16 / 37
Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 17 / 37 Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 18 / 37
Algorithmes d’ordonnancement Avec préemption Améliorations
Exemple
1 Introduction
2 Algorithmes d’ordonnancement
Avec un quantum de q = 2, ordonnancez : Sans préemption
T1 T2 T3 T4 Avec préemption
Durée 6 3 4 3
Arrivée 0 2 3 8 3 Améliorations
Priorité 4 2 2 4
4 Ordonnancement dans les systèmes
Linux
Windows
0 5 10 15 Evolutions
5 Conclusion
Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 19 / 37 Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 20 / 37
Améliorations Améliorations
Améliorations Améliorations
Calc.
donnée et sa sauvegarde, qui par- Mutex Pour résoudre ce problème, certains systèmes utilisent l’héritage de
Bloque
nt priorité
tagent une zone protégée par un mu- e tie
D I Un processus qui bloque un processus plus prioritaire obtient sa priorité.
tex. Sauv. que
Blo I Ce n’est utilisé que dans des systèmes spécifiques (par ex. temps réel).
Comme la base a un rôle Les autres utilisent des méthodes moins sûres :
important, sa priorité est élevée. I Pour linux, l’évolution de la priorité fait en sorte que la tâche bloquante
La sauvegarde a une priorité faible. finira par être élue.
I Pour windows, une tâche qui n’est pas élue pendant
À un instant donné la sauvegarde acquiert le mutex.
longtemps obtient la priorité maximale pendant 2 quantum de
Si une tâche de calcul de priorité moyenne arrive à ce moment. temps.
Le calcul bloque la sauvegarde (car elle est plus prioritaire).
La sauvegarde bloque la base de donnée car elle détient le mutex.
En pratique le calcul bloque la base de donnée qui est une tâche plus
importante que lui.
Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 23 / 37 Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 24 / 37
Ordonnancement dans les systèmes Ordonnancement dans les systèmes Linux
Linux
1 Introduction
2 Algorithmes d’ordonnancement Le système linux ordonnance directement les threads (pas les processus). Il
Sans préemption définit plusieurs classes de threads :
Avec préemption 2 classes dites temps réel
I Les FIFO (SCHED FIFO)
3 Améliorations I Les Round Robin (SCHED RR)
qui ne sont pas réellement temps réel, car elles ne permettent pas
4 Ordonnancement dans les systèmes d’obtenir de garanties sur les échéances.
Linux Les threads en temps partagé :
Windows I Les threads standards (SCHED OTHER)
Evolutions I Les threads de calculs (SCHED BATCH)
I Les threads de tâches de fond (SCHED IDLE)
5 Conclusion
Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 25 / 37 Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 26 / 37
Ordonnancement dans les systèmes Linux Ordonnancement dans les systèmes Linux
Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 27 / 37 Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 28 / 37
Ordonnancement dans les systèmes Linux Ordonnancement dans les systèmes Windows
Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 29 / 37 Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 30 / 37
Ordonnancement dans les systèmes Windows Ordonnancement dans les systèmes Windows
Résumé En plus
Processus
Idle Below n. Normal Above n. High R. T.
Idle 1 1 1 1 1 16 Des bonus/malus
Lowest 2 4 6 8 11 22 I bonus à tout processus dont la fenêtre arrive au premier plan,
I bonus pour ceux qui se réveillent suite à une entrée-sortie,
Threads
Below n. 3 5 7 9 12 23
I malus pour un thread qui finit sont quantum de temps,
Normal 4 6 8 10 13 24
I bonus pour un thread qui n’a pas eu la main pendant une période
Above n. 5 7 9 11 14 25 trop longue .
Highest 6 8 10 12 15 26
Des priorités limites
Time Crit. 15 15 15 15 15 31
I THREAD PRIORITY IDLE : 16 pour les temps réels et 1 pour les
normaux
I THREAD PRIORITY TIME CRITICAL : 31 pour les temps réels et 15
pour les normaux
Des threads particuliers de priorité 0 pour remplir de 0 la mémoire
(sécurité).
Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 31 / 37 Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 32 / 37
Ordonnancement dans les systèmes Evolutions Ordonnancement dans les systèmes Evolutions
mais qui partagent le même noyau ; Un mauvais ordonnancement peut être catastrophique.
Sur les systèmes simples :
demandent beaucoup moins de ressources ; I Souvent basé sur une priorité qui évolue au cours du temps.
sous linux se sont les conteneurs, par exemple lxc, docker. I 2 classes de processus : système (RT) et utilisateur.
I Utilisation du Round Robin
Cela permet :
d’isoler des applications ; Système plus complexes :
I Temps réel (besoin de garantie)
de faire cohabiter plusieurs versions d’une même librairie ; I Automatisme (contraintes)
d’implémenter des microservices.
Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 35 / 37 Fabien Rico (Univ. Claude Bernard Lyon 1) Ordonnancement séance 6 36 / 37
Conclusion
À retenir