Chap1 Processus
Chap1 Processus
D’EXPLOITATION
Chapitre 1 : Processus
Processus
Notion de processus
Rappel sur la chaine de production d'un programme exécutable
L'exécution d'un programme
Le processus
Les états du processus
Le bloc de contrôle du processus (PCB)
Bibliothèq
ue
prog.exe :
programme
prog.exe : process
prog.c prog.o Exécutable
Exécutable en
source objet sur disque
mémoire
Editeur de Editeur de
Compilateur Chargeur
texte liens
résoudre les alloue de la
dépend du références place
langage externes, mémoire
vérifie que associer les pour les
la syntaxe appels données et
système le
programme
Introduction aux systèmes d'exploitation
L'utilisateur saisit son programme à l'aide de l'éditeur de texte qui crée un fichier sur le disque que l'on
appelle le fichier source.
Ce fichier source est ensuite compilé à l'aide d'un compilateur dépendant du langage de programmation
utilisé et dont le rôle est de vérifier que la syntaxe du langage est respectée et de générer alors
l'équivalent du programme source en langage machine : on obtient alors sur disque le fichier objet.
Ce fichier objet est ensuite soumis à l'éditeur de liens dont le rôle est de résoudre les références
externes, c'est-à-dire par exemple, d'associer les appels système inclus dans le programme à leur
adresse dans le système. L'éditeur de liens produit sur disque le fichier exécutable.
Lorsque l'utilisateur demande l'exécution de son programme, le fichier exécutable est alors monté en
mémoire centrale : c’est l'étape de chargement. Le système alloue de la place mémoire pour placer le
code et les données du programme.
Introduction aux systèmes d'exploitation
CO
103 100
RI 101
Disque
Load imm R1 20 102 load imm R1 20
ri 103 add imm R1 5
104 store dir R1 15
105
UAL
RSP UE
PSW
Bus externe
Introduction aux systèmes d'exploitation
Lorsque l'instruction courante aura été exécutée, le processeur chargera dans le registre RI l'instruction
pointée par le CO, soit add Imm R1 5 et le compteur ordinal prendra la valeur 104.
L'exécution de l'instruction add Imm R1 5 va modifier le contenu du registre PSW (Registre de Contrôle)
puisque c’est une instruction arithmétique : les flags de signe, de nullité etc... sont mis à jour.
On voit donc qu'à chaque étape d'exécution du programme, le contenu des registres du compteur ordinal
évolue. De même le contenu de la mémoire centrale peut être modifié : écriture, lecture dans la pile (Push,
Pop), modification des données par une instruction Store.
Introduction aux systèmes d'exploitation
Lors de l'étape de chargement, le système alloue de la place mémoire pour placer le code et les données du
programme et crée la pile d'exécution RSP de ce qui est en train de devenir un processus.
Il alloue alors une structure de donnée descriptive du processus destinée à regrouper toutes les informations
du contexte du processus : le bloc de contrôle du processus.
Définition : Processus
Un processus est un programme en cours d'exécution auquel est associé un environnement processeur
(CO, PSW, RSP, registres généraux) et un environnement mémoire appelés contexte du processus.
Un processus est l'instance dynamique d'un programme et incarne le fil d'exécution de celui-ci dans un
espace d'adressage protégé (objets propres : ensemble des instructions et données accessibles)
Un programme réentrant est un programme pour lequel il peut exister plusieurs processus en même temps
Introduction aux systèmes d'exploitation
Réveil
En attente
du
processeur
Prêt
Débloca Electio
ge n
En
Bloqu exécution
Elu
é
En attente
de Blocag
ressources e
Fin
Introduction aux systèmes d'exploitation
Les états du processus : Lors de son exécution, un processus est caractérisé par un état :
Lorsque le processus obtient le processeur et s'exécute, il est dans l'état élu. L'état élu est l'état d'exécution
du processus.
Lors de cette exécution, le processus peut demander à accéder à une ressource (réalisation d’une
entrée/sortie, accès à une variable protégée) qui n'est pas immédiatement disponible : le processus ne peut
pas poursuivre son exécution tant qu'il n'a pas obtenu la ressource (par exemple, le processus doit attendre
la fin de l'entrée/sortie qui lui délivre les données sur lesquelles il réalise les calculs suivants dans son
code) : le processus quitte alors le processeur et passe dans l'état bloqué. L'état bloqué est l'état d'attente
d'une ressource autre que le processeur.
Lorsque le processus a enfin obtenu la ressource qu'il attendait, celui-ci peut potentiellement reprendre son
exécution. Cependant, nous nous sommes placés dans le cadre de systèmes multiprogrammés, c'est-à-dire
qu'il y a plusieurs programmes en mémoire centrale et donc plusieurs processus.. Lorsque le processus est
passé dans l'état bloqué, le processeur a été alloué à un autre processus. Le processeur n'est donc pas
forcément libre. Le processus passe alors dans l'état prêt. L'état Prêt est l'état d'attente du processeur.
Le passage de l'état prêt vers l'état élu constitue l'opération d'élection. Le passage de l'état élu vers l'état
bloqué est l'opération de blocage. Le passage de l'état bloqué vers l'état prêt est l'opération de déblocage.
Introduction aux systèmes d'exploitation
Mode Actif
Utilisat Utilisat
eur eur
Actif
Mode Nouvea Prêt Noyau Zombi
Noyau u
en
Mémoir
e Endorm
i
Mode Endorm
Prêt
Swappe i
Swappe
Swappe
Introduction aux systèmes d'exploitation
En effet, le système Unix décharge de la mémoire centrale les processus endormis depuis trop longtemps
(ils sont alors dans l'état Endormi swappé). Ces processus réintègrent la mémoire centrale lorsqu'ils
redeviennent prêts (transition de l'état prêt swappé vers l'état prêt).
Un processus qui se termine passe dans un état dit zombi. Il y reste tant que son PCB n'est pas entièrement
démantelé par le système.
Introduction aux systèmes d'exploitation
Contexte du reprise
Compteur instruction (registres, pointeurs,
piles, …)
Informations de
comptabilisation et sur
les E/S, périphériques,
fichiers ouvert
PCB {
PID: 1234
PPID: 5678
State: Running Priority: 7
Registers: { SchedulingPolicy: "Round Robin"
PC: 0x004000F0, Resources: {
IR: 0x0A1B2C3D, FilesOpened: ["file1.txt",
Flags: 0x00000001 "file2.log"],
} FileDescriptors: [3, 5, 7],
StackPointer: 0x7FFF0000 Devices: ["Printer", "Disk Drive"]
MemoryInfo: { }
BaseAddress: 0x00400000, TimeInfo: {
MemoryLimit: 10 MB, TimeRemaining: 10 ms,
PageTableBase: 0x00500000 TotalExecutionTime: 50 ms
} }
IOWaiting: True
WaitingDevice: "Network Interface"
Threads: ["Thread1", "Thread2",
"Thread3"]
}
Introduction aux systèmes d'exploitation
le contexte processeur du processus : la valeur du CO, la valeur des autres registres du processeur
le contexte mémoire : ce sont des informations mémoire qui permettent de trouver le code et les données du
processus en mémoire centrale
des informations diverses de comptabilisation pour les statistiques sur les performances système
des informations liées à l' ordonnancement du processus. Le PCB permet la sauvegarde et la restauration
du contexte mémoire et du contexte processeur lors des opérations de commutations de contexte
Ordonnancement
Système Multiprocesseur
P
élu
1 Disque
P
attente E/S
2
P
attente CPU
3
P
attente E/S
4
P P P
attente CPU
5 2 4
P
attente CPU P
6
1 UE
Mémoire CPU
Bus externe
Ordonnancement
P1 est élu et s'exécute sur le processeur. P2 et P4 sont dans l'état bloqué car ils attentent tous les deux une
fin d'entrée/sortie avec le disque.
Les processus P3, P5 et P6 quant à eux sont dans l'état prêt : ils pourraient s'exécuter (ils ont à leur
disposition toutes les ressources nécessaires) mais ils ne le peuvent pas car le processeur est occupé par
P1.
Lorsque P1 quittera le processeur parce qu'il a terminé son exécution, les trois processus P3, P5 et P6
auront tous les trois le droit d'obtenir le processeur. Mais le processeur ne peut être alloué qu'à un seul
processus à la fois :
il faudra donc choisir entre P3, P5 et P6 : c'est le rôle de l' ordonnancement qui élira un des trois processus
Définition : Ordonnancement
La fonction d'ordonnancement gère le partage du processeur entre les différents processus en attente pour
s'exécuter, c'est-à-dire entre les différents processus qui sont dans l'état prêt. L'opération d'élection consiste à
allouer le processeur à un processus.
Ordonnancement
Débloca Préemption /
ge Réquisition
Electio
Bloqu n
Elu En
é exécution
En attente
de Blocag
ressources e
Fin
Ordonnancement
Une transition a été cependant ajoutée entre l'état élu et l'état prêt : c'est la transition de préemption.
La préemption correspond à une opération de réquisition du processeur, c'est-à-dire que le processeur est
retiré au processus élu alors que celui-ci dispose de toutes les ressources nécessaires à la poursuite de son
exécution. Cette réquisition porte le nom de préemption.
Définition : Préemption
Selon si l'opération de réquisition du processeur est autorisée ou non, l'ordonnancement sera qualifié
d'ordonnancement préemptif ou non préemptif :
si l'ordonnancement est non préemptif, la transition de l'état élu vers l'état prêt est interdite : un processus
quitte le processeur si il a terminé son exécution ou si il se bloque.
si l'ordonnancement est préemptif, la transition de l'état élu vers l'état prêt est autorisée : un processus quitte
le processeur si il a terminé son exécution , si il se bloque ou si le processeur est réquisitionné.
Ordonnancement
Système Multiprocesseur
Ordonnanceur et Répartiteur
Préempt Ordonnance
ion Réveil
ur
CP
U Elu Prêt
CP
PCB
PCB
PCB
PCB
PCB
Fin Répartite
U
ur
CP Classement selon une Débloca
U politique ge
d’ordonnancement
PCB
PCB
PCB
PCB
PCB
Blocage
Bloqué
Ordonnancement
C'est le répartiteur qui élit le processus en tête de file, c'est-à-dire qui lui alloue un processeur libre. La figure
montre le cas d’un système multiprocesseur ; le répartiteur doit alors choisir quel processeur allouer. Dans
un système monoprocesseur, cette question ne se pose évidemment pas et souvent alors, ordonnanceur et
répartiteur sont confondus.
Une fois élu par le répartiteur, le processus s'exécute. S'il quitte le processeur, sur préemption, il réintègre la
file des processus prêts ; au contraire, s'il quitte le processeur sur un blocage, il intègre la file des processus
bloqués. Dans les deux cas, un nouveau processus est élu (la tête de file des processus prêts). Plus
précisément, la file d'attente des processus bloqués est souvent organisée en files multiniveaux, chaque
niveau correspondant à une attente d'un événement/ ressource particulier auquel peut être éventuellement
associé une priorité. Dans le cas où des événements se produisent simultanément, cette priorité sert alors à
déterminer quel événement doit être traité en premier.
Définition : Ordonnanceur
L'ordonnanceur est un programme système dont le rôle est d'allouer le processeur à un processus prêt.
Ordonnancement
diffèrent en fonction
du type de systèmes
• Le but est de maximiser le débit du processeur ; c'est-à-dire le
nombre moyen de processus traités par unité de temps.
Systèmes de
traitements par lots • maximiser le taux d'occupation du processeur, le rapport entre
le temps où le processeur est actif et le temps total. peut
Systèmes varier entre 0% et 100 %
interactifs • minimiser le temps de réponse des processus, la durée
séparant l'instant de soumission du processus au système de
la fin d'exécution du processus.
Systèmes temps
réel • Le but principal est d'assurer le respect des contraintes de
temps liées aux processus, permet de savoir si le processus a
été préempté ou non
Ordonnancement
Systèmes de traitements par lots. Le but est de maximiser le débit du processeur ; c'est-à-dire le nombre
moyen de processus traités par unité de temps.
Systèmes interactifs.
Les buts principaux de l'ordonnancement sont premièrement de maximiser le taux d'occupation du
processeur, c'est-à-dire le rapport entre le temps où le processeur est actif et le temps total. En théorie,
ce taux peut varier entre 0% et 100 % ; dans la pratique, on peut observer un taux d'occupation variant
entre 40 % et 95 %.
Deuxièmement, on va chercher à minimiser le temps de réponse des processus, c'est-à-dire la durée
séparant l'instant de soumission du processus au système de la fin d'exécution du processus. Au mieux,
le temps de réponse peut être exactement égal au temps d'exécution du processus, lorsque le
processus a immédiatement été élu et s'est exécuté sans être préempté.
Systèmes temps réel. Le but principal est d'assurer le respect des contraintes de temps liées aux processus.
Ordonnancement
Politique d'ordonnancement "premier arrivé, premier servi" (FIFO). First Come First Serve (FCFS)
C'est une politique à l'ancienneté, sans préemption/réquisition ; l'unité centrale est allouée selon l'ordre de
soumission des processus. Dans cette politique, des processus de faible temps d'exécution peuvent être
pénalisés parce qu'un processus de longue durée les précède dans la file.
P1 P2 P3 Temps de Cycle
millisecondes
24 3 3 P3
Temps de Cycle P2
P1
Temps Moyen d’attente
(0 + 24 + 27) / 3
17 millisecondes 24 27 30
Ordonnancement
Maintenant, l'unité centrale est allouée au processus de plus petit temps d'exécution.
Elle a la propriété de minimiser le temps de réponse moyen pour l'ensemble des algorithmes
d'ordonnancement sans réquisition.
Elle impose également d'estimer la durée des processus ce qu'on ne connaît pas habituellement.
Il existe une version avec réquisition de cette politique appelée "temps restant le plus court d'abord" : dans
ce cas, le processus en exécution restitue le processeur lorsqu'un nouveau processus de temps d'exécution
inférieur à son temps d'exécution restant devient prêt.
Exercice
Tâche T1 T2 T3 T4 T5 T6 T7
Durée 7 4 6 1 2 4 1
Date
0 0 1 1 1 2 2
d'arrivée
Priorité
2 3 1 2 3 1 2
(n)
First Come First Serve (FCFS)
Short First (SJF)
On définit une tranche de temps appelée quantum qui peut varier de 10 ms à 100 ms. Chaque processus
présent dans la file des processus prêts acquiert le processeur à tour de rôle, et ce pour au maximum un
temps égal au quantum de temps. Si le processus a terminé son exécution avant la fin du quantum, il libère
le processeur et le processus suivant dans la file des processus prêts est élu. Si le processus n'a pas
terminé son exécution avant la fin du quantum, il perd le processeur et est réinséré en fin de file des
processus prêts. Cette politique du tourniquet est usuellement utilisée dans les systèmes en temps partagé.
Sa performance dépend largement de la taille du quantum. Un quantum trop grand augmente les temps de
réponse alors qu'un quantum trop petit multiplie les commutations de contexte jusqu'à les rendre non
négligeables.
Algorithme Tourniquet
Temps de Cycle
millisecondes
P3
P1 P2 P3 Quantum = 4
P2
20 7 3 P1
Temps de Cycle
4 8 11 15 18 22 26 30
Ordonnancement
Un niveau de priorité constant est affecté à chaque processus et à un instant donné, le processus élu est
toujours celui de plus forte priorité. Cet algorithme présente une version sans réquisition et une version avec
réquisition. Le défaut de cette politique est le risque de famine encouru par le processus de faible priorité.
Une solution à ce problème est de faire "vieillir" la priorité des processus en attente, c'est-à-dire d'augmenter
celle-ci en fonction du temps d'attente. La priorité des processus devient ainsi variable.
Algorithme Avec Priorités
P3 3 5 P3
P4 2 3
P2
Priorité
Prêt Priorité
Arrivée n-1 Prêt
Arrivée n-1
n-2
n-2
Election
Election
n-3
. n-3
. .
. .
.
0
0
Ordonnancement
Les politiques présentées jusqu'à présent utilisent une seule file d'attente des processus prêts. On choisit ici
de définir plusieurs files de processus prêts, chaque file correspondant à un niveau de priorité ; on peut alors
avoir n files de priorités différentes variant de 0 à n-1.
Dans une file donnée, tous les processus ont la même priorité et sont servis soit selon une politique à
l'ancienneté sans préemption, soit selon une politique de tourniquet. Le quantum peut être différent selon le
niveau de priorité de la file.
L' ordonnanceur sert d'abord tous les processus de la file de priorité n, puis ceux de priorité n-1 dès que la
file de niveau n est vide et ainsi de suite...
On peut définir deux variantes de l'algorithme, fonction de l'évolution de la priorité des processus :
les priorités des processus sont constantes tout au long de leur exécution. A ce moment-là, un
processus en fin de quantum est toujours réinséré dans la même file d'attente, celle correspondant à
son niveau de priorité.
les priorités des processus évoluent dynamiquement en fonction du temps de service dont a bénéficié le
processus. Ainsi un processus de priorité n, à la fin du quantum de la file n, si il n'a pas terminé son
exécution, n'est pas réinséré dans la file de priorité n, mais dans la file de priorité n-1. Et ainsi de suite...
On cherche ici à minimiser les risques de famine pour les processus de faible priorité en faisant petit à
petit baisser la priorité des processus de plus forte priorité.
Ordonnancement
ζi ti
T1 8 0
T2 5 2
T3 5 3
T4 2 4
Soit le tableau des tâches ci-dessous.
1. En utilisant l’algorithme Round Robin, calculer le temps de traitement
moyen dans les 2 cas suivants :
a) quantum = 1 u.t
b) quantum = 10 u.t
2. Déduire l’influence qu’a la valeur du quantum sur les performances
de l’algorithme.
ζi ti
T1 30 0
T2 5 1
T3 2 2
1) On désire exécuter ces tâches en utilisant différents algorithmes
d’ordonnancement. Pour cela, on vous demande de donner les
diagrammes de Gantt correspondants aux algorithmes suivants :
a) First In Fist Out (FIFO).
b) Short Job First (SJF).
c) Priorité avec un quantum égale à 2 secondes (q=2 u.t.).
d) Round-Robin avec un quantum égale à 3 secondes (q=3 u.t.).
2) Calculer pour chaque algorithme, le temps de traitement moyen.
3) Quel est l’algorithme optimal et pourquoi ?
ζi ti Priorit
é
T1 5 0 3
T2 4 0 1
T3 3 2 2
T4 6 12 3