Académique Documents
Professionnel Documents
Culture Documents
PROCESSUS
Mme AROUSSI
2020-2021
25 ……… P6
20 ……… P5 P4
10 ……… P7 P2 P8
5 ……… P1 P9
3
min 0 ……… P3
Priorité
Processus 1.2.a. Algorithme d’ordonnancement des files d’attente multi-niveaux
(priorité; durée) avec priorité où la politique d’ordonnancement de chaque file est FCFS
F5 = [,,,,,P1, P9]
P1 22
(5; 7)
CPU 136 √
24
P2 CPU 96 √
(10; 20)
P3 CPU 148 √
(0; 12)
P4 CPU 20 √
(20; 10)
28
P5 CPU 48 √
(20; 20)
P6 4
CPU 14 √ F10 = [,,,,,P7, P2, P8]
(25; 10)
30
P7 CPU 114 √
(10; 18)
4
P8 CPU 28 CPU 76 √
(10; 36)
10 4
P9 CPU 129 √
(5; 15)
Temps
EXERCICE 1
Question 1: Algorithme d’ordonnancement des files d’attente multi-
niveaux avec priorité
1.2.a. La politique d’ordonnancement de chaque file est FCFS
Processus Séquence d’ordonnancement
P1 Début 22 AttCPU 129 CPU 136 Fin
P2 Début 24 AttCPU 76 CPU 96 Fin
P3 Début 0 AttCPU 136 CPU 148 Fin
P4 Début 0 CPU 4 AttCPU 14 CPU 20 Fin
P5 Début 28 CPU 48 Fin
P6 Début 4 CPU 14 Fin
P7 Début 30 AttCPU 96 CPU 114 Fin
P8 Début 4 AttCPU 20 CPU 28 AttCPU 48 CPU 76 Fin
P9 Début 10 AttCPU 114 CPU 129 Fin
Ordre d’exécution des processus:
5
P4 P6 P4 P8 P5 P8 P2 P7 P9 P1 P3 Processus
| | | | | | | | | | | |
0 4 14 20 28 48 76 96 114 129 136 148 Instants
EXERCICE 1
Question 1: Algorithme d’ordonnancement des files d’attente multi-
niveaux avec priorité
1.3. La politique d’ordonnancement de chaque file est FCFS
Temps de réponse (Trep) = Instant_Début_Exécution – Instant_Arrivé
Vu qu’il n’y a pas des E/S dans les exécutions des processus (Temps_ATTES = 0) donc
Temps d’attente peut être déduit comme suit: = Tres – Tex (Tex: durée d’exécution). Cela
est utile pour vérifier vos calculs.
6
EXERCICE 1
Question 1: Algorithme d’ordonnancement des files d’attente multi-
niveaux avec priorité
1.3. La politique d’ordonnancement de chaque file est FCFS
P1 22
(5; 7)
24
P2 CPU 56 CPU 80 100 √
(10; 20)
P3 Insérer au début de F20 avec le quantum restant (q = 4)
(0; 12)
P4 CPU 20 √ Fin de quantum, attribuer un nouveau quantum
(20; 10)
28
P5 CPU 48 √
(20; 20)
P6 4
(25; 10)
CPU 12 CPU 14 √ F10 = [,,,,,,,P7,P8,P2]
30
P7 CPU 72 CPU 96
(10; 18)
4
P8 CPU 28 CPU 64 CPU 88
(10; 36)
10 10
P9 Insérer à la fin de F10 avec un nouveau quantum (q = 8)
(5; 15)
Temps
Processus 1.2.c. Algorithme d’ordonnancement des files d’attente multi-niveaux avec
(priorité; durée) priorité où la politique d’ordonnancement de chaque file est RR (q = 8)
P1
(5; 7)
CPU 129 √
P2 CPU 100 √
(10; 20)
P3 CPU 148 √
(0; 12)
P4
(20; 10)
P5
(20; 20)
P6
(25; 10)
P7 CPU 110 √
(10; 18)
P8 CPU 108 CPU 114 √
(10; 36)
11
P9 CPU 122 CPU 136 √
(5; 15)
Temps
EXERCICE 1
Question 1: Algorithme d’ordonnancement des files d’attente multi-
niveaux avec priorité
1.La politique d’ordonnancement de chaque file est RR
A la fin du quantum, le processus sera inséré à la fin de sa file
A l’arrivé du processus prioritaire, le processus interrompu sera inséré à la tête de la file avec le
quantum restant
Séquence d’ordonnancement Trep Tatt Tres
P1 Début 22 AttCPU 122 CPU 129 Fin 100 100 107
P2 Début 24 AttCPU 48 CPU 56 AttCPU 72 CPU 80 AttCPU 96 CPU 100 Fin 20 56 76
P3 Début 0 AttCPU 136 CPU 148 Fin 136 136 148
P4 Début 0 CPU 4 AttCPU 14 CPU 20 Fin 0 10 20
P5 Début 28 CPU 48 Fin 0 0 20
P6 Début 4 CPU 14 Fin 0 0 10
P7 Début 30 AttCPU 64 CPU 72 AttCPU 88 CPU 96 AttCPU 108 CPU 110 Fin 34 62 80
P8 Début 4 AttCPU 20 CPU 28 AttCPU 56 CPU 64 AttCPU 80 CPU 88 AttCPU 16 74 12
110
100 CPU 108 AttCPU 110 CPU 114 Fin
P9 Début 10 AttCPU 114 CPU 122 AttCPU 129 CPU 136 Fin 104 111 126
EXERCICE 1
En utilisant le tableau suivant qui présente la priorité, la durée d’exécution et
l’instant d’arrivé création de chaque processus:
Processus P1 P2 P3 P4 P5 P6 P7 P8 P9
Priorité 5 10 0 20 20 25 10 10 5
Durée d’exécution 7 20 12 10 20 10 18 36 15
Instant d’arrivé 22 24 0 0 28 4 30 4 10
priorité
File d’attente 1 Quantum = 8
14
EXERCICE 1
Question 2: Algorithme d’ordonnancement des files d’attente multi-
niveaux rétroactives
30 28 24 22 10 4 4 0 0 Instants
P7 (18) P5 (20) P2 (20) P1(7) P9 (15) P8 (36) P6 (10) P4 (10) P3 (12) F0
F1
F2
F3
15
2. Algorithme d’ordonnancement des files d’attente multi-niveaux
Processus
durée) rétroactives à 4 files : F0 (RR avec q = 4), F1 (RR avec q = 8), F2 (RR avec q
= 16) et F3 (SJF)
22
P1
(7)
24
P2
(20)
P3 CPU 4 AttCPU (F1)
(12)
P4 CPU 8 AttCPU (F1)
(10)
28
P5
(20)
P6 4
CPU 12 AttCPU (F1)
(10)
P7 30
(18)
4
P8 AttCPU (F0) CPU 16 AttCPU (F1)
(36)
10 16
P9 CPU 20 AttCPU (F1)
(15)
Temps
EXERCICE 1
Question 2: Algorithme d’ordonnancement des files d’attente multi-niveaux
rétroactives
Instants
F2
Instants
F3
A t = 22, le processus P1 arrive, et il sera inséré dans F0 (donc plus prioritaire). P3 sera inséré
17
dans F0 à la tête avec quantum restant (q = 6) et il ne sera exécuté qu’à l’instant 38.
2. Algorithme d’ordonnancement des files d’attente multi-niveaux
Processus
durée) rétroactives à 4 files : F0 (RR avec q = 4), F1 (RR avec q = 8), F2 (RR avec q
= 16) et F3 (SJF)
22
P1 insérer dans F1 à la tête avec AttCPU (F1)
CPU 26
(7)
quantum restant (q = 6) 24
P2 CPU 30 AttCPU (F1)
(20)
P3 AttCPU (F1)
(12)
CPU 4 CPU 22 AttCPU (F1) CPU 44 √
P4 CPU 8 AttCPU (F1) CPU 50 √
(10)
28
P5 CPU 34 AttCPU (F1)
(20)
P6 4
CPU 12 √
AttCPU (F1) CPU 56 √
(10)
P7 30
CPU 38 AttCPU (F1)
(18)
4
P8 AttCPU (F0) CPU 16 AttCPU (F1)
(36)
10 18
P9 CPU 20 AttCPU (F1)
(15)
Temps
2. Algorithme d’ordonnancement des files d’attente multi-niveaux
Processus
durée) rétroactives à 4 files : F0 (RR avec q = 4), F1 (RR avec q = 8), F2 (RR avec q
= 16) et F3 (SJF)
P1
(7)
AttCPU (F1) CPU 75 √
P2 AttCPU (F1) CPU 83 AttCPU (F2)
(20)
P3
(12) √
P4
(10)
CPU 56 √
P5 AttCPU (F1) CPU 91 AttCPU (F2)
(20)
P6
(10)
√
P7 AttCPU (F1) CPU 99 AttCPU (F2)
(18)
P8 CPU 64 AttCPU (F2)
(36)
19
P9 CPU 72 AttCPU (F2)
(15)
Temps
EXERCICE 1
Question 2: Algorithme d’ordonnancement des files d’attente multi-
niveaux rétroactives
A t = 99
F0
F1
91 83 75 72 64 Instants
P7 (6) P5 (8) P2 (8) P9 (3) P8 (24) F2
F3
20
2. Algorithme d’ordonnancement des files d’attente multi-niveaux
Processus
durée) rétroactives à 4 files : F0 (RR avec q = 4), F1 (RR avec q = 8), F2 (RR avec q
= 16) et F3 (SJF)
P1
(7)
AttCPU (F1) CPU 75 √
P2 AttCPU (F1) AttCPU (F2)
(20)
CPU 83 CPU 126 √
P3
(12) √
P4
(10)
CPU 56 √
P5 AttCPU (F1) AttCPU (F2)
(20)
CPU 91 CPU 134 √
P6
(10)
√
P7 AttCPU (F1) CPU 99 AttCPU (F2) CPU 140 √
(18)
P8 CPU 64 AttCPU (F2) CPU 115 AttCPU (F3)
(36)
21
P9 CPU 72 AttCPU (F2) CPU 118 √
(15)
Temps
EXERCICE 1
Question 2: Algorithme d’ordonnancement des files d’attente multi-
niveaux rétroactives
A t = 140
F0
F1
F2
115 Instants
P8 (8) F3
22
2. Algorithme d’ordonnancement des files d’attente multi-niveaux
Processus
durée) rétroactives à 4 files : F0 (RR avec q = 4), F1 (RR avec q = 8), F2 (RR avec q
= 16) et F3 (SJF)
P1
(7)
AttCPU (F1) CPU 75 √
P2 AttCPU (F1) AttCPU (F2)
(20)
CPU 83 CPU 126 √
P3
(12) √
P4
(10)
CPU 56 √
P5 AttCPU (F1) AttCPU (F2)
(20)
CPU 91 CPU 134 √
P6
(10)
√
P7 AttCPU (F1) CPU 99 AttCPU (F2) CPU 140 √
(18)
P8 CPU 64 AttCPU (F2) CPU 115 AttCPU (F3) CPU 148 √
(36)
23
P9 CPU 72 AttCPU (F2) CPU 118 √
(15)
Temps
EXERCICE 1
Question 2: Algorithme d’ordonnancement des files d’attente multi-
niveaux rétroactives
AttCPU dans F0 ; AttCPU dans F1; AttCPU dans F2; AttCPU dans F3.
T2 6
CPU 16 F0 26 CPU 36 AttF0 F0 56 CPU 58 √
(24, 20)
T3 20
CPU 24 AttF0 F0 46 CPU 54 F1 64 CPU 74
(24, 20)
T4 22
(14, 20) CPU 26 AttCPU CPU 62 AttF1
28
Temps
EXERCICE 2
Thread Priorité Instant Historique d’exécution
d’arrivé
T1 8 0 8 ES(F0) 12 ES(F1) 10 ES(F0) 2
T2 24 6 10 ES(F0) 10 ES(F0) 2
T3 24 20 4 ES(F0) 8 ES(F1) 10 ES(F1) 6
T4 14 22 6 ES(F1) 10 ES(F1) 2
Threads Priorité = Min (14 + 6, 15) = 15; Q = 30; Insérer au début de F15
(priorité, quantum)
T1 F1 74 CPU 84 F0 94 AttCPU CPU 102 √
(14, 40)
Temps
Prio = Min (14 +1, 15) = 15; Q = 14; insérer au début de F15
EXERCICE 2
Algorithme d’ordonnancement sur Windows
Séquence d’ordonnancement
T1 Début 0 CPU 6 AttCPU 16 CPU 18 AttF0 26 F0 36 CPU 46 AttCPU 54 CPU 56 AttF1
64 F1 74 CPU 84 F0 94 AttCPU 100 CPU 102 Fin
T2 Début 6 CPU 16 F0 26 CPU 36 AttF0 46 F0 56 CPU 58 Fin
T3 Début 20 CPU 24 AttF0 36 F0 46 CPU 54 F1 64 CPU 74 AttF1 84 F1 94 CPU 100 Fin
T4 Début 22 AttCPU 24 CPU 26 AttCPU 58 CPU 62 AttF1 74 F1 84 CPU 94 F1 104 CPU
106 Fin
Pour le thread 1
Instants 0 36 74 94
Priorité 8 8 + 6 (F0) = 14 + 1 (F1) – 1 (q =0) = 14 Min (14 + 6 (F0),
14 Il sera inséré à la fin de la file de priorité 14 15) = 15
Quantum (ms) 20 12 0 40 30
30
Pour le thread 4: Instants 22 84 104
(Q = 20 ms) Priorité 14 Min (14 +1, 15) = 15 Min (15 + 1, 15) = 15
EXERCICE 2
Algorithme d’ordonnancement sur Windows
Séquence d’ordonnancement
T1 Début 0 CPU 6 AttCPU 16 CPU 18 AttF0 26 F0 36 CPU 46 AttCPU 54 CPU 56 AttF1
64 F1 74 CPU 84 F0 94 AttCPU 100 CPU 102 Fin
T2 Début 6 CPU 16 F0 26 CPU 36 AttF0 46 F0 56 CPU 58 Fin
T3 Début 20 CPU 24 AttF0 36 F0 46 CPU 54 F1 64 CPU 74 AttF1 84 F1 94 CPU 100 Fin
T4 Début 22 AttCPU 24 CPU 26 AttCPU 58 CPU 62 AttF1 74 F1 84 CPU 94 F1 104 CPU
106 Fin
Ordre d’exécution sur CPU
T1 T2 T1 T3 T4 T2 T1 T3 T1 T2 T4 T3 T1 T4 T3 T1 T4
| | | | | | | | | | | | | | | | | |
| | |
0 6 16 18 20 24 26 36 46 54 56 58 62 74 84
64 94 100 102 104 106
31
CPU inactif
EXERCICE 2
Algorithme d’ordonnancement sur Windows
Séquence d’ordonnancement
T1 Début 0 CPU 6 AttCPU 16 CPU 18 AttF0 26 F0 36 CPU 46 AttCPU 54 CPU 56 AttF1
64 F1 74 CPU 84 F0 94 AttCPU 100 CPU 102 Fin
T2 Début 6 CPU 16 F0 26 CPU 36 AttF0 46 F0 56 CPU 58 Fin
T3 Début 20 CPU 24 AttF0 36 F0 46 CPU 54 F1 64 CPU 74 AttF1 84 F1 94 CPU 100 Fin
T4 Début 22 AttCPU 24 CPU 26 AttCPU 58 CPU 62 AttF1 74 F1 84 CPU 94 F1 104 CPU
106 Fin
Pour vérifier, Tatt_total= Tres – (Tex + TES)
Thread Tex = Tres Tatt Taux d’utilisation du processeur (TUCPU)
TCPU CPU F0 F1 Total (*)
∑
T1 32 102 24 8 8 40 TUCPU = × 100=
T2 22 52 0 10 0 10
T3 28 80 0 12 10 22 × 100 = × 100 32
=
T4 18 84 34 0 12 46 94%
EXERCICE 3
Soient A, B et C trois threads s’exécutant sur Linux.
Threads A B C
Priorité statique 20 18 10
Politique (1) SCHED_FIFO SCHED_FIFO SCHED_FIFO
d’ordonnancement (2) SCHED_RR SCHED_RR SCHED_RR
(3) SCHED_FIFO SCHED_RR SCHED_OTHER
(4) SCHED_OTHER SCHED_OTHER SCHED_OTHER
Instant d’arrivé 0 0 0
Historique temporelle CPU: 16 ut, E/S: 16 ut; CPU: 25 CPU: 4 ut, E/S: 11 ut; CPU: 30 CPU: 25
b. les E/S se font sur le même périphérique (e.g. disque dur) où les requêtes E/S sont traitées
en FCFS, et le périphérique ne traite qu’une seule requête E/S à la fois et lorsqu’une requête
34
est lancée, elle ne peut pas être interrompue.
EXERCICE 3
Algorithme d’ordonnancement sur Linux:
Système d’ordonnancement multiniveaux indépendants
La valeur de priorité varie de 1 à 40 ( 1 plus faible et 40 la plus forte)
Trois politiques d'ordonnancement
Politique Principe Préemptif Priorité Quantum (Q) Critère de
(Prio) sélection
SCHED_FIFO FCFS Oui Statique ///// Priorité
SCHED_RR RR Oui Statique Variable Priorité
Q = Q/2 + prio
SCHED_OTHER RR Oui ////// Variable Note = Q + prio
Q = Q/2 + prio
Threads (priorité)
A E/S 32
(20)
CPU 16 CPU 57 √
B AttCPU CPU 20 E/S 31 CPU 32 AttCPU CPU 86 √
(18)
C AttCPU AttCPU
(10)
CPU 31 CPU 100 √ 36
Temps
EXERCICE 3
Cas (1.a) : Les threads sont de classes SCHED_FIFO et les E/S se font
sur deux périphériques différents
Temps d’exécution = temps CPU
Temps de séjour = temps de résidence
Temps d’attente = temps d’attente CPU + temps d’attente d’E/S
Le contexte du processus est le sous-ensemble de la machine que leur instructions
peuvent modifier ou consulter (registres internes, registres adressables, espace mémoire,
…..). Il permet de reprendre son exécution qui a été interrompu.
Nombre de changement de contexte = nombre de sauvegarde du contexte = nombre de
restauration du contexte
Le sauvegarde de contexte du processus se fait lorsqu’il est interrompu (pour une des
raisons suivantes: arrivée d’un processus plus prioritaire, fin du quantum, demande E/S,
fin anormale ou autre) ou lorsqu’il se termine.
37
La restauration de contexte du processus se fait lorsqu’il est sélectionné par le processeur
pour s’exécuter.
EXERCICE 3
Cas (1.a) : Les threads sont de classes SCHED_FIFO et les E/S se font
sur deux périphériques différents
Séquence d’ordonnancement Temps Temps Temps Nombre de
d’exécution de d’attente changement
séjour de contexte
A Début 0 CPU 16 E/S 32 CPU 57 Fin 16+25 =41 57 0 2
B D 0 AttCPU 16 CPU 20 E/S 31 CPU 32 AttCPU 57 CPU 86 F 4+30 = 34 86 41 3
C Debut 0 AttCPU 20 CPU 31 AttCPU 86 CPU 100 Fin 25 100 75 2
Threads(priorité)
A E/S 32
(20)
CPU 16 CPU 57 √
B AttCPU CPU 20 E/S 31 CPU 32 AttCPU CPU 86 √
(18)
38
C AttCPU AttCPU
(10)
CPU 31 CPU 100 √
Temps
EXERCICE 3
Cas (1.b) : Les threads sont de classes SCHED_FIFO et les E/S se font
sur le même périphérique
Threads A B C
Priorité statique 20 18 10
Historique temporelle CPU: 16 ut, E/S: 16 ut; CPU: 25 CPU: 4 ut, E/S: 11 ut; CPU: 30 CPU: 25
Threads (priorité)
A E/S 32
(20)
CPU 16 CPU 57 √
B AttCPU CPU 20 AttE/S E/S 43 CPU 87 √
(18)
C AttCPU AttCPU
(10)
CPU 32 CPU 100 √ 39
Temps
EXERCICE 3
Cas (1.b) : Les threads sont de classes SCHED_FIFO et les E/S se font
sur le même périphérique
Threads (priorité)
A E/S 32
(20)
CPU 16 CPU 57 √
B AttCPU CPU 20 AttE/S E/S 43 CPU 87 √
(18)
C AttCPU AttCPU
(10)
CPU 32 CPU 100 √ 40
Temps
EXERCICE 3
Cas (2.a) : Les threads sont de classes SCHED_RR et les E/S se font sur
deux périphériques différents
Threads A B C
Priorité statique 20 18 10
Quantum initial 20 18 10
Historique temporelle CPU: 16 ut, E/S: 16 ut; CPU: 25 CPU: 4 ut, E/S: 11 ut; CPU: 30 CPU: 25
Threads (priorité)
A CPU 16 E/S 32 CPU 36 CPU 56 CPU 57 √
(20)
B
(18)
AttCPU CPU 20 E/S 31 CPU 32 AttCPU CPU 70 CPU 86 √
C AttCPU CPU 30 CPU 31 AttCPU CPU 95 CPU 100 √
(10) 41
Temps
EXERCICE 3
Cas (2.a) : Les threads sont de classes SCHED_RR et les E/S se font sur
deux périphériques différents (même résultats que Cas 1.a)
Séquence d’ordonnancement Temps Temps Temps Nombre de
d’exécution de d’attente changement
séjour de contexte
A Début 0 CPU 16 E/S 32 CPU 57 Fin 41 57 0 2
B Début 0 AttCPU 16 CPU 20 E/S 31 CPU 32 AttCPU 57 CPU 86 Fin 34 86 41 3
C Debut 0 AttCPU 20 CPU 31 AttCPU 86 CPU 100 Fin 25 100 75 2
Threads(priorité)
A E/S 32
(20)
CPU 16 CPU 57 √
B AttCPU CPU 20 E/S 31 CPU 32 AttCPU CPU 86 √
(18)
42
C AttCPU AttCPU
(10)
CPU 31 CPU 100 √
Temps
EXERCICE 3
Cas (2.b) : Les threads sont de classes SCHED_RR et les E/S se font
sur le même périphérique
Threads A B C
Priorité statique 20 18 10
Quantum initial 20 18 10
Historique temporelle CPU: 16 ut, E/S: 16 ut; CPU: 25 CPU: 4 ut, E/S: 11 ut; CPU: 30 CPU: 25
Threads (priorité)
A E/S 32
(20)
CPU 16 CPU 57 √
B AttCPU CPU 20 AttE/S E/S 43 CPU 87 √
(18)
C AttCPU AttCPU
(10)
CPU 32 CPU 100 √ 43
Temps
EXERCICE 3
Cas (2.b) : Les threads sont de classes SCHED_RR et les E/S se font
sur le même périphérique (même résultat que Cas 1.b)
Séquence d’ordonnancement Temps Temps Temps Nombre de
d’exécution de d’attente changement
séjour de contexte
A Début 0 CPU 16 E/S 32 CPU 57 Fin 41 57 0 2
B D 0 AttCPU 16 CPU 20 AttE/S 32 E/S 43 AttCPU 57 CPU 87 F 34 87 42 2
C Debut 0 AttCPU 20 CPU 32 AttCPU 87 CPU 100 Fin 25 100 75 2
Threads (priorité)
A E/S 32
(20)
CPU 16 CPU 57 √
B AttCPU CPU 20 AttE/S E/S 43 CPU 87 √
(18)
C AttCPU AttCPU
(10)
CPU 32 CPU 100 √ 44
Temps
EXERCICE 3
Cas (3.a) : Les threads sont de classes différentes et les E/S se font sur
deux périphériques différents
Threads A B C
Priorité statique 20 18 10
Politique SCHED_FIFO SCHED_RR SCHED_OTHER
Quantum initial //////// 18 10
Historique temporelle CPU: 16 ut, E/S: 16 ut; CPU: 25 CPU: 4 ut, E/S: 11 ut; CPU: 30 CPU: 25
Threads (priorité)
A CPU 16 E/S 32 CPU 57 √
(20)
B AttCPU CPU 20 E/S 31 CPU 32 AttCPU CPU 70 CPU 86 √
(18)
C AttCPU AttCPU
(10)
CPU 30 CPU 31 CPU 95 CPU 100 √
45
Temps
EXERCICE 3
Cas (3.a) : Les threads sont de classes différentes et les E/S se font sur
deux périphériques différents (même résultats que Cas 1.a)
Séquence d’ordonnancement Temps Temps Temps Nombre de
d’exécution de d’attente changement
séjour de contexte
A Début 0 CPU 16 E/S 32 CPU 57 Fin 41 57 0 2
B D 0 AttCPU 16 CPU 20 E/S 31 CPU 32 AttCPU 57 CPU 86 F 34 86 41 3
C Debut 0 AttCPU 20 CPU 31 AttCPU 86 CPU 100 Fin 25 100 75 2
Threads(priorité)
A E/S 32
(20)
CPU 16 CPU 57 √
B AttCPU CPU 20 E/S 31 CPU 32 AttCPU CPU 86 √
(18)
46
C AttCPU AttCPU
(10)
CPU 31 CPU 100 √
Temps
EXERCICE 3
Cas (3.b) : Les threads sont de classes différentes et les E/S se font sur
le même périphérique
Threads A B C
Priorité statique 20 18 10
Politique SCHED_FIFO SCHED_RR SCHED_OTHER
Quantum initial //////// 18 10
Historique temporelle CPU: 16 ut, E/S: 16 ut; CPU: 25 CPU: 4 ut, E/S: 11 ut; CPU: 30 CPU: 25
Threads (priorité)
A E/S 32
(20)
CPU 16 CPU 57 √
B AttCPU CPU 20 AttE/S E/S 43 CPU 87 √
(18)
C AttCPU AttCPU
(10)
CPU 32 CPU 100 √ 47
Temps
EXERCICE 3
Cas (3.b) : Les threads sont de classes différentes et les E/S se font sur
le même périphérique (même résultat que Cas 1.b)
Threads (priorité)
A E/S 32
(20)
CPU 16 CPU 57 √
B AttCPU CPU 20 AttE/S E/S 43 CPU 87 √
(18)
C AttCPU AttCPU
(10)
CPU 32 CPU 100 √ 48
Temps
EXERCICE 3
Cas (4.a) : Les threads sont de classes SCHED_OTHER et les E/S se
font sur deux périphériques différents
Threads A B C
Priorité statique (P) 20 18 10
Quantum (Q) initial (Q = Q/2 + P) 20 18 10
Note (N) initiale (N=P+ Q; Q >0) 20 + 20 = 40 18 + 18 = 36 10 + 10 = 20
Historique temporelle CPU: 16 ut, E/S: 16 ut; CPU: 25 CPU: 4 ut, E/S: CPU: 25
11 ut; CPU: 30
Threads QA= 0; QB= 0; QC = 0 QA= 20; QB= 18; QC = 10 (état initial) QB= 18; QC = 10
(note) NA= 40; NB= 36; NC = 20 NB= 36; NC = 20
C
(20)
AttCPU CPU 30 CPU 40 AttCPU CPU 100 √
49
Temps
Réajuster les quanta Q = Q/2 + P QA= 22; QB= 25; QC = 0 QA= 22; QB= 0; QC = 0
QA= 22; QB= 25; QC = 10 NC = 20 NA= 42; NB= 43; NC = 0 NA= 42; NB= 0; NC = 0
EXERCICE 3
Cas (4.a) : Les threads sont de classes SCHED_OTHER et les E/S se
font sur deux périphériques différents
Temps
EXERCICE 4
Rappel sur le Système d’ordonnancement POSIX
53
Priorité
EXERCICE 4
Rappel sur le Système d’ordonnancement POSIX
Les threads de même priorité peuvent être traitées selon deux politiques:
SCHED_FIFO : Cela signifie que le thread est prévu jusqu'à ce qu’il se
termine, est annulé par un autre thread, s’est bloqué à la demande d’E/S
par exemple ou est interrompu par un thread plus prioritaire.
SCHED_RR: Le thread est également prévu jusqu’à ce que son quantum
d’ordonnancement expire. Il sera inséré à la queue de sa file.
La norme POSIX propose une troisième politique, appelée SCHED_OTHER
qui dépend de l'implémentation de l’ordonnanceur du S.E. Ceci permet
l’absence de situation de famine (les threads de basse priorité attendent
indéfiniment) qui peut être engendrée avec la politique SCHED_FIFO ou
SCHED_RR. 54
EXERCICE 4
Rappel sur le Système d’ordonnancement POSIX
55
EXERCICE 4
Rappel sur le Système d’ordonnancement POSIX
Les Pthreads d'un même processus sont prises en charge par un pool
de threads noyau.
56
EXERCICE 4
Soient TA1, TA2, TA3, TB1, TB2, TB3, TB4, TC1 et TC2 neuf threads des
différents processus A, B et C qui existent dans le système à un instant t:
20 TA2 (FIFO)
a. Le système d’ordonnancement
10 TA1 (FIFO)
31’
30’ TC1’ (OTHER) TA3’ (FIFO)
10 TC2 (OTHER)
SCHED_OTHER ≡ Ordonnancement à priorité
Thread EXERCICE 4
(durée d’exécution)
1. Question 1 : Ordonnancement à la portée du système
TA3 CPU +8 √ a. L’ordre d’exécution des threads
(8)
Changement A l’instant t + 25
de priorité 30’
A l’instant t + 2
30’ TC1’ (OTHER)
TA3
(8) CPU +2 CPU +16 √ 20’ TB4’ (RR) TA2’ (FIFO) TB1’ (RR)
TC1 64
CPU +10 √ Temps
(8) 10’ TA1’ (FIFO) TB2’ (RR) TC2’ (OTHER) TB3’ (RR)
t
EXERCICE 4
1. Question 1 : Ordonnancement à la portée du système
c. Que se passe-t-il si le thread TA2 appelle la fonction sched_yield () après
2 unités de son exécution ?
Il sera interrompu au profit de TB4
Il sera inséré à la queue de la file F20
Il ne reprendra l’exécution à la fin du quantum de TB4 (t+20+2 = t+ 22)
A l’instant t + 20
Il se termine à l’instant t+22+1 = t+ 23. 30’
66
EXERCICE 4
Processus A (FIFO)
30 TA3 1. Question 2 : Ordonnancement à la portée du processus
20 TA2
a. Le système d’ordonnancement
10 TA1
Processus B (RR, q = 2)
20 TB4 TB1
SCHED_OTHER ≡ Ordonnancement RR (q = 4)
EXERCICE 4
2. Question 2 : Ordonnancement à la portée du processus
a. L’ordre d’exécution des threads
Processus A (FIFO) Processus C (RR, q = 4)
Processus B (RR, q = 2)
30 TA3 (8) Une seule file
20 TB4 (8) TB1 (3)
Processus 20 TA2 (3) ……….. TC2 TC1
10 TB3 (5) TB2 (6)
(durée d’exécution) 10 TA1 (5)
TC1 TC2 √
TC CPU +12 CPU +24 68
(12)
t Temps
EXERCICE 4
1. Question 1 : Ordonnancement à la portée du processus
a. L’ordre d’exécution des threads
Processus A (FIFO) Processus C (RR, q = 4)
Processus B (RR, q = 2)
30 Une seule file
20 TB4 (3)
Processus 20 ……….. TC1
10 TB3 (5) TB2 (6)
(durée d’exécution) 10 TA1 (4)
TA1 TA1 √
TA CPU +28 CPU +40 √
(16)
TB4 √ TB2 TB2 TB3 TB2 TB2 TB3 TB2 TB2√ TB3 √
TB CPU +31 CPU +32 CPU +41 CPU +43 CPU +44 CPU +45 CPU +47 CPU +48 CPU +49 CPU +50 √
(22)
TC1 √
TC CPU +36 √ 69
(12)
t Temps
EXERCICE 4
2. Dans le cas où l’ordonnancement est à la portée du processus
(PTHREAD_SCOPE_PROCESS),
a. L’ordre d’exécution des threads
TB2 TB2
TB4 TB4 TA1 TB2 TB3 TB3 TB3
TA3 TB1 TC1 TA3 TB1 TC2 TA2 TB4 TC1 TA1 TB2 TB2 TB2 Threa
| | | | | | | | | | | | | |
t+ 04 08 12 16 20 24 28 32 36 40 44 48 50Instan
70
EXERCICE 4
2. Dans le cas où l’ordonnancement est à la portée du processus
(PTHREAD_SCOPE_PROCESS),
b. Que se passe-t-il si le processus A (B ou C) est pris en charge par deux
threads noyau ?
Plusieurs schémas possibles:
exemple 1: TCC TBB TAA TC TB TA
TB2 TB2
TB4 TB4 TA1 TB2 TB3 TB3 TB3
TA3 TB1 TC1 TA3 TB1 TC2 TA2 TB4 TC1 TA1 TB2 TB2 TB2 Threa
| | | | | | | | | | | | | |
t+ 04 08 12 16 20 24 28 32 36 40 44 48 71 50Instan
TA TAA TA TAA
TC TCC TC
TB TBB TB TBB TB TBB
EXERCICE 4
2. Dans le cas où l’ordonnancement est à la portée du processus
(PTHREAD_SCOPE_PROCESS),
b. Que se passe-t-il si le processus A (B ou C) est pris en charge par deux
threads noyau ?
Plusieurs schémas possibles:
Exemple 2: TCC TC TBB TB TAA TA
TB2 TB2
TB4 TB4 TA1 TB2 TB3 TB3 TB3
TA3 TA3 TB1 TB1 TC1 TC2 TA2 TA1 TB4 TB2 TC1 TB2 TB2 Threa
| | | | | | | | | | | | | |
t+ 04 08 12 16 20 24 28 32 36 40 44 48 72 50Instan
TA TAA TA TAA
TB TBB TB TBB TB TBB
TC TCC TC