Chapitre 2: Gestion des processus par un système d’exploitation
Comme nous l’avons vu en première, le système d’exploitation(Linux, Windows, MacOs…) est un programme particulier situé entre le matériel et les applications qui a pour de rôle de coordonner l’ensemble des tâches qui sont exécutées par l’ordinateur. Cette année, nous allons voir comment le système d’exploitation charge les programmes dans la mémoire de masse et lance leur exécution en leur créant des processus afin de pouvoir les gérer lors de leur exécution.
1 Différence entre programme et processus
- Programme
-
Un programme est statique: c’est un fichier contenant une suite d’instructions qui lorsqu’elles sont exécutées modifient l’état du processeur et de la mémoire afin de réaliser une tâche donnée.
Un même programme peut-être exécuté plusieurs fois sur une même machine, il faut alors allouer à chacune de ces exécutions des ressources de mémoire et de processeur distinctes au cours de ces exécutions. C’est le système d’exploitation qui gère l’allocation de ces ressources.
- Processus
-
Un processus est dynamique: c’est une instance d’exécution d’un programme sur une machine de son lancement jusqu’à sa fin.
Les systèmes d’exploitation permettent à l’utilisateur de visualiser et gérer les processus grâce à un gestionnaire de processus.
2 Les états d’un processus
Un processus n’a pas seulement besoin d’accéder au processeur, mais il a souvent besoin d’accéder à des ressources autres comme:
- La mémoire vive: RAM,
- La mémoire de masse: disques durs, clés USB, mémoire flash…
- La lecture ou l’écriture d’un fichier…
- Les périphériques d’entrée et de sortie: clavier, souris, écran, imprimante…
Ces ressources externes étant beaucoup moins rapides que le processeur, elles bloquent les processus lors de leur exécution.
Ainsi, lors de la vie d’un processus, celui-ci peut passer par trois états:
- PRÊT: le processus est lancé et attend l’accès au processeur.
- ÉLU: le processus a obtenu l’accès au processeur: il peut s’exécuter.
- BLOQUÉ: le processus est en cours d’exécution, mais attend une ressource en mémoire par exemple, il quitte le processeur pour libérer les ressources.
3 Ordonnancement
À un instant donné, il y a souvent davantage de processus à exécuter que de processeurs.
Lors de leur lacement les processus sont placés dans une file d’attente.
L’ordonnanceur désigne le composant du noyau du système d’exploitation choisissant l’ordre d’exécution des processus sur les processeurs d’un ordinateur.
Il existe divers algorithmes d’ordonnancement:
- La méthode du tourniquet (Round Robin): l’ordonnanceur traite la file d’attente comme une file circulaire et alloue successivement un temps processeur à chacun des processus de la file.
- FIFO: First In First Out (voir le cours sur les files)
- SJF Shortest job first (SJF, ou SJN -Shortest Job Next-).
- …
4 Interblocage
- interblocage
-
Un interblocage (ou étreinte fatale, deadlock en anglais pour impasse) est un phénomène qui peut se produire en programmation concurrente lorsque des processus s’attendent mutuellement.
Un exemple concret d’interblocage peut se produire lorsque deux processus essayent d’acquérir deux ressources dans un ordre différent.
- P1 acquiert R1.
- P2 acquiert R2.
- P1 attend pour acquérir R2 (qui est détenu par P2).
- P2 attend pour acquérir R1 (qui est détenu par P1).
Dans cette situation, les deux processus sont définitivement bloqués.
Deux processus en concurrence pour deux ressources dans un ordre opposé.
By Abacoo - Own work, CC BY-SA 4.0, Link
- A Un seul processus se déroule.
- B Le processus ultérieur doit attendre.
- C Un blocage se produit lorsque le premier processus verrouille la première ressource en même temps que le second processus verrouille la seconde ressource.
- D Le blocage peut être résolu en annulant et en redémarrant le premier processus.
Il existe plusieurs façons de gérer les interblocages:
- les ignorer ce qui était fait initialement par UNIX qui supposait que la fréquence des interblocages était faible et que la perte de données encourue à chaque fois est tolérable.
- les détecter: Un algorithme est utilisé pour suivre l’allocation des ressources et les états des processus, il annule et redémarre un ou plusieurs processus afin de supprimer le blocage détecté
- les éviter: des algorithmes sont utilisés pour supprimer une des quatre conditions nécessaires à la possibilité de l’interblocage(Conditions de Coffman)