AccueilđŸ‡«đŸ‡·Chercher

Processus (informatique)

Un processus (en anglais, process), en informatique, est un programme en cours d'exĂ©cution par un ordinateur. De façon plus prĂ©cise, il peut ĂȘtre dĂ©fini comme :

Diagramme d'Ă©tat d'un processus simple.

L'exĂ©cution d'un processus dure un certain temps, avec 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 » utilisateur sont des ensembles de processus.

Dans le CIM Schema dĂ©fini par le Common Information Model, la classe de base CIM_Process est attribuĂ©e aux processus informatiques[1]. Selon le systĂšme d'exploitation, elle peut ĂȘtre dĂ©rivĂ©e en Win32_Process[2], en IBMzOS_Process[3] ou en CIM_UnixProcess[4].

RĂŽle du systĂšme d'exploitation

Un ordinateur équipé d'un systÚme d'exploitation multitùches est capable d'exécuter plusieurs processus de façon quasi simultanée. Par analogie avec les télécommunications, on nomme multiplexage ce procédé. S'il y a plusieurs processeurs, l'exécution des processus est distribuée de façon équitable sur ces processeurs.

Ressources et communication

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).

Exécution

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 et également associer les processus aux utilisateurs, qui sont les récipiendaires d'un ensemble de droits d'accÚs : un processus a les droits de l'utilisateur qui l'a initialisé.

Un processus peut s'arrĂȘter de plusieurs maniĂšres :

  1. ArrĂȘt normal (volontaire) ;
  2. ArrĂȘt pour erreur (volontaire) ;
  3. ArrĂȘt pour erreur fatale (involontaire) ;
  4. Le processus est arrĂȘtĂ© par un autre processus (involontaire).

Quand un arrĂȘt de processus n'est pas un arrĂȘt normal, il peut ĂȘtre important d'en ĂȘtre prĂ©venu. Cela peut se faire par des systĂšmes de supervision (aussi appelĂ© monitoring).

La plupart des systÚmes offrent la distinction entre processus, qui sont a priori complÚtement isolés les uns des autres, et « processus légers » (threads en anglais), qui composent les processus (chaque processus possÚde au moins un thread) et qui partagent 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.

États d'un processus

Les états successifs d'un processus sont généralement représentées par un diagramme d'état.

Observabilité

L'utilisation de diagrammes d'Ă©tat est dĂ» au fait qu'un processus n'est cohĂ©rent, de l'extĂ©rieur, qu'Ă  certains moments de son exĂ©cution, notamment en dehors des sections critiques. En pratique, on observe l'Ă©tat d'un processus en communiquant avec lui ; il fournit ainsi une rĂ©ponse au moment oĂč il est cohĂ©rent.

Prenons un exemple ; soit la suite d'instructions en pseudo-code appartenant Ă  un programme quelconque :

procédure empiler (v : valeur)
    compteur := compteur+1
    vect[compteur] := v

Le programme utilisant cette fonction n'est observable qu'avant ou aprÚs un appel à la fonction empiler() car, entre les instructions d'incrémentation et d'affectation, la cellule numéro compteur du tableau vect[] n'est pas affectée et contient... une valeur aléatoire (une mémoire est rarement vide).

États que peut prendre un processus sous la forme d'un diagramme Ă©tats-transitions oĂč les flĂšches sont les transitions autorisĂ©es.
Diagramme Ă©tat-transition plus complexe suivi par les processus des systĂšmes d'exploitation modernes

États standards

Ces Ă©tats existent dans la plupart des systĂšmes d'exploitation :

  • Initialisation (en anglais, created ou new) :
C'est le premier Ă©tat d'un processus. Il y attend que l'ordonnanceur le place dans l'Ă©tat prĂȘt, ce qui peut prendre plus ou moins longtemps. GĂ©nĂ©ralement, dans les ordinateurs de bureau, cela est automatique ; dans un systĂšme d'exploitation temps rĂ©el, cette admission peut-ĂȘtre reportĂ©e. En effet, dans de tels systĂšmes, trop de processus en attente peuvent amener Ă  une saturation, notamment des bus, entraĂźnant l'incapacitĂ© du systĂšme Ă  tenir les dĂ©lais.
  • PrĂȘt ou En attente (en anglais, ready ou runnable) :
Dans cet état, le processus a été chargé en mémoire centrale et attend son exécution sur le processeur, c'est-à-dire une commutation de contexte provoquée par l'ordonnanceur.
Il peut y avoir beaucoup de processus en attente car, sur un ordinateur équipé d'un seul processeur, les processus doivent passer un par un. Les processus disponibles sont rangés dans une file ; les autres, ceux qui attendent quelque chose (données provenant du disque dur, une connexion internet, etc.) ne sont pas pris en compte. Cette file d'attente (ready queue) est gérée par l'ordonnanceur.
  • Élu ou ExĂ©cution (en anglais, running) :
Le processus est en cours d'exécution par le processeur.
  • Endormi ou BloquĂ© (en anglais, blocked ou waiting) :
Le processus a été interrompu ou attend un événement (la fin d'une opération d'entrée/sortie, un signal, ...).
  • TerminĂ© (en anglais, terminated) :
Le processus est terminĂ©, c'est-Ă -dire soit le rĂ©sultat est connu, soit le programme a Ă©tĂ© forcĂ© de s'arrĂȘter.

États particuliers

Selon les systĂšmes d'exploitation, ces diffĂ©rents Ă©tats peuvent aussi ĂȘtre possibles :

Si un processus terminĂ© ne peut pas ĂȘtre dĂ©chargĂ© de la mĂ©moire, par exemple parce que son processus parent n'a pas rĂ©cupĂ©rĂ© son signal de terminaison, il passe dans un Ă©tat appelĂ© zombie.
Lorsqu'un processus est transfĂ©rĂ© de la mĂ©moire centrale dans la mĂ©moire virtuelle, il est dit « swappĂ© ». Un processus swappĂ© peut ĂȘtre dans un Ă©tat endormi ou prĂȘt.
L'ordonnanceur a dĂ©cidĂ© de suspendre l'activitĂ© d'un processus. Par exemple, un processus qui consomme trop de temps CPU finira par ĂȘtre prĂ©emptĂ©. Un ordonnanceur prĂ©emptif utilise aussi l'indice de prioritĂ© (nice) pour dĂ©cider le processus qui sera prĂ©emptĂ©.
L'exécution a lieu dans un espace limité : seules certaines instructions sont disponibles.
Par opposition au mode utilisateur, l'exécution du processus n'est pas limitée. Par exemple, un processus dans cet état peut aller lire dans la mémoire d'un autre.

Voir aussi

Articles connexes

Liens externes

Références

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.