Fil utilisateur

En tant que thread utilisateur (également les threads utilisateurs écrits), parfois Niveau utilisateur -Thread et z. B. sous Windows Fiber ( voir ci-dessous ) appelé, en informatique, une certaine manière d' exécuter des programmes ou des parties de programme de manière interconnectée. La fonctionnalité n'est pas implémentée directement dans le noyau (comme avec un thread de noyau ), mais dans une bibliothèque de programmes distincte située dans l' espace utilisateur . Cela permet un changement de contexte ( changement de tâche) entre les threads utilisateur sans appels système complexes, ce qui signifie que les changements de contexte sont beaucoup plus rapides qu'entre les threads ou processus du noyau .

Planification

Puisque les threads utilisateur au sein d'un thread noyau ne sont en principe pas exécutés simultanément ([pseudo-] parallèle), mais seulement l'un après l'autre, les threads utilisateur ne peuvent pas être raisonnablement répartis sur plusieurs processeurs . Etant donné que le système d'exploitation ne sait rien de l'existence des threads utilisateur, la planification (contrôle du temps) des threads utilisateur doit être effectuée par le programme lui-même ou par la bibliothèque de programmes utilisée. Ainsi, la programmation coopérative est pratiquement toujours opérée et non préventive (de l' anglais préemptif , «privilégié»). Les threads utilisateurs doivent donc abandonner le contrôle de leur propre chef.

Cependant, cela pose problème si l'un des threads utilisateur effectue un appel système bloquant . Le fait que ce thread utilisateur soit bloqué l'empêche de passer le contrôle à un autre thread utilisateur - de cette façon, tout le programme est bloqué. Cependant, ce problème peut être contourné dans la mesure où la bibliothèque utilisée fournit des fonctions de substitution pour le thread utilisateur. La bibliothèque utilise alors uniquement les appels système non bloquants du système d'exploitation, que le système d'exploitation doit fournir.

Point de vue différent

Le concept de threads utilisateur peut également être vu comme une extension des concepts de procédures ou de fonctions dans les langages de programmation correspondants . De ce point de vue, un thread utilisateur correspond à une procédure qui est appelée depuis un autre point (via la planification explicite de précisément ce thread utilisateur). Cependant, une telle procédure ne revient pas nécessairement au flux de contrôle de l'appelant à exactement un point, mais peut plutôt "retourner" plus d'une fois et à différents points via son ordonnancement auto-exécuté. Cette vue se reflète également dans la manière dont les threads utilisateur sont déclarés dans certains systèmes - à savoir en tant que procédure distincte pour chaque thread utilisateur.

Implémentations

Les bibliothèques de threads utilisateur sont disponibles sous de nombreux systèmes d' exploitation, mais les interpréteurs peuvent également prendre en charge les threads utilisateur. La dénomination des threads utilisateur diffère selon l' implémentation .

les fenêtres

Microsoft appelle les threads utilisateur qu'il propose (depuis Windows 98 ) sous Windows Fibers . Le mot anglais fibre ( dt. ' Fiber ' → ' fiber ') peut être utilisé ici comme référence à la relation naturelle d'un fil - d. H. un fil - à comprendre comme une fibre / fibre: Une fibre / fibre est plus mince et plus simple qu'un fil (fil); un fil peut être filé à partir de plusieurs fibres individuelles. Un thread peut être converti en fibre sous Windows et vice versa.

Linux

Sous Linux, par exemple, les bibliothèques LinuxThreads et GNU Portable Threads fournissent des threads utilisateur . Cependant, LinuxThreads n'est plus en développement et son successeur, la Native POSIX Thread Library (NPTL), n'est plus une pure bibliothèque d'espace utilisateur .

Solaris

La convention de dénomination sous Solaris diffère de celle sous Windows et Linux . Un thread noyau est ici comme un processus léger (en anglais ; → voir, processus léger '. Thread (informatique) ) auquel il est fait référence et un thread utilisateur simplement appelé thread .
Un thread Solaris peut également être associé à d'autres processus légers dans le même processus .

Machine virtuelle Java

Les versions plus récentes de la machine virtuelle Java (JVM) utilisent, si elles sont disponibles, les capacités du système d'exploitation local pour mettre les threads à la disposition du programmeur. Avec les anciennes versions ou si le système d'exploitation ne prend pas en charge les threads du noyau , la JVM dispose également de sa propre fonctionnalité de thread utilisateur. C'est ce qu'on appelle le fil vert . Les threads verts sont de vrais threads utilisateur, mais offrent toujours une planification préemptive basée sur la priorité , qui est implémentée par la JVM.

Littérature

Preuve individuelle

  1. Cprogramming.com: Introduction à la programmation Windows et OpenGL. (Anglais)
  2. Vikram Shukla: Comparaison des modèles de threads Linux: LinuxThreads et NPTL (PDF; 50 Ko, anglais), consulté le 31 mai 2019.
  3. ^ Fabian Zabatta, Kevin Ying: une comparaison des performances de thread: Windows NT et Solaris sur un multiprocesseur symétrique. 2e Symposium USENIX Windows NT, du 3 au 5 août 1998. Dans: usenix.org. Association USENIX, 10 avril 2002, consulté le 6 février 2014 .
  4. ^ Glenn L. Vanderburg et al.: Trucs des gourous de la programmation Java. Archivé de l' original le 25 mai 2009 ; Consulté le 14 avril 2018 (anglais).

liens web