Multithreading

Multithreading

Der Begriff Multithreading (auch Nebenläufigkeit, Mehrsträngigkeit oder Mehrfädigkeit genannt) bezeichnet das gleichzeitige Abarbeiten mehrerer Threads (Ausführungsstränge) innerhalb eines einzelnen Prozesses oder eines Tasks (ein Anwendungsprogramm).

Im Gegensatz zum Multitasking, bei dem mehrere unabhängige Programme voneinander abgeschottet quasi-gleichzeitig ausgeführt werden, sind die Threads eines Anwendungsprogramms nicht voneinander abgeschottet und können somit durch sogenannte Race Conditions Fehler verursachen, die durch Synchronisation vermieden werden müssen.

Sowohl Multithreading wie auch Multitasking können entweder auf nur einem Prozessorkern ausgeführt werden, als auch zusätzlich mit Multiprocessing kombiniert werden (echt-parallele Ausführung durch mehrere Prozessorkerne).

Software

Meist ist mit dem Begriff das softwareseitige Multithreading gemeint, bei dem in aller Regel nur ein Prozessor beteiligt ist. Die dann vorhandene scheinbare Gleichzeitigkeit wird in Wirklichkeit durch geschickte Programmierung erzeugt. Einzelne Threads eines Prozesses/Tasks können sehr schnell auf zeitkritische Ereignisse reagieren, während andere Threads langwierige Berechnungen durchführen. Zum Beispiel kann eine Videobearbeitungs-Software eine Szene „im Hintergrund“ berechnen (Thread 1), während sie „im Vordergrund“ auf Eingaben des Benutzers reagiert (Thread 2).
Ohne weitere Hardwareunterstützung reduziert das Multithreading die Gesamtsystemleistung durch den bei Threadwechseln entstehenden Overhead. Deshalb wird der Programmierer die Anzahl der Threadwechsel möglichst gering halten.
Es wird auch unterschieden, ob das Multithreading einzig im Anwendungsprogramm implementiert ist, oder ob es Betriebssystem-unterstützt stattfindet. Ist es rein Anwendungs-seitig implementiert, so hat der Programmierer volle Kontrolle, wann welcher Thread welche Ressourcen erhält. Da das gesamte Programm für das Betriebssystem jedoch nur wie ein Ablauf erscheint, wird es komplett eingefroren, sobald es Ressourcen/Dienste anfordert, die gerade nicht zur Verfügung stehen.
Ist das Multithreading Betriebssystem-unterstützt, so kann dieses jene Teile einer Anwendung kennen, die nicht blockiert sind - die Anwendung kann (teilweise) weiterarbeiten.

Bei symmetrischen Multiprozessorsystemen kann die Rechenarbeit eines Prozesses/Tasks durch Multithreading auf mehrere Systemprozessoren verteilt werden.

Hardware

Das hardwareseitige Multithreading unterscheidet sich vom softwareseitigen dadurch, dass die Hardware eines Prozessors das scheinbare oder echte gleichzeitige Abarbeiten mehrerer Threads unterstützt. Die Software muss durch softwareseitiges Multithreading diese Fähigkeit verwenden.
Es muss hierbei genau unterschieden werden zwischen hardwareseitigem Multithreading und Multiprocessing. Bei Multithreading laufen die Threads („Programmablauffäden“) im selben Task-Kontext, was für die Hardware sehr viel einfacher ist (z.B. keine zweite MMU/Seitentabelle notwendig). Bei echtem Multiprocessing ist jeder Ablauf ein eigener Prozess.
Beim hardwareseitigen Multithreading entsteht nur geringer Overhead beim Thread-Wechsel, sofern die Anzahl Hardware-unterstützter Threads mit der Software-Thread-Anzahl übereinstimmt und somit jeder Thread „seine“ CPU-Ressourcen (v.a. Registersatz) stets behalten kann.

Zusätzlich können (sowohl bei Hardware-seitigem Multithreading wie auch bei Multitasking) Prozessor-Funktionseinheiten, die von einem Rechenablauf gerade nicht verwendet werden, von einem anderen verwendet werden (meist Hyper-Threading genannt). Hierdurch können durch die Vermeidung von Pipeline-Hazards unproduktive Taktzyklen vermieden werden, die Gesamtsystemleistung pro CPU steigt.
Echte Thread-Wechsel, bei denen einer der bereitstehenden Threads tatsächlich alle Prozessorressourcen abgeben muss, bleiben dennoch „teuer“.

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

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

  • Multithreading — may refer to: Multithreading (computer architecture), multithreading in hardware Thread (computer science)#Multithreading, multithreading in software This disambiguation page lists articles associated with the same title. If an …   Wikipedia

  • Multithreading —   [von engl. thread »Faden«], die parallele Ausführung von zwei oder mehr Threads (»Programmfäden«) eines Anwendungsprogramms.   Beispiele sind bei einem Textverarbeitungsprogramm die Rechtschreibprüfung oder der Seitenumbruch, die ausgeführt… …   Universal-Lexikon

  • multithreading — (izg. multitrèding) ž DEFINICIJA term. višenitnost, v. ETIMOLOGIJA engl …   Hrvatski jezični portal

  • Multithreading — Cet article concerne le support matériel des multithreads. Pour les thread logiciels, voir thread (informatique). Les ordinateurs dits multithreading ont du matériel qui leur permet d exécuter efficacement des thread (informatique) multiples. Il… …   Wikipédia en Français

  • multithreading — daugiagijiškumas statusas T sritis informatika apibrėžtis Programos veikimo būdas, kai tos pačios užduoties veiksmai vienu metu atliekamai keliomis ↑gijomis. atitikmenys: angl. multithreading ryšiai: dar žiūrėk – gija …   Enciklopedinis kompiuterijos žodynas

  • Multithreading (computer hardware) — Multithreading computers have hardware support to efficiently execute multiple threads. These are distinguished from multiprocessing systems (such as multi core systems) in that the threads must all operate in the same address space, as there is… …   Wikipedia

  • Multithreading (softwareseitig) — Multithreading wird die Fähigkeit eines Prozesses genannt, mehrere Bearbeitungsstränge (Threads) gleichzeitig abzuarbeiten. Im Allgemeinen verwenden die Threads eines Prozesses gemeinsame Ressourcen wie Adressraum, File Handles etc. Ob die… …   Deutsch Wikipedia

  • Multithreading (computer architecture) — This article describes hardware supports for multithreads. For thread in software, see Thread (computer science). Multithreading computers have hardware support to efficiently execute multiple threads. These are distinguished from multiprocessing …   Wikipedia

  • Multithreading (hardwareseitig) — Dieser Artikel oder Abschnitt ist nicht hinreichend mit Belegen (Literatur, Webseiten oder Einzelnachweisen) versehen. Die fraglichen Angaben werden daher möglicherweise demnächst gelöscht. Hilf Wikipedia, indem du die Angaben recherchierst und… …   Deutsch Wikipedia

  • multithreading — noun The use of multithreaded code …   Wiktionary

Share the article and excerpts

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