User Thread

User Thread

Als User Thread, User-level Thread oder Fiber (Windows) bezeichnet man in der Informatik eine bestimmte Art, Programme bzw. Programmteile verzahnt ablaufen zu lassen. Die Funktionalität ist dabei nicht direkt im Betriebssystemkern implementiert (wie bei einem Kernel Thread), sondern in einer separaten Programmbibliothek, die im Userspace liegt. Dadurch ist ein Kontextwechsel zwischen den User Threads ohne aufwendige Systemaufrufe möglich, wodurch Kontextwechsel deutlich schneller sind als zwischen Kernel Threads oder Prozessen.

Inhaltsverzeichnis

Scheduling

Da die User Threads innerhalb eines Kernel Threads prinzipiell nicht gleichzeitig ((pseudo-)parallel), sondern nur nacheinander ausgeführt werden, können die User Threads nicht sinnvoll auf mehrere Prozessoren verteilt werden. Da das Betriebssystem nicht von der Existenz der User Threads weiß, muss das Scheduling der User Threads vom Programm selbst beziehungsweise von der eingesetzten Programmbibliothek erledigt werden. Dabei wird praktisch immer kooperatives Scheduling betrieben und nicht präemptives. Die User Threads müssen also von sich aus die Kontrolle abgeben.

Dies ist problematisch, wenn einer der User Threads einen blockierenden Systemaufruf tätigt. Dadurch, dass dieser User Thread blockiert ist, wird es ihm unmöglich, die Kontrolle an einen anderen User Thread abzugeben. So wird das gesamte Programm blockiert. Dieses Problem kann umgangen werden, indem die genutzte Bibliothek dem User Thread Ersatzfunktionen bereitstellt. Die Bibliothek nutzt dann ausschließlich nichtblockierende Systemaufrufe des Betriebssystemes, die dieses bereitstellen muss.

Andere Sichtweise

Das Konzept der User Threads kann auch als Erweiterung der Konzepte von Prozeduren oder Funktionen in entsprechenden Programmiersprachen gesehen werden. Ein User Thread entspricht in dieser Sichtweise einer Prozedur, die von anderer Stelle aufgerufen wird (über das explizite Scheduling genau dieses User Threads). Eine solche Prozedur kehrt jedoch nicht unbedingt an genau einer Stelle zum Kontrollfluss des Aufrufers zurück, sondern kann vielmehr über ihr selbst durchgeführtes Scheduling auch mehr als ein Mal und an verschiedene Stellen "zurückkehren". Diese Sichtweise spiegelt sich auch in der Art wider, in der in einigen Systemen User Threads deklariert werden, nämlich als eine gesonderte Prozedur je User Thread.

Implementierungen

User Thread Bibliotheken stehen unter vielen Betriebssystemen zur Verfügung, aber auch Interpreter können User Threads unterstützen. Dabei unterscheidet sich die Benennung der User Threads je nach Implementierung.

Windows

Windows bietet User Threads seit Windows 98, hier werden sie Fibers genannt.[1] Der Begriff Fiber (dt. Faser) kann hier als Anlehnung an das natürliche Verhältnis von Thread (dt. Faden) und Fiber verstanden werden: Eine Faser (Fiber) ist dünner und einfacher als ein Faden (Thread); ein Faden kann aus mehreren Fasern gesponnen sein.

Linux

User Threads bieten unter Linux zum Beispiel die Bibliotheken LinuxThreads und GNU Portable Threads. LinuxThreads wird nicht mehr weiterentwickelt, der Nachfolger Native POSIX Thread Library (NPTL) ist keine reine Userspace Bibliothek mehr.[2]

Solaris

Die Namenskonvention unter Solaris weicht von Windows und Linux ab. Ein Kernel Thread wird hier Lightweight Process genannt, ein User Thread einfach als Thread bezeichnet. Ein Solaris-Thread kann auch anderen Lightweight Processes desselben Prozesses zugeordnet werden.[3]

Java Virtual Machine

Neuere Versionen der Java Virtual Machine nutzen, falls vorhanden, die Möglichkeiten des Betriebssystemes um dem Programmierer Threads zur Verfügung zu stellen. Bei älteren Versionen oder falls das Betriebssystem Kernel Threads nicht unterstützt, hat die JVM aber auch ihre eigene User Thread Funktionalität, die als Green Threads bezeichnet wird. Green Threads sind echte User Threads, bieten aber trotzdem präemptives, prioritätsbasiertes Scheduling, das durch die JVM realisiert wird.[4]

Literatur

  1. www.cprogramming.com
  2. Vergleich von LinuxThreads und NPTL auf ibm.com
  3. Threads unter Solaris und Windows NT
  4. Tricks of the Java Programming Gurus, Glenn L. Vanderburg. et al.: Onlineversion auf docs.rinet.ru
  • Andrew S. Tanenbaum: Modern Operating Systems (S. 515–518). Prentice Hall, Englewood Cliffs, New Jersey 1992, ISBN 0-13-595752-4.

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • 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

  • 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

  • User-Level Thread — Als User Thread, User level Thread oder Fiber (Windows) bezeichnet man in der Informatik eine bestimmte Art, Programme bzw. Programmteile verzahnt ablaufen zu lassen. Die Funktionalität ist dabei nicht direkt im Betriebssystemkern implementiert… …   Deutsch Wikipedia

  • Thread — Das Wort Thread (vom englischen thread für „Gewinde“ oder „Faden“) steht für: die englische Bezeichnung für das Einfädeln oder für dünnes Nähgarn ein Ausführungsstrang oder eine Ausführungsreihenfolge der Abarbeitung der Software auf einem… …   Deutsch Wikipedia

  • User-mode Linux — (UML) allows multiple virtual Linux systems (known as guests) to run as an application within a normal Linux system (known as the host). As each guest is just a normal application running as a process in user space, this approach provides the… …   Wikipedia

  • Thread — (thr[e^]d), n. [OE. threed, [thorn]red, AS. [thorn]r[=ae]d; akin to D. draad, G. draht wire, thread, OHG. dr[=a]t, Icel. [thorn]r[=a][eth]r a thread, Sw. tr[*a]d, Dan. traad, and AS. [thorn]r[=a]wan to twist. See {Throw}, and cf. {Third}.] 1. A… …   The Collaborative International Dictionary of English

  • Thread and thrum — Thread Thread (thr[e^]d), n. [OE. threed, [thorn]red, AS. [thorn]r[=ae]d; akin to D. draad, G. draht wire, thread, OHG. dr[=a]t, Icel. [thorn]r[=a][eth]r a thread, Sw. tr[*a]d, Dan. traad, and AS. [thorn]r[=a]wan to twist. See {Throw}, and cf.… …   The Collaborative International Dictionary of English

  • Thread cell — Thread Thread (thr[e^]d), n. [OE. threed, [thorn]red, AS. [thorn]r[=ae]d; akin to D. draad, G. draht wire, thread, OHG. dr[=a]t, Icel. [thorn]r[=a][eth]r a thread, Sw. tr[*a]d, Dan. traad, and AS. [thorn]r[=a]wan to twist. See {Throw}, and cf.… …   The Collaborative International Dictionary of English

  • Thread herring — Thread Thread (thr[e^]d), n. [OE. threed, [thorn]red, AS. [thorn]r[=ae]d; akin to D. draad, G. draht wire, thread, OHG. dr[=a]t, Icel. [thorn]r[=a][eth]r a thread, Sw. tr[*a]d, Dan. traad, and AS. [thorn]r[=a]wan to twist. See {Throw}, and cf.… …   The Collaborative International Dictionary of English

  • Thread lace — Thread Thread (thr[e^]d), n. [OE. threed, [thorn]red, AS. [thorn]r[=ae]d; akin to D. draad, G. draht wire, thread, OHG. dr[=a]t, Icel. [thorn]r[=a][eth]r a thread, Sw. tr[*a]d, Dan. traad, and AS. [thorn]r[=a]wan to twist. See {Throw}, and cf.… …   The Collaborative International Dictionary of English

Share the article and excerpts

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