Processus (informatique)
Un article de Wikipédia, l'encyclopédie libre.
Un processus (en anglais, process), en informatique, est défini par :
- un ensemble d'instructions à exécuter (un programme) ;
- un espace mémoire pour les données de travail ;
- éventuellement, d'autres ressources, comme des descripteurs de fichiers, des ports réseau, etc.
Un ordinateur équipé d'un système d'exploitation à temps partagé est capable d'exécuter plusieurs processus de façon « quasi-simultanée ». S'il y a plusieurs processeurs, l'exécution des processus est distribuée de façon équitable sur ces processeurs.
Le sens de processus doit être pris comme quelque chose qui prend du temps, donc qui a un début et (parfois) une fin. Un processus peut-être démarré par un utilisateur par l'intermédiaire d'un périphérique ou bien par un autre processus : les applications des utilisateurs sont des (ensembles de) processus.
Le système d'exploitation est chargé d'allouer les ressources (mémoires, temps processeur, entrées/sorties) nécessaires aux processus et d'assurer que le fonctionnement d'un processus n'interfère pas avec celui des autres (isolation). Il peut aussi fournir une API pour permettre la communication inter-processus (IPC).
Outre le multiplexage des ressources matérielles, le système peut contrôler l'accès des processus aux ressources selon une matrice de droits (permissions d'accès) et également associer les processus aux utilisateurs, qui sont les récipendiaires d'un ensemble de droits d'accès : un processus a les droits de l'utilisateur qui l'a démarré.
La plupart des systèmes offrent la distinction entre processus lourd (tels que nous les avons décrits), qui sont a priori complètement isolés les uns des autres, et processus légers (Threads en anglais), qui ont un espace mémoire (et d'autres ressources) en commun.
Dans le cas de processus comportant plusieurs processus légers (ou suivant l'expression souvent utilisée multi-thread) il existe un état du processeur (un contexte d'exécution) distinct pour chaque processus léger.