Les Processus Informatiques
Les Processus Informatiques
Les Processus Informatiques
• Un gouvernement :
• Protège les utilisateurs les uns des autres
2
Crédit: P. Giguère
Programmes, processus et threads
• Un programme est un ensemble d’instructions et de variables
dont le but est d’accomplir une tâche précise. Un programme
est habituellement créé par un programmeur doté du
compilateur adéquat.
• le système d’exploitation
• ou un autre processus.
3
Programmes, processus et threads
• Un « thread » est une partie d’un processus qui peut
être exécutée indépendamment des autres éléments du
processus (en parallèle).
4
Exécution multi-tâches
• Exécuter un seul programme à la fois est un gaspillage de temps
et de ressources, car les programmes attendent souvent après un
périphérique. Par exemple, un programme peut attendre qu’un
fichier sur le disque dur soit lu. Pendant ce temps, le
microprocesseur tourne à vide.
5
Exécution multi-tâches
• Partage du CPU lors d’attente après les entrées-sorties (I/O)
Programme 1 Exécution Requête I/O Attente Exécution
Programme 2 Exécution Requête I/O Attente
Programme 3 Exécution Requête I/O
Sélection de
Programme 2 Exécution Attente
programme
6
Rappel: Interruptions et système d’exploitation
• Comment?
• Une horloge génère des interruptions périodiquement
7
Exécution multi-tâches
• Le SE change le programme exécuté:
• lorsque ce programme attends après un périphérique. Lorsqu’un programme utilise les
services d’I/O, un nouveau programme est exécuté.
• Le SE interrompt le programme qui roule avec une interruption répétitive (basée sur
l’horloge du système). Lorsque cette interruption survient, le système d’exploitation
utilise un peu de temps de CPU afin de déterminer quel est le prochain programme
à exécuter. Chaque programme est ainsi exécuté en petits morceaux (time-slicing)
de temps appelés quantum. L’opération consistant à choisir le prochain programme
exécuté se nomme ordonnancement (dispatching).
8
Un processus… dans tous ses états
9
Processus: état « prêt »
10
L’ordonnanceur
11
Processus: état « en cours »
12
Processus: état « bloqué »
13
Processus: état « terminé »
14
Un processus… dans tous ses états
Ordonnancement
Nouveau Terminé
Prêt En cours
Admission, Fin du
Planification de Quantum
terminé processus
haut-niveau
Requête E/S
Attente d'E/S
finie
Bloqué Attente de temps
Temps écoulé
ou en
attente
15
Process Control Block (PCB)
• Chaque processus:
Process ID (PID)
Program Counter
• a un état;
Registers
• a ses registres, sa mémoire et sa pile;
Memory pointers
• a une priorité.
Priority information
16
Ordonnancement (Dispatching)
• L’ordonnancement des processus consiste simplement à
décider quel processus sera exécuté dans le quantum suivant.
Prévenir la famine (starvation) L’exécution d’un processus ne doit pas être reportée indéfiniment.
17
Analogie de la vie de tous les jours™
18
Algorithmes d’ordonnancement
Processus 1 Processus 2
terminé terminé
P1 P1 P1 P1 P2 P2 P2 P3
19
Algorithmes d’ordonnancement
Processus 2 Processus 1
terminé terminé
P2 P2 P1 P1 P1 P1 P3 P3 P3 P3 P3
20
Algorithmes d’ordonnancement
P1 P2 P3 P4
21
Exercice #1
• Les processus suivants sont admis à l’ordonnanceur
(dans l’ordre):
• P1, durée: 5
• P2, durée: 3
• tourniquet
22
Exercice #1: solution
• Les processus suivants sont admis à l’ordonnanceur (dans
l’ordre):
• P1, durée: 5
• P2, durée: 3
• tourniquet: P1—P2—P1—P2—P1—P2—P1—P1
23
Arrivée dynamique des processus
• En pratique, les processus arrivent à différents
moments. Il faut donc recalculer quel processus
sera exécuté en prochain.
• Tourniquet
• On maintient une file d’attente. Lorsqu’un nouveau
processus arrive, on le place à la fin de la file d’attente.
24
Exercice #2
• Les processus suivants sont admis à l’ordonnanceur (dans l’ordre):
• P1, durée: 5, temps d’arrivée: 0
• tourniquet
25
Exercice #2: tourniquet
Temps: 0
File d’attente: P1 P2
P1: 5
Temps restant
P2: 4
P3:
P4:
Ordonnancement:
26
Exercice #2: tourniquet
Temps: 0
File d’attente: P1 P2 P1
P1: 5 4
Temps restant
P2: 4
Ordonnancement: P1
27
Exercice #2: tourniquet
Temps: 1
File d’attente: P1 P2 P1
P1: 5 4
Temps restant
P2: 4
Ordonnancement: P1
28
Exercice #2: tourniquet
Temps: 1
File d’attente: P1 P2 P1 P2
P1: 5 4
Temps restant
P2: 4 3
Ordonnancement: P1 P2
29
Exercice #2: tourniquet
Temps: 2
File d’attente: P1 P2 P1 P2 P3
P1: 5 4
Temps restant
P2: 4 3
P3: 1
Ordonnancement: P1 P2
30
Exercice #2: tourniquet
Temps: 2
File d’attente: P1 P2 P1 P2 P3 P1
P1: 5 4 3
Temps restant
P2: 4 3
P3: 1
Ordonnancement: P1 P2 P1
31
Exercice #2: tourniquet
Temps: 3
File d’attente: P1 P2 P1 P2 P3 P1
P1: 5 4 3
Temps restant
P2: 4 3
P3: 1
Ordonnancement: P1 P2 P1
32
Exercice #2: tourniquet
Temps: 3
File d’attente: P1 P2 P1 P2 P3 P1 P2
P1: 5 4 3
Temps restant
P2: 4 3 2
P3: 1
Ordonnancement: P1 P2 P1 P2
33
Exercice #2: tourniquet
Temps: 4
File d’attente: P1 P2 P1 P2 P3 P1 P2
P1: 5 4 3
Temps restant
P2: 4 3 2
P3: 1
Ordonnancement: P1 P2 P1 P2
34
Exercice #2: tourniquet
Temps: 4
File d’attente: P1 P2 P1 P2 P3 P1 P2
P1: 5 4 3
Temps restant
P2: 4 3 2
P3: 1 0
Ordonnancement: P1 P2 P1 P2 P3
35
Exercice #2: tourniquet
Temps: 5
File d’attente: P1 P2 P1 P2 P3 P1 P2 P4
P1: 5 4 3
Temps restant
P2: 4 3 2
P3: 1 0
P4: 3
Ordonnancement: P1 P2 P1 P2 P3
36
Exercice #2: tourniquet
Temps: 5
File d’attente: P1 P2 P1 P2 P3 P1 P2 P4 P1
P1: 5 4 3 2
Temps restant
P2: 4 3 2
P3: 1 0
P4: 3
Ordonnancement: P1 P2 P1 P2 P3 P1
37
Exercice #2: tourniquet
Temps: 6
File d’attente: P1 P2 P1 P2 P3 P1 P2 P4 P1 P2
P1: 5 4 3 2
Temps restant
P2: 4 3 2 1
P3: 1 0
P4: 3
Ordonnancement: P1 P2 P1 P2 P3 P1 P2
38
Exercice #2: tourniquet
Temps: 7
File d’attente: P1 P2 P1 P2 P3 P1 P2 P4 P1 P2 P4
P1: 5 4 3 2
Temps restant
P2: 4 3 2 1
P3: 1 0
P4: 3 2
Ordonnancement: P1 P2 P1 P2 P3 P1 P2 P4
39
Exercice #2: tourniquet
Temps: 8
File d’attente: P1 P2 P1 P2 P3 P1 P2 P4 P1 P2 P4 P1
P1: 5 4 3 2 1
Temps restant
P2: 4 3 2 1
P3: 1 0
P4: 3 2
Ordonnancement: P1 P2 P1 P2 P3 P1 P2 P4 P1
40
Exercice #2: tourniquet
Temps: 9
File d’attente: P1 P2 P1 P2 P3 P1 P2 P4 P1 P2 P4 P1
P1: 5 4 3 2 1
Temps restant
P2: 4 3 2 1 0
P3: 1 0
P4: 3 2
Ordonnancement: P1 P2 P1 P2 P3 P1 P2 P4 P1 P2
41
Exercice #2: tourniquet
Temps: 10
File d’attente: P1 P2 P1 P2 P3 P1 P2 P4 P1 P2 P4 P1 P4
P1: 5 4 3 2 1
Temps restant
P2: 4 3 2 1 0
P3: 1 0
P4: 3 2 1
Ordonnancement: P1 P2 P1 P2 P3 P1 P2 P4 P1 P2 P4
42
Exercice #2: tourniquet
Temps: 11
File d’attente: P1 P2 P1 P2 P3 P1 P2 P4 P1 P2 P4 P1 P4
P1: 5 4 3 2 1 0
Temps restant
P2: 4 3 2 1 0
P3: 1 0
P4: 3 2 1
Ordonnancement: P1 P2 P1 P2 P3 P1 P2 P4 P1 P2 P4 P1
43
Exercice #2: tourniquet
Temps: 12
File d’attente: P1 P2 P1 P2 P3 P1 P2 P4 P1 P2 P4 P1 P4
P1: 5 4 3 2 1 0
Temps restant
P2: 4 3 2 1 0
P3: 1 0
P4: 3 2 1 0
Ordonnancement: P1 P2 P1 P2 P3 P1 P2 P4 P1 P2 P4 P1 P4
44
Exercice #2: solution
• Les processus suivants sont admis à l’ordonnanceur (dans l’ordre):
• P1, durée: 5, temps d’arrivée: 0
• tourniquet
• P1—P2—P1—P2—P3—P1—P2—P4—P1—P2—P4—P1—P4
45
Algorithmes d’ordonnancement
46
Algorithmes d’ordonnancement
47
Algorithmes d’ordonnancement
Processus 2
terminé
P1 P1 P1 P2 P2 P2 P3 P3 P3
P1 P3
48
Algorithmes d’ordonnancement
49
Ordonnancement — Windows
• Algorithme: “Multilevel Feedback Queues”
Nouveau processus
Q7
Q6 Proc.
Q5
Q4
Q3
Q2 Proc. Proc.
Proc.
Dernière queue opère avec
Q1 (priorité minimale)
un tourniquet (“round-robin”)
50
Ordonnancement — Windows
• Variantes:
• Nombre de queues
51
Ordonnancement — Linux
52
“Swapping”
53
Références et exercices
• Références
• Irv Englander: chap. 15.3, 18 (jusqu’à 18.5)
54