Gestion des processus et des threads
La gestion des processus et des threads est la manière dont le système d'exploitation crée, planifie et démantèle les unités d'exécution — les processus ayant leurs propres espaces d'adressage et les threads qui en partagent un — et bascule le processeur entre eux.
Definition
La gestion des processus et des threads comprend les mécanismes du système d'exploitation qui représentent les programmes en cours d'exécution comme des processus et des threads, maintiennent leur état d'exécution, les créent et les terminent, et basculent le processeur entre eux tout en préservant et en restaurant leurs contextes.
Scope
Ce sujet couvre l'abstraction de processus et son cycle de vie, le bloc de contrôle de processus, la création et la terminaison des processus, les threads et les modèles de multithreading, la commutation de contexte et la communication inter-processus. Il exclut la politique de sélection de la prochaine tâche prête à s'exécuter (ordonnancement du CPU) et la coordination des données partagées (concurrence, traitée généralement dans le cadre des systèmes d'exploitation), se concentrant sur les structures qui représentent et gèrent l'exécution.
Core questions
- Quel état le système d'exploitation doit-il conserver pour chaque processus et thread ?
- Comment les processus sont-ils créés, et en quoi les threads diffèrent-ils des processus ?
- Que se passe-t-il lors d'une commutation de contexte, et quel en est le coût ?
- Comment les processus communiquent-ils et se coordonnent-ils à travers les espaces d'adressage ?
Key concepts
- processus et bloc de contrôle de processus
- états et cycle de vie des processus
- thread et multithreading
- threads de niveau utilisateur vs threads de niveau noyau
- commutation de contexte
- fork et exec
- communication inter-processus
- isolation des processus
Key theories
- Abstraction de processus
- Le système d'exploitation représente chaque programme en cours d'exécution comme un processus avec son propre espace d'adressage et un contexte d'exécution stocké dans un bloc de contrôle de processus, permettant l'isolation, l'ordonnancement et le partage contrôlé du processeur.
Mechanisms
Chaque processus est décrit par un bloc de contrôle de processus (process control block) contenant ses registres, ses mappages mémoire, ses fichiers ouverts et son état d'ordonnancement. Le système crée des processus (par exemple via fork et exec), les fait transiter par différents états (nouveau, prêt, en cours d'exécution, en attente, terminé), et bascule entre eux en sauvegardant un contexte et en en restaurant un autre. Les threads partagent l'espace d'adressage de leur processus, ce qui rend la commutation moins coûteuse mais nécessite une synchronisation ; la communication inter-processus utilise des tubes (pipes), des messages ou de la mémoire partagée.
Clinical relevance
La gestion des processus et des threads est à la base du multitâche sur tout système moderne. L'isolation des processus est une pierre angulaire de la sécurité et de la stabilité, les threads permettent des applications réactives et parallèles, et le coût de la commutation de contexte et de la communication inter-processus façonne la conception des serveurs, des environnements d'exécution et des logiciels concurrents.
History
Le concept de processus a mûri avec les systèmes de multiprogrammation et de temps partagé dans les années 1960, et UNIX a établi le modèle fork/exec et l'abstraction de processus largement utilisés aujourd'hui. Les threads ont été ajoutés pour exploiter les multiprocesseurs et améliorer la réactivité, avec des standards tels que les threads POSIX formalisant le threading visible par l'utilisateur.
Debates
- Threads de niveau utilisateur versus threads de niveau noyau
- Les threads de niveau utilisateur sont peu coûteux à gérer mais ne peuvent pas être planifiés indépendamment sur plusieurs cœurs et bloquent l'ensemble du processus lors d'un appel bloquant, tandis que les threads de niveau noyau s'intègrent à l'ordonnanceur avec une surcharge plus élevée ; les modèles hybrides tentent de combiner les avantages.
Key figures
- Ken Thompson
- Dennis Ritchie
- Per Brinch Hansen
- Abraham Silberschatz
- Andrew S. Tanenbaum
Related topics
Seminal works
- silberschatz2018
- tanenbaum2014os
Frequently asked questions
- Quelles informations le système d'exploitation conserve-t-il pour chaque processus ?
- Il conserve un bloc de contrôle de processus (process control block) enregistrant les registres sauvegardés du processus et le compteur ordinal, les mappages mémoire, l'état et la priorité d'ordonnancement, les fichiers ouverts, et les informations de comptabilité et d'identité — tout ce qui est nécessaire pour suspendre le processus et le reprendre plus tard exactement là où il s'était arrêté.
- Pourquoi la commutation entre les threads est-elle moins coûteuse qu'entre les processus ?
- Les threads au sein d'un processus partagent le même espace d'adressage et les mêmes ressources, donc la commutation entre eux ne nécessite pas de modifier les mappages mémoire. La commutation entre les processus modifie en outre les espaces d'adressage et peut vider les caches de traduction, ce qui la rend plus coûteuse.