Chapitre 3 :
Processus
Plan
Introduction
Modèle de processus
Création d’un processus
Terminaison d’un processus
Hiérarchie de processus
Etats du processus
Process Control Block (PCB)
Introduction
Ordinateur modernes :
Capacité de faire plusieurs choses en même temps
(simultanément) :
Exemple : Exécuter un programme utilisateur
Effectuer des lectures sur disques
Envoyer du texte vers l’imprimante
Processeur basculant entre les processus (programme en
exécution) : servir à quelques dizaines ou centaine de
millisecondes chacun (système multiprogrammé)
Processeur n’exécutant qu’un seul processus à un instant donné.
# Processeur intervenant pour plusieurs programme en l’espace
d’une seconde. (Pseudo Parallélisme).
Elaboration d’un modèle conceptuel de processus reposant sur
les processus séquentiel facilitant la gestion de ce parallélisme
Modèle de processus
Organisation des logiciels et du système d’exploitation en des
processus séquentiels (ou simplement processus)
Processus :
Programme en exécution, muni des valeurs :
Du compteur ordinal
Des registres
Et des variables
D
A C
B B
A B C D
C A
D
Un processeur peut être partagé entre plusieurs processus
Nécessité d’un Ordonnanceur pour déterminer à quel moment
arrêter un processus pour lancer un autre
Création d’un processus
Système multiprogrammé : besoin de méthodes pour créer et
arrêter des processus par les systèmes d’exploitation au cours de
leur activité.
Quatre évènement de création de processus :
Initialisation du système
Exécution d’un appel système de création de processus par un
processus en cours d’exécution (Exemple : fork())
Requête utilisateur sollicitant la création d’un nouveau processus
Initiation d’un travail batch
Amorçage du système :
Création de plusieurs processus :
De premier plan : interagissant avec l’utilisateur
En arrière plan : exemple : processus recevant le courant électronique
entrant ou processus recevant des requêtes page web (Démons)
Création d’un processus
Au-delà des processus crées lors de l’amorçage :
Création d’un processus par un autre :
Utile lorsqu’un processus peut être divisé en plusieurs processus qui
interagissent entre eux tout en étant indépendant.
Exemple : récupération de données des réseaux afin de les traiter
ultérieurement
création P0 création
P1 P2
Tampon
Création d’un processus par un usager
Systèmes interactifs : usager démarre un programme en saisissant une
commande.
Lancement d’un processus batch :
Dans tous les cas : Un processus est créé du fait qu’un processus
existant exécute un appel système de création de processus :
Terminaison d’un processus
Un processus créé n’est pas éternel
Arrêt pour différentes raisons :
Arrêt normal :
terminaison de la tâche convenablement (exemple ( compilation d’un
programme)
Invocation d’un appel système indiquer cet état au système
Arrêt suite à une erreur provoquée par le processus (bogue du
programme)
Exemple : référence mémoire inexistante ou division par zéro
Arrêt suite à une erreur fatale :
Exemple : compilation d’un programme inexistant (cc essai.c)
Processus arrêté par un autre processus :
Appel système d’un processus pour arrêter un autre processus (sous
unix : Kill)
Hiérarchie des processus
Création d’un processus enfant par un processus parent
maintenance d’un lien entre ces deux processus :
p0
p1 p2 p3
p4 p5 p6
Sous UNIX
Init présent dans l’image d’amorçage
Execution d’Init lecture d’un fichier indiquant combien de terminaux sont
présents
Génération d’un processus login par terminal Init
Réussite d’une session
Lancement du shell
Login 1 login2 login3
Création d’autres processus
Compilation Impression
États des processus
• Au fur et a mesure qu’un processus exécute, il change d’état
nouveau: le processus vient d ’être créé
exécutant-running: le processus est en train d ’être exécuté par l ’UCT
attente-waiting (ou bloqué): le processus est en train d ’attendre un
événement ([Link]. la fin d ’une opération d ’E/S)
prêt-ready: le processus est en attente d’être exécuté par l ’UCT
terminated: fin d ’exécution
• Le passage de l’état prêt à l’état exécution et vis versa se font à
l’aide de l’ordonnateur
nouveau: le processus vient d ’être créé
• L’Ordonnanceur a pour rôle :
D’équilibrer les demandes concurrentes
Équité entre les processus
Réalisé par des algorithmes spécifiques (étudié plus loin)
Ordonnanceur
• Faisant partie du niveau inférieur du système d’exploitation
• Gestion :
Des interruptions
Détail du démarrage et d’arrêt des processus
• Le niveau supérieur :
• Composé de l’ensemble des processus au cours de l’activité du système
Processus
0 1 n
Ordonnanceur
Diagramme de transition d’états d’un processus
États Nouveau, Terminé
Nouveau
Le SE a créé le processus
a construit un identificateur pour le processus
a construit les tableaux pour gérer le processus
mais ne s’est pas encore engagé à exécuter le processus (pas encore admis)
pas encore alloué des ressources
La file des nouveaux travaux est souvent appelée spoule travaux (job spooler)
Terminé:
Le processus n ’est plus exécutable, mais ses données sont encore requises par le
SE (comptabilité, etc.)
Transitions entre processus
Prêt Exécution
Lorsque l ’ordonnanceur UCT choisit un processus pour
exécution
Exécution Prêt
Résultat d’une interruption causée par un événement
indépendant du processus
Il faut traiter cette interruption, donc le processus courant
perd l’UCT
Cas important: le processus à épuisé son intervalle de
temps (minuterie)
Transitions entre processus
Exécution Attente
Lorsqu’un processus fait un appel de système (interruption
causée par le processus lui-même)
initie une E/S: doit attendre le résultat
a besoin de la réponse d’un autre processus
Attente Prêt
lorsque l'événement attendu se produit
Sauvegarde d’informations processus
• En multiprogrammation, un processus exécute sur l ’UCT de façon
intermittente
• Chaque fois qu’un processus reprend l ’UCT (transition prêt
exécution) il doit la reprendre dans la même situation où il l’a
laissée (même contenu de registres UCT, etc.)
• Donc au moment où un processus sort de l’état exécution il est
nécessaire de sauvegarder ses informations essentielles, qu’il faudra
récupérer quand il retourne à cet état
• Maintenance d’une table de processus contenant une entré par
processus :
• Bloc de contrôle de processus
PCB = Process Control Block
Représente la situation actuelle d ’un processus, pour le reprendre plus
tard :
toute l’information relative au processus devant être enregistrée
lorsque le processus bascule de l’état en cours d’exécution vers
les états : prêt ou bloqué (en attente) :
Registres UCT
Process Control Block (PCB)
pointeur: les PCBs sont rangés dans des listes enchaînées (à
voir)
état de processus: ready, running, waiting…
compteur programme: le processus doit reprendre à l ’instruction
suivante
autres registres UCT
bornes de mémoire
fichiers qu’il a ouvert
etc.
Commutation de processeur
Aussi appélé commutation de contexte ou context switching
• Quand l’UCT passe de l’exécution d ’un processus 0 à
l ’exécution d`un proc 1, il faut :
mettre à jour le PCB de processus 0
reprendre le PCB du processus 1, qui avait été
sauvegardé avant de remettre les registres d ’UCT tels
que le compteur d ’instructions etc. dans la même
situation qui est décrite dans le PCB du processus 1
Commutation de processeur (context switching)
Le PCB n ’est pas la seule information à sauvegarder
• Il faut aussi sauvegarder l ’état des données du programme
• Ceci se fait normalement en gardant l ’image du
programme en mémoire primaire ou secondaire (RAM ou
disque)
• Le PCB pointera à cette image
La pile d’un processus aussi à sauvegarder
• Quand un processus fait appel à une procédure, à une méthode, etc.,
il est nécessaire de mettre dans une pile l’adresse à laquelle le
processus doit retourner après avoir terminé cette procédure,
méthode, etc.
• Aussi on met dans cette pile les variables locales de la procédure
qu’on quitte, les paramètres, etc., pour les retrouver au retour
• Chaque élément de cette pile est appelé stack frame ou cadre de pile
• Donc il y a normalement une pile d’adresses de retour après
interruption et une pile d’adresses de retour après appel de
procédure
Ces deux piles fonctionnent de façon semblable, mais sont
indépendantes
• Les informations relatives à ces piles (base, pointeur…) doivent
aussi être sauvegardées au moment de la commutation de contexte
La Pile d’un processus
P
A
B
Appel A Appel B
Données B
Données A
Données P
PILE
Pointeurs de pile à sauvegarder:
base et borne
pointeur de borne
cadre 4
cadre 3
cadre 2
pointeur de base cadre 1
La pile fait normal. partie de l’image du programme, mais les pointeurs
sont normal. des registres d’UCT donc il sont sauvegardés dans le PCB