Processus léger
Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.
Un processus avec deux processus léger (thread).
Un processus avec deux processus léger (thread).

Un processus léger (en anglais, thread), également appelé fil d'exécution (autres appellations connues: unité de traitement, unité d'exécution, fil d'instruction (Une instruction est une forme d'information communiquée qui est à la fois une commande et une explication pour décrire l'action, le comportement, la méthode ou la tâche qui devra commencer, se terminer, être conduit, ou...), processus allégé), est similaire à un processus car tous deux représentent l'exécution d'un ensemble (En théorie des ensembles, un ensemble désigne intuitivement une collection d’objets (les éléments de l'ensemble), « une multitude qui peut être...) d'instructions du langage machine (Le langage machine est la suite de bits qui est interprétée par le processeur de l'ordinateur lors de l'exécution d'un programme. C'est le langage natif du processeur. Il est aussi appelé code machine. Chaque processeur a son propre...) d'un processeur (Le processeur, ou CPU (de l'anglais Central Processing Unit, « Unité centrale de traitement »), est le composant de l'ordinateur qui exécute les programmes informatiques. Avec la mémoire notamment,...). Du point (Graphie) de vue (La vue est le sens qui permet d'observer et d'analyser l'environnement par la réception et l'interprétation des rayonnements lumineux.) de l'utilisateur, ces exécutions semblent se dérouler en parallèle. Toutefois, là où chaque processus possède sa propre mémoire virtuelle (Le mécanisme de mémoire virtuelle a été mis au point dans les années 1960. Il est basé sur l'utilisation d'une mémoire de masse (type disque dur ou anciennement un tambour), pour le but,...), les processus légers appartenant au même processus père se partagent sa mémoire (D'une manière générale, la mémoire est le stockage de l'information. C'est aussi le souvenir d'une information.) virtuelle. Par contre, tous les processus légers possèdent leur propre pile système.

Utilisation

Les processus légers sont typiquement utilisés avec l'interface (Une interface est une zone, réelle ou virtuelle qui sépare deux éléments. L’interface désigne ainsi ce que chaque élément a besoin de connaître de...) graphique (GUI) d'un programme. En effet, les interactions de l'utilisateur avec le processus, par l'intermédiaire des périphériques d'entrée, sont gérées par un processus léger (Un processus léger (en anglais, thread), également appelé fil d'exécution (autres appellations connues: unité de traitement, unité d'exécution, fil d'instruction, processus allégé), est...), tandis que les calculs lourds (en terme de temps (Le temps est un concept développé par l'être humain pour appréhender le changement dans le monde.) de calcul) sont gérés par un ou plusieurs autres processus légers. Cette technique de conception de logiciel (La conception de logiciel met en œuvre tout un ensemble d'activités qui à partir d'une demande d'informatisation d'un processus (demande qui peut aller de la simple question orale jusqu'au cahier des charges complet) permettent la...) est avantageuse dans ce cas, car l'utilisateur peut continuer d'interagir avec le programme même lorsque celui-ci est en train (Un train est un véhicule guidé circulant sur des rails. Un train est composé de plusieurs voitures (pour transporter des personnes) et/ou...) d'exécuter une tâche. Une application pratique se retrouve dans les traitements de texte où la correction orthographique est exécutée tout (Le tout compris comme ensemble de ce qui existe est souvent interprété comme le monde ou l'univers.) en permettant à l'utilisateur de continuer à entrer son texte.

L'utilisation des processus légers permet donc de rendre l'utilisation d'une application plus fluide (Un fluide est un milieu matériel parfaitement déformable. On regroupe sous cette appellation les gaz qui sont l'exemple des fluides compressibles, et les liquides, qui sont des fluides peu...), car il n'y a plus de blocage durant les phases de traitements intenses.

Processus légers et multitâche (Un système d'exploitation est multitâche (en anglais : multi-task) s’il permet d’exécuter, de façon apparemment simultanée, plusieurs...)

Les processus légers se distinguent du multitâche plus classique par le fait que deux processus sont typiquement indépendants et peuvent interagir uniquement à travers une API fournie par le système telle que IPC. D'un autre côté les processus légers partagent une information sur l'état du processus, des zones de mémoires ainsi que d'autres ressources. Sur certains systèmes la commutation de contexte (Une commutation de contexte (context switch) en informatique consiste à sauvegarder l'état d'un processus ou d'un processus léger et à restaurer...) (context switch) entre deux processus légers est moins coûteuse que la commutation de contexte (Le contexte d'un évènement inclut les circonstances et conditions qui l'entourent; le contexte d'un mot, d'une phrase ou d'un texte inclut les mots qui...) entre deux processus. On peut y voir un avantage de la programmation (La programmation dans le domaine informatique est l'ensemble des activités qui permettent l'écriture des programmes informatiques. C'est une étape importante de la conception de logiciel (voire de matériel, cf. VHDL).) utilisant des threads multiples ou bien une faiblesse des dits systèmes d'exploitation concernant la commutation de contexte entre deux processus.

Avantages et inconvénients

Dans certains cas, les programmes utilisant des processus légers sont plus rapides que des programmes architecturés plus classiquement, en particulier sur les machines comportant plusieurs processeurs. Hormis le problème du coût de la commutation de contexte, qui dépend en grande partie du système d'exploitation utilisé, le principal surcoût dû à l'utilisation de processus multiples provient de la communication (La communication concerne aussi bien l'homme (communication intra-psychique, interpersonnelle, groupale...) que l'animal (communication intra- ou inter- espèces) ou la machine (télécommunications,...) entre processus séparés. En effet, le partage de certaines ressources entre processus légers permet une communication plus efficace entre les différents threads d'un processus. Là où deux processus séparés doivent utiliser un mécanisme fourni (Les Foúrnoi Korséon (Grec: Φούρνοι Κορσέων) appelés plus communément...) par le système pour communiquer, les processus légers partagent une partie de l'état du processus.

La programmation utilisant des processus légers est toutefois plus difficile, et l'accès à certaines ressources partagées doit être restreint par le programme lui-même, pour éviter que l'état d'un processus ne devienne temporairement incohérent, tandis qu'un autre processus léger va avoir besoin (Les besoins se situent au niveau de l'interaction entre l'individu et l'environnement. Il est souvent fait un classement des besoins humains en trois grandes catégories :...) de consulter cette portion de l'état du processus. Il est donc obligatoire de mettre en place des mécanismes de synchronisation (à l'aide de sémaphores par exemple). La complexité (La complexité est une notion utilisée en philosophie, épistémologie (par exemple par Anthony Wilden ou Edgar Morin), en physique, en biologie (par exemple...) des programmes utilisant des processus légers est aussi nettement plus grande que celle des programmes déférant le travail à faire à plusieurs processus plus simples. Cette complexité accrue, lorsqu'elle est mal gérée lors de la phase (Le mot phase peut avoir plusieurs significations, il employé dans plusieurs domaines et principalement en physique :) de conception ou de mise en œuvre d'un programme, peut conduire à de multiples problèmes.

Support des processus légers

Les systèmes d'exploitation mettent en œuvre généralement les processus légers soit par le multitâche coopératif, soit par le multitâche préemptif (Le traitement multitâche préemptif est une forme de traitement multitâche. Son but est de partager les temps de calcul des diverses tâches (programmes) à exécuter par le processeur d'un ordinateur.), bien que la première méthode soit de plus en plus souvent considérée comme obsolète.

Certains langages de programmation, tel que Java et C#.NET intègrent un support pour les processus légers dans le langage, tandis que la plupart des autres langages ne le permettent que par des extensions du langage considéré ou par l'intermédiaire de bibliothèques. En programmation orientée objet (La programmation par objet (du terme anglo-saxon Object-Oriented Programming ou OOP), est un paradigme de programmation, il consiste en la définition et l'assemblage de briques...) on parle de classe réentrante lorsque des instances distinctes de cette classe peuvent exister simultanément dans différents processus légers.

Confusion possible

Il ne faut pas confondre la technologie (Le mot technologie possède deux acceptions de fait :) Hyperthreading incluse dans certains processeurs Intel avec les processus légers. Cette technologie permet en effet aussi bien l'exécution simultanée de processus distincts que de processus légers. Toute machine comportant des processeurs multiples (SMP) ou des processeurs intégrant l'HyperThreading permet l'exécution plus rapide de programmes utilisant des processus légers aussi bien que des processus multiples.

Page générée en 0.153 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique