Multi-thread

Multi-thread

Processus léger

Page d'aide sur l'homonymie Pour les articles homonymes, voir Processus, Léger, Thread et Fil.
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, processus allégé), est similaire à un processus car tous deux représentent l'exécution d'un ensemble d'instructions du langage machine d'un processeur. Du point de vue 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, les processus légers d'un même processus se partagent sa mémoire virtuelle. Par contre, tous les processus légers possèdent leur propre pile d'appel.

Sommaire

Utilisation

Les processus légers sont typiquement utilisés avec l'interface 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, tandis que les calculs lourds (en termes de temps de calcul) sont gérés par un ou plusieurs autres processus légers. Cette technique de conception de logiciel est avantageuse dans ce cas, car l'utilisateur peut continuer d'interagir avec le programme même lorsque celui-ci est en train 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 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, car il n'y a plus de blocage durant les phases de traitements intenses.

Processus légers et multitâche

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. Puisqu'il n'y a pas de changement de mémoire virtuelle, la commutation de contexte (context switch) entre deux processus légers est moins coûteuse que la commutation de contexte entre deux processus. On peut y voir un avantage de la programmation utilisant des threads multiples.

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, le principal surcoût dû à l'utilisation de processus multiples provient de la communication 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 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 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), tout en conservant à l'esprit que l'utilisation de la synchronisation peut aboutir à des situations d'interblocage. La complexité 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 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, 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 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 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.

Voir aussi

Wiktprintable without text.svg

Voir « thread » sur le Wiktionnaire.

Lien externe

  • Portail de l’informatique Portail de l’informatique
  • Portail de la programmation informatique Portail de la programmation informatique
Ce document provient de « Processus l%C3%A9ger ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Multi-thread de Wikipédia en français (auteurs)

Regardez d'autres dictionnaires:

  • Multi-jackbolt tensioner — Multi jackbolt tensioners (MJT) provide an alternative to traditional bolted joints Rather than needing to tighten one large bolt, MJTs use several smaller jackbolts to drastically reduce the torque required to attain a certain preload. MJTs… …   Wikipedia

  • Thread safety — is a computer programming concept applicable in the context of multi threaded programs. A piece of code is thread safe if it functions correctly during simultaneous execution by multiple threads. In particular, it must satisfy the need for… …   Wikipedia

  • Thread-Safety — Saltar a navegación, búsqueda Thread safety (Seguridad en hilos) es un concepto de programación de computadores aplicable en el contexto de los programas multi threaded. Una pieza de código es thread safe si funciona correctamente durante la… …   Wikipedia Español

  • Multi-site test — Multi site test, or multisite test , or concurrent test , or parallel test are all semiconductor Automatic Test Equipment (ATE) terms that generally refer to testing of multiple devices at the same time. Currently, devices refer to System on a… …   Wikipedia

  • Multi-Environment Real-Time — Company / developer Bell Labs[1] OS family Real time operating systems Marketing target Real time computing applications Supported platforms …   Wikipedia

  • Multi-core processor — Diagram of a generic dual core processor, with CPU local level 1 caches, and a shared, on die level 2 cache …   Wikipedia

  • Thread (computer science) — This article is about the concurrency concept. For the multithreading in hardware, see Multithreading (computer architecture). For the form of code consisting entirely of subroutine calls, see Threaded code. For other uses, see Thread… …   Wikipedia

  • Multi-core — A multi core processor (or chip level multiprocessor, CMP) combines two or more independent cores into a single package composed of a single integrated circuit (IC), called a die, or more dies packaged together. The individual core is normally a… …   Wikipedia

  • Thread (Informatik) — Ein Thread (auch: Aktivitätsträger oder leichtgewichtiger Prozess) bezeichnet in der Informatik einen Ausführungsstrang oder eine Ausführungsreihenfolge in der Abarbeitung eines Programms. Ein Thread ist Teil eines Prozesses. Man unterscheidet… …   Deutsch Wikipedia

  • Thread (informatique) — Pour les articles homonymes, voir Thread et Fil. Un processus avec deux threads. Un thread ou fil (d exécution) o …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”