<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=User-Thread</id>
	<title>User-Thread - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=User-Thread"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=User-Thread&amp;action=history"/>
	<updated>2026-05-18T03:51:44Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=User-Thread&amp;diff=792475&amp;oldid=prev</id>
		<title>imported&gt;Siegbert v2: Beleg hinzugefügt / Quellen überarbeitet (https, bib. Angaben, Originaldokument statt archivierte Semantic-Scholar-Seite) / EN als letzter Abschnitt</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=User-Thread&amp;diff=792475&amp;oldid=prev"/>
		<updated>2025-09-26T15:52:30Z</updated>

		<summary type="html">&lt;p&gt;Beleg hinzugefügt / Quellen überarbeitet (https, bib. Angaben, Originaldokument statt archivierte Semantic-Scholar-Seite) / EN als letzter Abschnitt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Als &amp;#039;&amp;#039;&amp;#039;User-Thread&amp;#039;&amp;#039;&amp;#039; (auch &amp;#039;&amp;#039;Userthread&amp;#039;&amp;#039; geschrieben), gelegentlich auch &amp;#039;&amp;#039;&amp;#039;[[Userspace|Userlevel]]-Thread&amp;#039;&amp;#039;&amp;#039; und z.&amp;amp;nbsp;B. unter [[Microsoft Windows|Windows]] &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Fiber&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; ([[#Implementierungen|s.&amp;amp;nbsp;u.]]) genannt, wird in der [[Informatik]] eine bestimmte Art, [[Computerprogramm|Programme]] bzw. [[Unterprogramm|Programmteile]] verzahnt ablaufen zu lassen, bezeichnet. Die Funktionalität ist dabei nicht direkt im [[Kernel (Betriebssystem)|Kernel]] implementiert (wie bei einem [[Thread (Informatik)|Kernel-Thread]]), sondern in einer separaten [[Programmbibliothek]], die im [[Userspace]] liegt.&amp;lt;ref name=&amp;quot;Richter99&amp;quot;&amp;gt;{{Literatur |Autor=Jeffrey Richter |Titel=Programming Applications for Microsoft Windows |Auflage=4 |Verlag=Microsoft Press |Ort=Redmond |Datum=1999 |Sprache=en |ISBN=1-57231-996-8 |Kapitel=Chapter&amp;amp;nbsp;12: Fibers |Seiten=417–420}}&amp;lt;/ref&amp;gt; Dadurch ist ein [[Kontextwechsel]] (Taskswitching) zwischen den Userthreads ohne aufwendige Systemaufrufe möglich, wodurch Kontextwechsel deutlich schneller sind als zwischen Kernelthreads oder [[Prozess (Informatik)|Prozessen]].&lt;br /&gt;
&lt;br /&gt;
== Scheduling ==&lt;br /&gt;
Da die User-Threads innerhalb eines [[Thread (Informatik)|Kernel-Threads]] prinzipiell nicht gleichzeitig ([pseudo-]parallel), sondern nur nacheinander ausgeführt werden, können die User-Threads nicht sinnvoll auf mehrere [[Prozessor]]en verteilt werden. Da das [[Betriebssystem]] nichts von der Existenz der User-Threads weiß, muss das [[Scheduling#Scheduling in der Informatik|Scheduling]] (Zeitablaufsteuerung) der User-Threads vom [[Computerprogramm|Programm]] selbst beziehungsweise von der eingesetzten [[Programmbibliothek]] erledigt werden. Dabei wird praktisch immer [[Multitasking#Kooperatives Multitasking|&amp;#039;&amp;#039;kooperatives&amp;#039;&amp;#039; Scheduling]] betrieben und nicht &amp;#039;&amp;#039;[[Multitasking#Präemptives Multitasking|präemptives]]&amp;#039;&amp;#039; (von [[Englische Sprache|engl.]] &amp;#039;&amp;#039;{{lang|la|preemptive}}&amp;#039;&amp;#039;, ‚bevorrechtigt‘). Die User-Threads müssen also von sich aus die Kontrolle abgeben.&lt;br /&gt;
&lt;br /&gt;
Dies ist allerdings dann 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 – auf diese Weise wird das gesamte Programm blockiert. Dieses Problem kann jedoch umgangen werden, indem die genutzte Bibliothek dem User-Thread Ersatzfunktionen bereitstellt. Die Bibliothek nutzt dann ausschließlich nichtblockierende Systemaufrufe des Betriebssystems, die dieses bereitstellen muss.&lt;br /&gt;
&lt;br /&gt;
== Andere Sichtweise ==&lt;br /&gt;
Das Konzept der User-Threads kann auch als Erweiterung der Konzepte von [[Prozedur (Programmierung)|Prozeduren]] oder [[Funktion (Programmierung)|Funktionen]] in entsprechenden [[Programmiersprache]]n gesehen werden. Ein User-Thread entspricht nach dieser Sichtweise einer Prozedur, die von anderer Stelle aufgerufen wird (über das explizite [[#Scheduling|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 einmal und an verschiedene Stellen „zurückkehren“. Diese Sichtweise spiegelt sich auch in der Art wider, wie in einigen Systemen User-Threads deklariert werden – nämlich als eine gesonderte Prozedur je User-Thread.&lt;br /&gt;
&lt;br /&gt;
== Implementierungen ==&lt;br /&gt;
User-Thread-[[Programmbibliothek|Bibliotheken]] stehen unter vielen [[Betriebssystem]]en zur Verfügung, aber auch [[Interpreter]] können User-Threads unterstützen. Dabei unterscheidet sich die Benennung der User-Threads je nach [[Implementierung#Softwaretechnik|Implementierung]].&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
[[Microsoft]] nennt die von ihr (seit &amp;#039;&amp;#039;[[Microsoft Windows 98|Windows 98]]&amp;#039;&amp;#039;) unter [[Microsoft Windows|Windows]] angebotenen User-Threads &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Fibers&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://www.cprogramming.com/tutorial/opengl_windows_programming.html |titel=Introduction to Windows Programming and OpenGL |werk=cprogramming.com |sprache=en |abruf=2025-09-26}}&amp;lt;/ref&amp;gt; Das [[Englische Sprache|englische]] Wort &amp;#039;&amp;#039;{{lang|en|fiber}}&amp;#039;&amp;#039; ([[Deutsche Sprache|dt.]] ‚Faser‘ → ‚Fiber‘) kann hier als Anlehnung an das natürliche Verhältnis eines &amp;#039;&amp;#039;{{lang|en|thread}}&amp;#039;&amp;#039; (englisch) – d.&amp;amp;nbsp;h. eines [[Faden]]s – zu einer &amp;#039;&amp;#039;{{lang|en|fiber}}&amp;#039;&amp;#039;/[[Faser]] verstanden werden: Eine Faser/Fiber ist dünner und einfacher als ein Faden (Thread); ein Faden kann aus mehreren einzelnen Fasern gesponnen sein. Ein Thread kann unter Windows in einen Fiber konvertiert werden und umgekehrt.&amp;lt;ref name=&amp;quot;Richter99&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
User-Threads bieten unter [[Linux]] zum Beispiel die [[Programmbibliothek|Bibliotheken]] &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;LinuxThreads&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;GNU Portable Threads&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;. &amp;#039;&amp;#039;LinuxThreads&amp;#039;&amp;#039; wird allerdings nicht mehr weiterentwickelt, und sein Nachfolger &amp;#039;&amp;#039;[[Native POSIX Thread Library]]&amp;#039;&amp;#039; (NPTL) ist keine reine [[Userspace]]-Bibliothek mehr.&amp;lt;ref&amp;gt;{{Internetquelle |autor=Vikram Shukla |url=https://cs.uns.edu.ar/~jechaiz/sosd/clases/extras/03-LinuxThreads%20and%20NPTL.pdf |titel=Linux threading models compared: LinuxThreads and NPTL |werk=cs.uns.edu.ar |hrsg=IBM |datum=2006-07 |format=PDF; 50&amp;amp;nbsp;kB |sprache=en |abruf=2019-05-31}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Solaris ===&lt;br /&gt;
Die [[Namenskonvention (Datenverarbeitung)|Namenskonvention]] unter [[Solaris (Betriebssystem)|Solaris]] weicht von der unter [[Microsoft Windows|Windows]] und [[Linux]] ab. Ein Kernel-Thread wird hier als &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;{{lang|en|Lightweight process}}&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; ([[Englische Sprache|engl.]]; ‚leichtgewichtiger Prozess‘ →&amp;amp;nbsp;vgl. [[Thread (Informatik)]]) bezeichnet und ein User-Thread schlicht &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;{{lang|en|thread}}&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; genannt.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ein Solaris-Thread kann auch anderen &amp;#039;&amp;#039;{{lang|en|lightweight processes}}&amp;#039;&amp;#039; desselben [[Prozess (Informatik)|Prozesses]] zugeordnet werden.&amp;lt;ref&amp;gt;{{Internetquelle |autor=Fabian Zabatta, Kevin Ying |url=https://www.usenix.org/legacy/publications/library/proceedings/usenix-nt98/full_papers/zabatta/zabatta_html/zabatta.html |titel=A Thread Performance Comparison: Windows NT and Solaris on A Symmetric Multiprocessor. |titelerg=2nd USENIX Windows NT Symposium, 03.–05.08.1998 |werk=usenix.org |hrsg=USENIX Association |datum=2002-04-10 |sprache=en |abruf=2014-02-06}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Java Virtual Machine ===&lt;br /&gt;
Neuere Versionen der [[Java Virtual Machine]] (JVM) nutzen, falls vorhanden, die Möglichkeiten des lokalen [[Betriebssystem]]s, um dem Programmierer Threads zur Verfügung zu stellen. Bei älteren Versionen oder falls das Betriebssystem [[Thread (Informatik)|Kernel-Threads]] nicht unterstützt, hat die JVM aber auch ihre eigene User-Thread-Funktionalität. Diese wird als &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Green Thread&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; bezeichnet. &amp;#039;&amp;#039;Green Threads&amp;#039;&amp;#039; sind echte User-Threads, bieten aber trotzdem [[Multitasking#Präemptives Multitasking|präemptives]], prioritätsbasiertes [[Scheduling#Scheduling in der Informatik|Scheduling]], das durch die JVM realisiert wird.&amp;lt;ref&amp;gt;{{Internetquelle |autor=Glenn L. Vanderburg et&amp;amp;nbsp;al. |url=http://docs.rinet.ru/JaTricks/ch6.htm |titel=Tricks of the Java Programming Gurus |archiv-url=https://web.archive.org/web/20090525141834/http://docs.rinet.ru/JaTricks/ch6.htm |archiv-datum=2009-05-25 |sprache=en |abruf=2018-04-14}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{Literatur |Autor=[[Andrew S. Tanenbaum]] |Titel=Modern Operating Systems |Verlag=Prentice Hall |Ort=Englewood Cliffs, New Jersey |Datum=1992 |Sprache=en |ISBN=0-13-595752-4 |Seiten=515–518}}&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* Ralf S. Engelschall: [http://www.engelschall.com/pw/usenix/2000/pmt-html/ &amp;#039;&amp;#039;{{lang|en|Portable Multithreading}}.&amp;#039;&amp;#039;] ([[PostScript|PS]]; 132&amp;amp;nbsp;[[Kilobyte|kB]]) – Implementierung von User-Threads auf [[Unix]]-Systemen (englisch); abgerufen am 6.&amp;amp;nbsp;Februar&amp;amp;nbsp;2014.&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Betriebssystemtheorie]]&lt;br /&gt;
[[Kategorie:Parallelverarbeitung]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Siegbert v2</name></author>
	</entry>
</feed>