Gestion des processus
1. Relation entre le processus et le processeur
Le processeur est la composante physique qui exécute les processus.
Le processus est une composante logique. Elle consiste à une instance du programme en mémoire.
Lorsqu'un programme est exécuté plusieurs fois, il génère habituellement plusieurs processus indépendants.
Le programme est la définition statique du programme. Il contient tout le code. Le processus est la partie vivante. Le processus détermine les instructions à exécuter selon les interactions avec l'utilisateur, un autre système et/ou le système d'exploitation.
Le processeur exécute les instructions du processus.
1.1. Processeur
- Selon le Larousse
- Organe destiné, dans un ordinateur, à interpréter et exécuter des instructions.
- Selon le Robert
- Partie d'un ordinateur qui interprète et exécute les instructions. Le processeur d'un micro-ordinateur.
En résumé
- C’est le cerveau de l’ordinateur.
- CPU est l’acronyme en anglais pour Central Processing Unit.
- UTC est l’acronyme en français pour Unité Centrale de Traitement.
Références :
-
Larousse, Définitions : processeur - Dictionnaire de français Larousse, https://www.larousse.fr/dictionnaires/francais/processeur/64060, 2021-08-24
-
Le Robert Dico en ligne, processeur - Définitions, synonymes, conjugaison, exemples | Dico en ligne Le Robert, https://dictionnaire.lerobert.com/definition/processeur, 2021-08-24
1.2. Processus
- Selon le Larousse
- Enchaînement ordonné de faits ou de phénomènes, répondant à un certain schéma et aboutissant à quelque chose.
- Suite continue d'opérations, d'actions constituant la manière de faire, de fabriquer quelque chose.
- Selon le Robert
- Ensemble de phénomènes, conçu comme actif et organisé dans le temps.
- Suite ordonnée d'opérations aboutissant à un résultat. Processus de fabrication.
En résumé, un processus est une instance d’un programme qui est en cours d’exécution. Un programme contient plusieurs instructions que le processeur va traiter.
Références :
-
Larousse, Définitions : processus - Dictionnaire de français Larousse, https://www.larousse.fr/dictionnaires/francais/processus/64066, 2021-08-24
-
Le Robert Dico en ligne, processus - Définitions, synonymes, conjugaison, exemples | Dico en ligne Le Robert, https://dictionnaire.lerobert.com/definition/processus, 2021-08-24
2. Bloc de contrôle de processus - PCB
Le bloc de contrôle de processus ou process control block (PCB) est la structure de données qui enregistre l'information des processus. Cette structure est intégrée au système d'exploitation.
Sans PCB, le système d'exploitation ne serait pas en mesure de gérer plusieurs processus en même temps.
Le PCB contient toute l'information des processus en cours ou en attente d'exécution.
Voici des éléments que le PCB peut contenir pour un processus.
- L'état du processus
- L'indice du processus - le positionnement par rapport aux autres processus
- Le compteur ordinal - le pointeur vers la prochaine instruction
- Le contenu des registres
- Le contenu de la mémoire du processus
- Les entrées et sorties utilisées
3. Les états du processus
Le processus est une composante vivante de l'ordinateur. Il y a un cycle de vie et passe par plusieurs états.
Le système d'exploitation enregistre l'état du processus dans le PCB.
Voici la liste des états :
-
Initialisation ou created
L'initialisation du processus est l'étape de préparation.
Le processus parent demande l'exécution du processus enfant.
Le processus est chargé en mémoire et s'enregistre dans le PCB.
Le compteur ordinal du processus se place à la première instruction.
-
Prêt ou ready
Le processus est initialisé et le processeur peut exécuter la prochaine instruction.
-
Exécution ou running
Le processeur exécute les instructions de ce processus.
-
Bloqué ou blocked
Le processus est interrompu ou il attend un événement. Il dépend d'un élément extérieur pour poursuivre.
-
Terminé ou terminated
Le processus a terminé avec un résultat connu.
Le processus parent reçoit le résultat.
Voici un graphique qui représente le processus du cycle de vie des états du processeur.
4. Type de fin de vie
Lorsque le processus est terminé, il peut terminer son cycle de vie selon 4 possibilités.
-
Arrêt normal
Le processus s'est exécuté normalement et retourne une valeur.
La mémoire du processus est libérée.
Il est effacé du PCB lorsque le processus parent reçoit le résultat du processus.
-
Arrêt pour erreur
Le processus se termine proprement comme pour un arrêt normal.
La valeur de retour est une erreur connue.
-
Arrêt pour erreur fatale
L'arrêt du processus n'est pas prévu. C'est généralement provoqué par un bug dans le programme.
Le processus est détruit.
-
Arrêt externe par un autre processus
Le processus est terminé par un appel du système (Gestionnaire de tâches) ou par un autre processus qui a les privilèges nécessaires (Antivirus).
Le processus n'avait pas atteint l'état terminé et il était en cours d'exécution, ou en attente.
Le processus est détruit.
5. Ordonnancement
La gestion des processus est le concept central de tous les systèmes d’exploitation. Le système d'exploitation est en mesure d'exécuter plusieurs processus en même temps. Par contre, le processeur peut en exécuter seulement 1 à la fois par coeur.
L’ordonnanceur est un composant du noyau du système d’exploitation. En anglais, on l’ordonnanceur s’appelle scheduler. C'est le mécanisme qui permet de déterminer quel processus peut être exécuté et de déterminer le temps alloué au processeur.
Il s'occupe de l'alternance des processus pour simuler le parallélisme. Le changement rapide d’un processus à un autre provoque l’illusion de parallélisme. Cette technique s'appelle le pseudoparallélisme.
La préemption signifie que le système d’exploitation interrompt l’exécution d’un processus en cours d’exécution pour exécuter un autre processus pour faire le pseudoparallélisme.
Son fonctionnement :
-
Le système d'exploitation interrompt le processeur.
-
Le système d'exploitation copie le contexte du processeur dans le PCB.
-
À partir du PCB, le système d'exploitation charge le contexte du prochain processus dans le processeur.
-
Le système d'exploitation termine l’interruption du processeur et permet l’exécution du nouveau processus.
L'ordonnanceur a également besoin d'avoir accès au processeur pour fonctionner. Le temps processeur utilisé par l’ordonnanceur pour alterner entre les processus ne sert à avancer aucun processus. C'est donc du temps perdu pour effectuer directement les instructions d'un processus.
6.1. Algorithmes
Il existe plusieurs algorithmes pour gérer l'alternance entre les différents processeurs. Chaque système d'exploitation a son propre algorithme.
-
FIFO (first in, first out) ou premier arrivé, premier sorti
-
Round-robin ou méthode du tourniquet
-
Multilevel queue ou file à multiniveau
-
Cooperative multitasking ou multitâche coopérative
-
Completely Fair Scheduler
Celui utilisé par Linux
-
Multilevel feedback queue
Celui utilisé par Windows.
6.1. FIFO
L'algorithme FIFO n'est plus réellement utilisé de nos jours. Le principe est que le premier processus à demander l'accès sera le premier exécuté. Il ne sera exécuté au complet dans aucune forme d'alternance. Il monopolise donc le processeur. Lorsque le processus a terminé, le système d'exploitation exécute complètement le suivant dans la liste.
Les anciens ordinateurs qui traitaient les données en lots utilisaient l'algorithme FIFO.
6.2. Round-Robin
L'algorithme round-robin consiste à exécuter chaque processus par bloc de temps prédéfini (X).
Il n'y a pas de priorisation, le premier processus sera exécuté pendant le temps prédéfini (X). Lorsque le temps prédéfini (X) est terminé, l'ordonnanceur met le processus en attente et il passe au prochain processus dans sa liste. Si aucun processus n'est en attente, le processeur poursuit avec celui en cours.
Le système d'exploitation qui utilise cet algorithme utilise la préemption pour indiquer au processeur le changement de processus.
6.3. Algorithmes modernes
Les algorithmes modernes sont très complexes. Les règles qui les définissent sont différentes selon le système d'exploitation, mais généralement, ils appliquent les principes ci-dessous. Les ordonnanceurs modernes utilisent un mélange d'algorithmes de base.
-
Niveau de priorisation
Ce n'est pas tous les processus qui sont égaux. Il y en a qui sont jugés plus prioritaires que d'autres par le système d'exploitation. Les processus prioritaires seront exécutés en premier.
La priorité peut être déterminée par l'importance du processus ou par sa durée estimée d'exécution.
Il peut être intéressant de favoriser l'exécution de processus mineur, mais qui demande très peu de temps. L'utilisateur aura l'impression que l'ordinateur est plus rapide, car il a fait plusieurs petits travaux au lieu qu'un seul gros travail.
-
Temps d'exécution
Le temps peut être variable aussi. Le premier tour d'exécution d'un processus peut être plus court, afin d'optimiser l'avancement de plusieurs processus en même temps. Lorsqu'un processus est rendu à plusieurs exécutions, l'ordonnanceur peut décider de lui donner plus de temps pour lui donner la chance d'avancer plus longtemps dans ses instructions.
-
Catégorisation des processus
Le système d'exploitation peut classer les processus similaires entre eux afin d'optimiser le partage des ressources.
6.4. Exemple
Voici un exemple de l'exécution de 3 processus. Les 3 processus ont été initialisés au même moment.
Dans le cas d'un FIFO, chacun des processus est exécuté complètement à tour de rôle.
Dans le cas du round-robin, le processus à 2 secondes d'exécution. Le #1 est exécuté pendant 2 secondes et il n'a pas terminé. L'ordonnanceur passe au #2, il est exécuté pendant 2 secondes et il n'a pas terminé. L'ordonnanceur passe au #3, il est exécuté pendant 2 secondes et il est terminé. L'ordonnanceur passe au #1, il est exécuté pendant 2 secondes et il est terminé. L'ordonnanceur passe au #2, il est exécuté pendant 4 secondes, car aucun autre processus n’est en attente.
Voici un autre exemple pour un Round-Robin que les processus ne sont pas initialisés au même moment.
Le #1 a le temps d'être exécuté au complet, car le #2 arrive seulement dans le PCB à 5 secondes. Par contre, après 2 secondes, l'ordonnanceur voit un 3e processus et l'exécute. Le #3 est terminé, le #2 s'exécute complètement.
7. La gestion dans le système d'exploitation
7.1. Windows - Gestionnaire de tâches
Dans Windows, c'est le gestionnaire de tâches qui gèrent le processus. Le moyen le plus rapide d'y accéder est par le raccourci CTRL+Maj+Echap.
Il faut activer le mode Plus de détails pour avoir de l'information intéressante pour l'informaticien. L'option se retrouve en bas à gauche de la fenêtre.
Le gestionnaire de tâches permet de voir l'utilisation des ressources par les processus en temps réel.
Il permet de voir tous les processus actifs dans l’ordinateur. Une charte de couleur permet de visualiser les processus plus en demande.
Il est possible de visualiser le pourcentage d’utilisation des ressources.
La colonne PID indique l’identifiant du processus.
Il est possible d'interrompre un processus par cet outil. Sélectionnez le processus dans la liste et appuyez sur le bouton Fin de tâche. Cette action introduit un type de fin de vie Arrêt externe.
7.2. Windows - Invite de commandes
La commande tasklist
permet de voir la liste des processus.
La commande taskkill /PID
permet de terminer un processus par son PID. C'est l'équivalent du Fin de tâche du gestionnaire de tâches.
7.3. Ubuntu - Invite de commandes
Sous Ubuntu, la notion de PID est plus utilisée. Lorsqu'un processus empêche de faire une tâche, son PID est souvent mentionné. Il est plus facile de trouver le processus qui bloque.
Il existe plusieurs commandes pour gérer les processus.
Commande | Description |
---|---|
top | Permet de voir l’utilisation des ressources par les processus. |
ps -f | Permet de voir l’information du processus en cours d’exécution et de ses enfants. |
ps -ef | Permet de voir l’information de tous les processus en cours d’exécution dans le système. |
ps -fh | Permet de voir l’information du processus en cours d’exécution et de ses enfants. Ils sont affichés en ordre hiérarchique. |
ps -efh | Permet de voir l’information de tous les processus en cours d’exécution dans le système. Ils sont affichés en ordre hiérarchique. |
ps -ef| grep "text" | Permet de faire une recherche avec le texte entre le guillemet. Les paramètres -ef peuvent être remplacés. |
kill -9 pid | Permet de terminer un processus. Il faut remplacer le pid par le numéro du processus à terminer. |
gnome-system-monitor | Permet d’avoir une représentation graphique des processus à la Windows. Fonctionne uniquement avec le bureau Gnome. |
8. Lectures et références
-
Wikipedia, Processus_informatique, https://fr.wikipedia.org/wiki/Processus_(informatique), 2022-08-24
-
Wikipedia, Ordonnancement dans les systèmes d'exploitation, https://fr.wikipedia.org/wiki/Ordonnancement_dans_les_syst%C3%A8mes_d%27exploitation, 2022-08-24