Cours n°2: Gestion des processus
SYSTÈMES D’EXPLOITATION
AVANCÉES
La naissance d’un processus…
myprogram.c myprogram.o
int j; Fichier
char* s = “hello\n”; assembleur data
object
int p() {
j = write(1, s, 6); data
data
data
return(j);
}
librairies
….. linker
p: et autres
store this objets
store that
push
jsr _write
compilateur ret
etc.
data programme
myprogram.s
myprogram
2 (fichier executable)
…A son exécution
CPU 0 common runtime
x programme
code library
données Espace d’adressage
R0 (virtuel ou physique)
Rn
tas
PC yx
SP
registers
y
pile
max
“mémoire”
3
Définissons…
• Un programme est composé d'une suite d'instructions qui
agissent sur un ensemble de données : objet statique
• Processus : lorsque l'on déclenche l'exécution d'un
programme, il devient un objet dynamique géré par l'OS.
• Un processus est composé d'un programme et de l'ensemble
des ressources reliées à l'exécution du programme. Ces
ressources incluent de la mémoire, des I/Os, des fichiers
ouverts par le programme, du temps de CPU et autres.
Processus = unité d’exécution (unité de partage du temps
processeur et de la mémoire) ≠ Programme
Nadia Bel Hadj Aissa 4
Système d’exploitation multitâches
• Un système d’exploitation est dit multitâches s’il permet
d’exécuter, apparemment simultanément, plusieurs
programmes.
• Ce fonctionnement est réalisé en alternant rapidement
l’exécution de différents processus c’est-à-dire en effectuant
un multiplexage temporel du processeur (chaque processus
s’exécute pendant une fraction de seconde)
• L’exécution des processus est entremêlée
• Par conséquent, il ne s’agit pas réellement d’un traitement
simultané sauf si la machine a plusieurs processeurs
Nadia Bel Hadj Aissa 5
Processus et Multiprogrammation
• Soient 3 processus A, B et C à exécuter
• A,B et C sont chargés simultanément en
mémoire (avec le Dispatcher)
• Le comportement d’un processus donné =
séquence d’instructions qu’il est en train
d’exécuter (Trace)
• Le Dispatcher est un programme qui
commute le processeur d’un processus à un
autre
Trace du point de vue des processus
• Chaque processus s’exécute jusuqu’à la fin de sa
tâche
Trace du point de vue du processeur
Timeout
I/O
Feuille de route
• Comment les processus sont-ils représentés et
contrôlés par l’OS?
• Quels sont les états caractérisant le comportement
des processus?
• Quels sont les structures de données utilisées pour
gérer les processus?
• Comment l’OS utilise-t-il ces structures de données
pour contrôler l’exécution des processus?
Nadia Bel Hadj Aissa 9
Structure de l’espace mémoire d’un processus
• Espace mémoire dont la structure est
définie par l’OS (Ensemble des adresses
mémoire que le processus peut adresser) Pile
• Plusieurs zones =
– Segment de code (text section)
• Copie du segment de code du fichier exécutable
– Compteur de programme
• Indique la prochaine instruction à exécuter
– Contenu des registres du processeur
Tas
– Pile d’exécution
• Paramètres des fonctions, variables locales,
adresses de retour, pointeur de pile, etc.
Segment de données
– Segment de données (data section)
• variables globales (.bss and .data).
– Un Tas Segment de code
• Pour la mémoire allouée dynamiquement
Nadia Bel Hadj Aissa 10
Bloc de contrôle de processus (PCB)
• Identifiants numériques
– Identifiant du processus
– Identifiant du processus qui a créé ce
processus (processus père)
– Identifiant de l’utilisateur
• Informations sur l’état des processus
• Compteur de programme (@ de la prochaine
instruction à exécuter)
• Contenu des registres du CPU
• Information d’ordonnancement
– Priorité,…
• Information de gestion de la mémoire
– Valeur du registre de base et limite,…
• Information comptable
– Taux d’utilisation du processeur,…
• Etats des dispositifs d’E/S
– E/S alloués, liste des fichiers ouverts,…
Nadia Bel Hadj Aissa 11
Bloc de contrôle de processus
PCB kernel user CPU
state
text PSW
memory
IR
files
data
accounting PC
priority heap SP
user general
CPU registers purpose
storage stack registers
Nadia Bel Hadj Aissa 12
Feuille de route
• Comment les processus sont-ils représentés et
contrôlés par l’OS?
• Quels sont les états caractérisant le comportement
des processus?
• Quels sont les structures de données utilisées pour
gérer les processus?
• Comment l’OS utilise-t-il ces structures de données
pour contrôler l’exécution des processus?
Nadia Bel Hadj Aissa 13
Multiprogrammation
Mode batch
Le processus actif rend la main :
• lorsqu'il se termine
• lorsqu'il se bloque en attente d'une E/S
terminaison
élection Elu
création E/S
Prêt
fin d'E/S Bloqué
Nadia Bel Hadj Aissa 14
Temps partagé
Temps partagé
Le processus actif rend la main :
• lorsqu'il se termine
• lorsqu'il se bloque en attente d'une E/S
• lorsqu'il a épuisé son quantum de temps
terminaison
élection Elu
création fin E/S
Prêt quantum
fin d'E/S Bloqué
Nadia Bel Hadj Aissa 15
Etats d’un processus
Ordonnancement
Nouveau Terminé
Prêt En cours
Admission, Fin du
Planification de Quantum
processus
haut-niveau terminé
Requête E/S
Attente d'E/S
finie
Bloqué
E/S
Nadia Bel Hadj Aissa 16
Création de processus: Pourquoi?
• Initialisation du système
• Exécution d’un appel système de création de
processus par un processus en cours d’exécution
• Requête utilisateur sollicitant la création d’un nouveau
processus
• Lancement d’un travail en traitement par lot
Un nouveau processus est créé du fait qu’un
processus existant exécute un appel système de
création de processus
Nadia Bel Hadj Aissa 17
Création de processus: Comment?
• Affecter un identifiant unique (pid)
• Allouer de l’espace mémoire pour l’image du
processus (code, données, pile…)
• Initialiser le bloc de contrôle de processus (valeurs
par défaut, état = New, pas de dispositifs d’E/S ou
de fichiers ouverts…)
• Mettre en œuvre les liens appropriés (ajouter le
nouveau PCB à la liste chainée utilisée pour les
queues d’ordonnancement)
Nadia Bel Hadj Aissa 18
La fin d’un processus
• Arrêt normal (volontaire)
• Arrêt pour erreur (volontaire)
• Arrêt pour erreur fatale (involontaire)
• Le processus est arrêté par un autre processus
(involontaire)
Nadia Bel Hadj Aissa 19
Commutation du CPU : Comment?
• Sauvegarder le contexte du CPU (PC et autres
registres)
• Mettre à jour le PCB du processus en cours d’exécution
avec le nouvel état et autre infos
• Changer le PCB dans la file d’attente appropriée (prêts,
bloqués, …)
• Choisir un autre processus à exécuter
• Mettre à jour le PCB du processus sélectionné (état: en
cours d’exécution)
• Restaurer l’état du CPU à partir du PCB du processus
sélectionné
Nadia Bel Hadj Aissa 20
Commutation entre processus
Nadia Bel Hadj Aissa 21
Feuille de route
• Comment les processus sont-ils représentés et
contrôlés par l’OS?
• Quels sont les états caractérisant le comportement
des processus?
• Quels sont les structures de données utilisées pour
gérer les processus?
• Comment l’OS utilise-t-il ces structures de données
pour contrôler l’exécution des processus?
Nadia Bel Hadj Aissa 22
Les entités responsables de l’ordonnancement
Preemption
Scheduler
(Ordonnanceur)
CPU1
File des
Sortie du Processeurs
Election de
Dispatcher Process prêts
système CPU2 (répartiteur)
Election de
processus
PCB PCB PCB PCB
CPU4
File des
bloques
Blocage PCB PCB Réveil
Nadia Bel Hadj Aissa 23