| Liste Articles: [0-A] [A-C] [C-F] [F-J] [J-M] [M-P] [P-S] [S-Z] | Liste Catégories | Une page au hasard | Pages liées | ||||||
Les processus légers (en anglais, thread) sont similaires aux processus en cela qu'ils représentent tous deux 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 alors que la mémoire virtuelle utilisé par deux processus sont séparés, deux ou plus processus légers appartenant à un même processus partagent tout ou partie de cette mémoire virtuelle.
Comme utilisation typique de processus légers on peut citer une interface graphique d'un programme où les interactions de l'utilisateur avec le processus, par l'intermédiaire des périphériques d'entrée, est géré par un processus léger tandis que les calculs lourd (en terme 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 interagir avec le programme même lorsque celui-ci sera 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 a l'utilisateur de continuer à entrer son texte.
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 a travers une API fournit par le système tel que IPC. D'un autre coté 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 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 ou bien une faiblesse des dits système d'exploitation concernant la commutation de contexte entre deux processus.
Dans certains cas les programmes utilisant des processus léger sont plus rapides que des programmes architecturé 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 à 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 thread d'un processus. La où deux processus séparés doivent utiliser un mécanisme fourni par le système pour communiquer, les processus légers partage tout ou partie de l'état du processus.
D'un autre côté la programmation utilisant des processus légers est plus difficile, l'accès a certaines ressources partagées doit être restreint par le programme lui-même pour éviter que tout ou parties de l'état d'un processus deviennent temporairement inconsistants tandis qu'un autre processus léger va avoir besoin de consulter cette portion de l'état du processus. Aussi, du point de vue de la robustesse d'un programme, un programme utilisant ou abusant des processus légers sera plus fragile qu'un programme utilisant des processus multiples. En effet les processus légers peuvent modifier l'état global d'un processus et ainsi interférer avec le bon fonctionnement du dit processus. La complexité des programmes utilisant des processus légers est aussi nettement plus grande que celle programmes déférant le travail à faire a plusieurs processus plus simples. Cette complexité accrue lorsqu'elle est mal gérée lors de la phase de conception ou d'implémentation d'un programme peut conduire à de multiples problèmes.
Les systèmes d'exploitation implémentent 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 intégrent un support pour les processus léger dans le langage, tandis que la plupart des autres langages ne le permette que par des extensions du langage considéré ou par l'intermédiaire de bibliothèques.
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 permettra l'exécution plus rapide de programmes utilisant des processus léger aussi bien que des processus multiples.


