Vous êtes sur la page 1sur 17

20/12/2020

Chapitre IV: Gestion des processus

➢ Dans un système multitâche, la ressource la plus importante d’une machine est


le processeur. Cette ressource est allouée à un processus sélectionné parmi un
ensemble des processus éligibles. Par conséquent, il convient à bien gérer ce
dernier afin de le rendre plus productif. En effet, un système d’exploitation
dispose d’un module qui s’occupe de l’allocation du processeur en l’occurrence
le Dispatcheur.

➢ Ce module est exécuté chaque fois qu’un processus se termine ou se bloque


dans le but de réquisitionner le processeur pour un autre processus. En plus de
ce Dispatcheur, un système d’exploitation dispose d’un autre module permettant
ainsi la mise en ordre des processus qui demandent le processeur.

108

Chapitre IV: Gestion des processus


Notion de processus

➢ Un processus est une entité dynamique qui matérialise un programme en cours


d'exécution avec ses propres ressources physiques (mémoire, processeur,
entrée/sortie, …) et logiques (données, variables, …). Contrairement à un programme
(texte exécutable) qui a une existence statique.
➢ Le système d’exploitation manipule deux types de processus :

▪ Processus système : processus lancé par le système (init processus père des tous
les processus du système)
▪ Processus utilisateur : processus lancée par l’utilisateur (commande utilisateur)
Dès sa création, un processus reçoit les paramètres suivants :
PID : identificateur du processus (numéro unique)
PPID : identificateur du processus père
UID : identificateur de l’utilisateur qui a lancé le processus
GID : identificateur du groupe de l’utilisateur qui a lancé le processus

109

1
20/12/2020

Chapitre IV: Gestion des processus


Notion de processus
Il existe des appels système permettant de créer un
processus, charger son contexte et lancer son exécution
(fork, exec sous Unix).
▪ Un processus peut (père) créer d’autres processus
(fils) qui hérite les descripteurs de son père. Ce
dernier à son tour crée d’autres processus. Un
processus a un seul père mais peut avoir plusieurs fils
▪ Les processus peuvent se terminer ou ils peuvent être
éliminés par d’autres processus (la primitive kill). A la
destruction d’un processus, on libère toutes les
ressources qu’il avait.
▪ Dans certains cas, la destruction d’un processus
entraîne l’élimination de ces descendants ; cette
opération n’affecte pas les processus qui peuvent
continuer indépendamment de leur père (processus
orphelins).
110

Chapitre IV: Gestion des processus

Etats d’un processus


➢ Dans les systèmes mono programmés, un programme ne quitte pas l’unité centrale
avant de terminer son exécution. Pendant cette période, il dispose de toutes les
ressources de la machine. Par contre, ce n’est pas le cas dans les systèmes
multiprogrammés et temps-partagé, un processus peut se trouver dans l’un des états
suivants :
1‐ Elu : (en cours d’exécution) : si le processus est en cours d'exécution
2- Bloqué : attente qu’un événement se produit ou bien ressource pour pouvoir
continuer
3- Prêt : si le processus dispose de toutes les ressources nécessaires à son exécution à
l'exception du processeur.

Diagramme de transition
d’un processus

111

2
20/12/2020

Chapitre IV: Gestion des processus

Etats d’un processus

Sémantique des Transitions

(1) : Allocation du processeur au processus sélectionné


(2) : Réquisition du processeur après expiration de la tranche du temps par exemple
(3) : Blocage du processus élu dans l’attente d’un événement (E/S ou autres)
(4) : Réveil du processus bloqué après disponibilité de l’événement bloquant (Fin E/S,
etc…)

Notons que nous avons omis les états Création et Terminaison de processus puisqu’ils
n’interviennent pas dans cette étude.

112

Chapitre IV: Gestion des processus

Etats d’un processus

Cycle d’exécution d’un processus

➢ L’exécution d’un processus peut être vue comme une séquence de phases. Chaque
phase comprend deux cycles : un cycle d’exécution (ou calcul) réalisé par le
processeur et un cycle d’entrée sortie assuré par le canal. La dernière phase de tout
processus doit comprendre obligatoirement un seul cycle dans lequel sera exécuté la
requête informant le système d’exploitation sur la terminaison du processus. Cet
appel permet au système de restituer les ressources utilisées par le processus qui
vient de terminer.

113

3
20/12/2020

Chapitre IV: Gestion des processus

Bloc de contrôle d’un processus (PCB)

➢ Lorsqu’un processus est temporairement suspendu, il faut qu’il puisse retrouver l’état
où il se trouvait au moment de suspension, il faut que toutes les informations dont il a
besoin soient sauvegardées pendant sa mise en attente.
➢ Notons que le contexte d’un processus dépend du système, mais dans tous les cas
c’est un bloc de contrôle de processus (BCP) qui contient toute information
nécessaire à la reprise d’un processus interrompu : Etat du processus (prêt,
suspendu, ..), quantité de mémoire, temps CPU (utilisé, restant), priorité, etc

➢ Les BCP sont rangés dans une table (table des processus) qui se trouve dans
l’espace mémoire du système

114

Chapitre IV: Gestion des processus

Bloc de contrôle d’un processus (PCB)

115

4
20/12/2020

Chapitre IV: Gestion des processus

Ordonnancement des processus

➢ Chaque fois, que le processeur devient inactif, le système d’exploitation doit


sélectionner un processus de la file d’attente des processus prêts, et lui passe le
contrôle.

➢ D’une manière plus concrète, cette tâche est prise en charge par deux routines
système en l’occurrence le Dispatcheur et le Scheduleur (Ordonnanceur).

116

Chapitre IV: Gestion des processus

Ordonnancement des processus

Le Dispatcheur

➢ Il s’occupe de l’allocation du processeur à un processus sélectionné par


l’Ordonnanceur du processeur. Une fois allouer, le processeur doit réaliser les
tâches suivantes :
▪ Commutation de contexte : sauvegarder le contexte du processus qui doit
relâcher le processeur et charger le contexte de celui qui aura le prochain cycle
processeur
▪ Commutation du mode d’exécution : basculer du mode Maître (mode
d’exécution du dispatcheur) en mode utilisateur (mode d’exécution du
processeur utilisateur)
▪ Branchement : se brancher au bon emplacement dans le processus utilisateur
pour le faire démarrer.

117

5
20/12/2020

Chapitre IV: Gestion des processus

Ordonnancement des processus

L’Ordonnanceur

➢ Certains systèmes d’exploitation utilisent une technique d’ordonnancement à deux


niveaux qui intègre deux types d’Ordonnanceurs :
▪ Ordonnanceur du processeur : c’est un Ordonnanceur court terme opère sur un
ensemble du processus présents en mémoire. Il s’occupe de la sélection du
processus qui aura le prochain cycle processeur, à partir de la file d’attente des
processus prêts.
▪ Ordonnanceur de travail : ou Ordonnanceur long terme, utilisé en cas d’insuffisance
de mémoire, son rôle est de sélectionner le sous ensemble de processus stockés sur
un disque et qui vont être chargés en mémoire. En suite, il retire périodiquement de la
mémoire les processus qui sont restés assez longtemps et les remplace par des
processus qui sont sur le disque depuis trop de temps.

118

Chapitre IV: Gestion des processus

Ordonnancement des processus

L’Ordonnanceur

➢ Nous distinguons plusieurs algorithmes d’ordonnancement, les plus répandus sont :

▪ Ordonnancement Premier Arrivé Premier Servi


▪ Ordonnancement du plus court d’abord
▪ Ordonnancement circulaire : Tourniquet
▪ Ordonnancement circulaire à plusieurs niveaux
▪ Ordonnancement avec priorité

119

6
20/12/2020

Chapitre IV: Gestion des processus

Ordonnancement des processus

Algorithmes d’ordonnancement

➢ L'ordonnancement est la partie du système d'exploitation qui détermine dans quel


ordre les processus prêts à s'exécuter (présents dans la file des prêts) seront élus .

Ses objectifs sont :

▪ Assurer le plein usage du CPU (agir en sorte qu’il soit le moins souvent possible
inactifs);
▪ Réduire le temps d'attente des utilisateurs.
▪ Assurer l'équité entre les utilisateurs.

120

Chapitre IV: Gestion des processus

Ordonnancement des processus

Algorithmes d’ordonnancement
➢ Un algorithme d’ordonnancement permet d’optimiser une des grandeurs temporelles
suivantes :
▪ Le temps de réponse moyen décrit la moyenne des dates de fin d’exécution :

▪ Le temps d’attente moyen est la moyenne des délais d’attente pour commencer
une exécution :

➢ Les algorithmes d’ordonnancement se distinguent les uns des autres du fait que
certains autorisent la réquisition de l’unité centrale alors que d’autres l’interdisent. La
réquisition est la possibilité de retirer à n’importe quel instant le processeur à un
processus même si ce dernier est en cours d’exécution.
121

7
20/12/2020

Chapitre IV: Gestion des processus

Ordonnancement des processus

Algorithmes d’ordonnancement
Ordonnancement FCFS (first come first Served)

➢ Dans cet algorithme ; connu sous le nom FIFO (First In, First Out) ; les processus
sont rangés dans la file d’attente des processus prêts selon leur ordre d’arriver. Les
règles régissant cet ordonnancement sont :
▪ Quand un processus est prêt à s’exécuter, il est mis en queue de la file
d’attente des processus prêts.
▪ Quand le processeur devient libre, il est alloué au processus se trouvant en
tête de file d’attente des processus prêts.
▪ Le processus élu relâche le processeur s’il se termine ou s’il demande une
entrée sortie

122

Chapitre IV: Gestion des processus

Ordonnancement des processus

Algorithmes d’ordonnancement
Ordonnancement FCFS (first come first Served)

➢ Caractéristiques de l’Ordonnanceur
▪ Ordonnanceur sans réquisition
▪ Ordonnanceur non adapté à un système temps partagé car dans un
système pareil, chaque utilisateur obtienne le processeur à des intervalles
réguliers.
➢ Exemple d’algorithme FCFS :

123

8
20/12/2020

Chapitre IV: Gestion des processus

Ordonnancement des processus

Algorithmes d’ordonnancement
Ordonnancement SJF (Shortest Job First) (Plus Courts temps d'Exécution en
Premier)
➢ SJF choisit de façon prioritaire les processus ayant le plus court temps d’exécution
sans réellement tenir compte de leur date d’arrivée.
➢ Dans cet algorithme les différents processus sont rangés dans la file d'attente des
processus prêts selon un ordre croissant de leur temps d'exécution (cycle de calcul).
Les règles régissant cet ordonnancement sont :

▪ Quand un processus est prêt à s’exécuter, il est inséré dans la file d’attente des
processus prêts à sa position approprie.

124

Chapitre IV: Gestion des processus

Ordonnancement des processus

Algorithmes d’ordonnancement
Ordonnancement SJF (Shortest Job First) (Plus Courts temps d'Exécution en
Premier)
▪ Quand le processeur devient libre, il est assigné au processus se trouvant en
tête de la file d’attente des processus prêts (ce processus possède le plus petit
cycle processeur.). Si deux processus ont la même longueur de cycle, on
applique dans ce cas l’algorithme FCFS.
▪ Si le système ne met pas en œuvre la réquisition, le processus élu relâche le
processeur s’il se termine ou s’il demande une entrée sortie. Dans le cas
contraire, le processus élu perd le processeur également. Quand un processus
ayant un cycle d’exécution inférieur au temps processeur restant du processus
élu, vient d’entrer dans la file d’attente des prêts. Le processus élu dans ce cas
sera mis dans la file d’attente des éligibles, et le processeur est alloué au
processus qui vient d’entrer.
125

9
20/12/2020

Chapitre IV: Gestion des processus

Ordonnancement des processus

Algorithmes d’ordonnancement
Ordonnancement SJF (Shortest Job First) (Plus Courts temps d'Exécution en
Premier)

Caractéristiques de l’Ordonnanceur

➢ Cet Ordonnanceur peut être avec ou sans réquisition

➢ Implémentation difficile, car il n’existe aucune manière pour connaître le cycle


suivant du processeur.

126

Chapitre IV: Gestion des processus

Ordonnancement des processus

Algorithmes d’ordonnancement
Ordonnancement RR (round robin)
➢ Dans cet algorithme les processus sont rangés dans une file d'attente des éligibles, le
processeur est alloué successivement aux différents processus pour une tranche de
temps fixe Q appelé Quantum.
➢ Cet Ordonnancement est régit par les règles suivantes :
▪ Un processus qui rentre dans l’état éligible est mis en queue de la file
d'attente des prêts.

127

10
20/12/2020

Chapitre IV: Gestion des processus

Ordonnancement des processus

Algorithmes d’ordonnancement
Ordonnancement RR (round robin)

▪ Si un processus élu se termine ou se bloque avant de consommer son


quantum de temps, le processeur est immédiatement alloué au prochain
processus se trouvant en tête de la file d'attente des prêts.

▪ Si le processus élu continue de s'exécuter au bout de son quantum, dans


ce cas le processus sera interrompu et mis en queue de la file d'attente des
prêts et le processeur est réquisitionné pour être réalloué au prochain
processus en tête de cette même file d’attente.

128

Chapitre IV: Gestion des processus

Ordonnancement des processus

Algorithmes d’ordonnancement
Ordonnancement RR (round robin)
Caractéristiques de l’Ordonnanceur

➢ Avec réquisition
➢ Adapté aux systèmes temps partagé.
➢ La stratégie du tourniquet garantit que tous processus est servis au bout d’un temps
fini. Son avantage est d’éviter la famine. On dit qu'un processus est en famine lorsqu'il
est prêt à être exécuté et se voit refuser l'accès à une ressource (ici le processeur)
pendant un temps indéterminé
➢ L’efficacité de cet ordonnanceur dépend principalement de la valeur du quantum Q:
o Le choix d'un Q assez petit augmente le nombre de commutation.
o Le choix d'un Q assez grand augmente le temps de réponse du système

129

11
20/12/2020

Chapitre IV: Gestion des processus

Ordonnancement des processus

Algorithmes d’ordonnancement

Ordonnancement SRTF (Shortest Remaining Time first) (plus court temps


d’exécution restant PCTER)

➢ SRTF choisit le processus dont le temps d’exécution restant est le plus court. C’est
une variante de l’algorithme SJF

➢ Cet algorithme est non implantable parce qu’il suppose, entre autres, connu le
temps d’exécution réel de chaque processus pour pouvoir calculer le temps restant

130

Chapitre IV: Gestion des processus

Ordonnancement des processus

Algorithmes d’ordonnancement
Ordonnancement basé sur les priorités

➢ Dans cet algorithme, les processus sont rangés dans la file d’attente des processus
prêt par ordre décroissant de priorité. L’ordonnancement dans ce cas est régit par les
règles suivantes :
▪ Quand un processus est admis par le système, il est inséré dans la file
d’attente des processus prêts à sa position approprie (dépend de la valeur
de priorité).
▪ Quand le processeur devient libre, il est alloué au processus se trouvant en
tête de file d’attente des processus prêts (le plus prioritaire).
▪ Un processus élu relâche le processeur s’il se termine ou se bloque (E/S ou
autre).

131

12
20/12/2020

Chapitre IV: Gestion des processus

Ordonnancement des processus

Algorithmes d’ordonnancement
Ordonnancement basé sur les priorités
Caractéristiques de l’Ordonnanceur

➢ Les principales caractéristiques sont :


▪ Peut être avec ou sans réquisition
▪ Un processus de priorité basse risque de ne pas être servi (problème de famine)
d’où la nécessité d’ajuster périodiquement les priorités des processus prêts.
L’ajustement consiste à incrémenter graduellement la priorité des processus de
la file d’attente des éligibles (par exemple à chaque 15 mn on incrémente d’une
unité la priorité des processus prêts).

132

Chapitre IV: Gestion des processus


Etude de cas: Gestion des processus UNIX

Les caractéristiques d'un processus

➢ On a vu auparavant, qu'on pouvait à un moment donné avoir plusieurs processus en


cours, à un temps donné. Le système doit être capable de les identifier. Pour cela il
attribue à chacun d'entre eux, un numéro appelé PID (Process Identification).
➢ Un processus peut lui même créer un autre processus, il devient donc un processus
parent ou père, et le nouveau processus, un processus enfant. Ce dernier est
identifié par son PID, et le processus père par son numéro de processus appelé
PPID (Parent Process Identification).
➢ Tous les processus sont ainsi identifiés par leur PID, mais aussi par le PPID du
processus qui la créé, car tous les processus ont été créés par un autre processus.
Oui mais dans tout ça, c’est qui a créé le premier processus ? Le seul qui ne suit pas
cette règle est le premier processus lancé sur le système le processus init qui n'a
pas de père et qui a pour PID 1.
133

13
20/12/2020

Chapitre IV: Gestion des processus


Etude de cas: Gestion des processus UNIX

Visualiser les processus


➢ On peut visualiser les processus qui tournent sur une machine avec la commande : ps
(options), les options les plus intéressantes sous HP-UX sont -e (affichage de tous les
processus) et -f (affichage détaillée). La commande ps -ef donne un truc du genre :
UID PID PPID C STIME TTY TIME COMMAND
• UID nom de l'utilisateur qui a lancé le process
• PID correspond au numéro du process
• PPID correspond au numéro du process parent
• C au facteur de priorité : plus la valeur est grande, plus
le processus est prioritaire
• STIME correspond à l'heure de lancement du processus
• TTY correspond au nom du terminal
• TIME correspond à la durée de traitement du processus
• COMMAND correspond au nom du processus.
134

Chapitre IV: Gestion des processus


Etude de cas: Gestion des processus UNIX

Visualiser les processus


➢ Pour l'exemple donné, à partir d'un shell vous avez lancé la commande ps -ef, le
premier processus à pour PID 3521, le deuxième 3524. Vous noterez que le PPID du
process « ps -ef » est 3521 qui correspond au shell, par conséquent le shell est le
process parent, de la commande qu'on vient de taper.
➢ Certains processus sont permanents, c'est à dire qu'ils sont lancés au démarrage du
système et arrêtés uniquement à l'arrêt du système. On appelle ces process des
daemons, le terme démon est une francisation, daemon sont des abréviations.
➢ Pour voir les process d'un seul utilisateur, vous pouvez taper :
$ ps -u islaib
➢ D'un UNIX à l'autre la sortie peut changer. Sous LINUX par exemple ps -Al permet
une sortie assez riche, en faisant un man ps, vous aurez l'éventail de tous les
paramètres possibles.
135

14
20/12/2020

Chapitre IV: Gestion des processus


Etude de cas: Gestion des processus UNIX

Commandes de gestion des processus

Changer la priorité d'un processus


➢ Les processus tournent avec un certain degré de priorité, un processus plus
prioritaire aura tendance à s'accaparer (monopoliser) plus souvent les ressources du
système pour arriver le plus vite possible au terme de son exécution. C'est le rôle du
système d'exploitation de gérer ces priorités.
➢ Vous disposez de la commande nice pour modifier la priorité d'un processus. La
syntaxe est la suivante :
$ nice -valeur commande
➢ Plus le nombre est grand, plus la priorité est faible. Par exemple une valeur de 0
donne, la priorité la plus haute 20 donne la priorité la plus faible.
La fourchette de valeur dépend de l'UNIX qu'on utilise.
Par exemple : $ nice -5 ps -ef
136

Chapitre IV: Gestion des processus


Etude de cas: Gestion des processus UNIX

Commandes de gestion des processus


Arrêter un processus
➢ Vous disposez de la commande kill pour arrêter un processus, on doit aussi tuer un
processus. Si vous voulez arrêter un processus, vous devez connaître son PID
(commande ps), puis vous tapez :
$ kill -9 PID

Lancer un processus en arrière plan


➢ Pour lancer une commande quelconque, vous en saisissez le nom après le prompt
du shell, tant que la commande n'est pas terminée, vous n'avez plus la main au
niveau du shell, vous ne disposez plus du prompt. Si la commande prend un certain
temps, votre shell ne vous donnera pas la main tant que la commande n'est pas
terminée, vous êtes obligé de lancer un autre shell, pour taper une autre commande.

137

15
20/12/2020

Chapitre IV: Gestion des processus


Etude de cas: Gestion des processus UNIX

Commandes de gestion des processus


➢ Vous disposez d'une technique simple qui permet de lancer une commande à partir
d'un shell, et de reprendre aussitôt la main. Il vous suffit de rajouter un & à la fin de
commande. Celle-ci se lancera en " tâche de fond ", et vous reviendrez directement
au prompt du shell.

➢ En tapant une commande en tâche de fond, vous aurez à l'affichage :

$ ps ef &
6677 (PID du processus ramené en arrière plan)

138

Chapitre IV: Gestion des processus


Etude de cas: Gestion des processus UNIX

Commandes de gestion des processus


➢ En lançant une commande à partir du shell sans le & à la fin, et si celle-ci prend du
temps à vous rendre la main, vous pouvez faire en sorte qu'elle bascule en tâche de
fond, pour que vous repreniez la main.
$ netscape → cette commande lance un processus qui prend du temps et ne
rend pas la main. On peut lancer ce processus en arrière plan avec
$ nestcape &

➢ Pour visualiser l’état d’exécution d’une commande lancée en arrière plan, on utilise la
commande
$ jobs → cette commande donne le [ numéro de tâche] (job), son [PID,son état
d’exécution (stopped, running, …) et le nom de la commande

139

16
20/12/2020

Chapitre IV: Gestion des processus


Etude de cas: Gestion des processus UNIX

Commandes de gestion des processus

Ramener un processus en arrière/avant plan

$ fg [N°tâche] → fg (foreground) permet de reprendre l’exécution de la


tâche en premier plan

$ bg [N°tâche] → bg (background) permet de ramener l’exécution de la


tâche en arrière plan

140

17

Vous aimerez peut-être aussi