Ask the Gamer

Thread

Was ist ein Thread?

Bei einem Thread handelt es sich um den Bestandteil eines Prozesses, den der Prozessor eines Computersystems abzuarbeiten hat. Übersetzen lässt sich der englische Begriff mit Faden, beziehungsweise Ausführungsstrang. Konkret versteht man darunter eine nebenläufige Ausführungseinheit in einem Prozess. Threads stellen dabei eigenständige Aktivitäten dar, die unabhängig von anderen Recheneinheiten abgewickelt werden. Sie teilen sich zwar verschiedene Betriebsmittel, verfügen jedoch über einen jeweils eigenen Prozesskontext. Ihr großer Vorteil besteht darin, dass sie vom Betriebssystem leichter erzeugt und auch einfacher untereinander kommunizieren können, als das bei Prozessen der Fall ist. Zum Einsatz kommen Threads vor allem in Servern und Clients.

Inhaltsverzeichnis

Allgemeines

Threads bieten eine Möglichkeit, den Prozessor (CPU) eines Rechners besser auszulasten. Ein Thread bildet innerhalb von einem ablaufenden Prozess eine Verarbeitungseinheit. Mehrere greifen dabei jeweils auf dieselben Betriebsmittel zurück:

  • das Codesegment
  • das Datensegment
  • die Dateideskriptoren, die verwendet werden

Außerdem teilen sich Threads innerhalb von einem Prozess weitere Ressourcen des Betriebssystems. Dazu gehören Prozessoren, Dateien und Netzwerkverbindungen. Obendrein nutzen sie denselben Adressraum im Speicher. Dies vereinfacht die Kommunikation und den Datenaustausch zwischen den Threads eines Prozesses. Konflikte bei der gemeinsamen Nutzung der Betriebsmittel werden durch Synchronisationsmechanismen verhindert. Allerdings verfügt jeder Thread über einen eigenen Threadkontext, der sich kennzeichnet durch

  • einen unabhängigen Registersatz
  • einen eigenen Stapel im gemeinsam genutzten Prozess-Adressraum

Obwohl sie demselben Prozess angehören, können Threads auch verschiedenen Prozessoren zugeordnet werden. Jeder Ausführungsstrang ist dabei mit der Aufführung einer eigenen Aufgabe betraut, sodass sich die Programmausübung in überschaubare Einzelaufgaben untergliedert. Obendrein lassen sich auf diese Weise selbst komplexe Prozesse verschiedenen Prozessorkernen zuweisen.

Entwicklung: Prozess und Thread

Im Gegensatz zu früher sind moderne Betriebssysteme heute dazu in der Lage, verschiedene Ausführungsstränge auszugeben, die Threads, sodass verschiedene Aufgaben parallel durchgeführt werden können. Moderne Betriebssysteme ordnen jedem Prozess mindestens einen Thread zu, da diese wesentlich einfacher zu verwalten sind. Sofern der Programmablauf auch parallel verarbeitet werden kann, können innerhalb von einem Prozess auch mehrere Threads in Auftrag gegeben werden. Während ein Prozess als schwergewichtig gilt, wird ein Thread als eine nebenläufige Ausführungseinheit innerhalb eines Prozesses verstanden. Der wesentliche Unterschied zwischen den beiden besteht darin, dass Prozesse einen jeweils eigenen Speicherbereich besitzen, während Threads diesen gemeinsam nutzen. Obendrein ist ein Thread keine isolierte Ausführungseinheit, sondern immer an einen Prozess gebunden.

Anwendung

Nach einem ähnlichen Prinzip arbeitet auch Hyperthreading (HT). Dabei handelt es sich allerdings um eine Technologie, die auf der Ebene der Hardware zur Anwendung kommt. Threads im hier beschriebenen Ansatz werden dagegen software-seitig durch das Betriebssystem gesteuert. Ihre Implementierung kann auf verschiedenen Ebenen erfolgen

  • auf der Kernelebene
  • auf der Benutzerebene: Hier ist allein das jeweilige Programm für die Verwaltung zuständig

Diese Form des Multithreadings ist gerade für Server und Clients von großer Bedeutung, um mehrere Aufrufe zur gleichen Zeit annehmen zu können.

Quellen & Weblinks

Share