www.wikidata.de-de.nina.az
Als User Thread auch Userthread geschrieben gelegentlich auch Userlevel Thread und z B unter Windows Fiber s u genannt wird in der Informatik eine bestimmte Art Programme bzw Programmteile verzahnt ablaufen zu lassen bezeichnet Die Funktionalitat ist dabei nicht direkt im Kernel implementiert wie bei einem Kernel Thread sondern in einer separaten Programmbibliothek die im Userspace liegt Dadurch ist ein Kontextwechsel Taskswitching zwischen den Userthreads ohne aufwendige Systemaufrufe moglich wodurch Kontextwechsel deutlich schneller sind als zwischen Kernelthreads oder Prozessen Inhaltsverzeichnis 1 Scheduling 2 Andere Sichtweise 3 Implementierungen 3 1 Windows 3 2 Linux 3 3 Solaris 3 4 Java Virtual Machine 4 Literatur 5 Einzelnachweise 6 WeblinksScheduling BearbeitenDa die User Threads innerhalb eines Kernel Threads prinzipiell nicht gleichzeitig pseudo parallel sondern nur nacheinander ausgefuhrt werden konnen die User Threads nicht sinnvoll auf mehrere Prozessoren verteilt werden Da das Betriebssystem nichts von der Existenz der User Threads weiss muss das Scheduling Zeitablaufsteuerung der User Threads vom Programm selbst beziehungsweise von der eingesetzten Programmbibliothek erledigt werden Dabei wird praktisch immer kooperatives Scheduling betrieben und nicht praemptives von engl preemptive bevorrechtigt Die User Threads mussen also von sich aus die Kontrolle abgeben Dies ist allerdings dann problematisch wenn einer der User Threads einen blockierenden Systemaufruf tatigt Dadurch dass dieser User Thread blockiert ist wird es ihm unmoglich 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 ausschliesslich nichtblockierende Systemaufrufe des Betriebssystems die dieses bereitstellen muss Andere Sichtweise BearbeitenDas Konzept der User Threads kann auch als Erweiterung der Konzepte von Prozeduren oder Funktionen in entsprechenden Programmiersprachen gesehen werden Ein User Thread entspricht nach dieser Sichtweise einer Prozedur die von anderer Stelle aufgerufen wird uber das explizite Scheduling genau dieses User Threads Eine solche Prozedur kehrt jedoch nicht unbedingt an genau einer Stelle zum Kontrollfluss des Aufrufers zuruck sondern kann vielmehr uber ihr selbst durchgefuhrtes Scheduling auch mehr als einmal und an verschiedene Stellen zuruckkehren Diese Sichtweise spiegelt sich auch in der Art wider wie in einigen Systemen User Threads deklariert werden namlich als eine gesonderte Prozedur je User Thread Implementierungen BearbeitenUser Thread Bibliotheken stehen unter vielen Betriebssystemen zur Verfugung aber auch Interpreter konnen User Threads unterstutzen Dabei unterscheidet sich die Benennung der User Threads je nach Implementierung Windows Bearbeiten Microsoft nennt die von ihr seit Windows 98 unter Windows angebotenen User Threads Fibers 1 Das englische Wort fiber dt Faser Fiber kann hier als Anlehnung an das naturliche Verhaltnis eines thread englisch d h eines Fadens zu einer fiber Faser verstanden werden Eine Faser Fiber ist dunner 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 Linux Bearbeiten User Threads bieten unter Linux zum Beispiel die Bibliotheken LinuxThreads und GNU Portable Threads LinuxThreads wird allerdings nicht mehr weiterentwickelt und sein Nachfolger Native POSIX Thread Library NPTL ist keine reine Userspace Bibliothek mehr 2 Solaris Bearbeiten Die Namenskonvention unter Solaris weicht von der unter Windows und Linux ab Ein Kernel Thread wird hier als Lightweight process engl leichtgewichtiger Prozess vgl Thread Informatik bezeichnet und ein User Thread schlicht thread genannt Ein Solaris Thread kann auch anderen lightweight processes desselben Prozesses zugeordnet werden 3 Java Virtual Machine Bearbeiten Neuere Versionen der Java Virtual Machine JVM nutzen falls vorhanden die Moglichkeiten des lokalen Betriebssystems um dem Programmierer Threads zur Verfugung zu stellen Bei alteren Versionen oder falls das Betriebssystem Kernel Threads nicht unterstutzt hat die JVM aber auch ihre eigene User Thread Funktionalitat Diese wird als Green Thread bezeichnet Green Threads sind echte User Threads bieten aber trotzdem praemptives prioritatsbasiertes Scheduling das durch die JVM realisiert wird 4 Literatur BearbeitenAndrew S Tanenbaum Modern Operating Systems S 515 518 Prentice Hall Englewood Cliffs New Jersey 1992 ISBN 0 13 595752 4Einzelnachweise Bearbeiten Cprogramming com Introduction to Windows Programming and OpenGL englisch Vikram Shukla Linux threading models compared LinuxThreads and NPTL Memento des Originals vom 31 Mai 2019 im Internet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot pdfs semanticscholar org PDF 50 KB englisch abgerufen am 31 Mai 2019 Fabian Zabatta Kevin Ying A Thread Performance Comparison Windows NT and Solaris on A Symmetric Multiprocessor 2nd USENIX Windows NT Symposium 03 05 08 1998 In usenix org USENIX Association 10 April 2002 abgerufen am 6 Februar 2014 englisch Glenn L Vanderburg et al Tricks of the Java Programming Gurus Archiviert vom Original am 25 Mai 2009 abgerufen am 14 April 2018 englisch Weblinks BearbeitenRalf S Engelschall Portable Multithreading PS 132 kB Implementierung von User Threads auf Unix Systemen englisch abgerufen am 6 Februar 2014 Abgerufen von https de wikipedia org w index php title User Thread amp oldid 227026259