| Thread | |||||
|
Ein Thread ist die kleinste ausführbare Einheit einer Task (Prozess). Ein Task wird dazu in Teilaufgaben unterteilt. Threads werden auch als Faden bezeichnet, und Prozessoren, die mehrere Threads parallel verarbeiten können, als Multithreaded Prozessoren (die Multithreaded Anwendungen bearbeiten können). Das Betriebssystem verwaltet die Threads, deswegen wird auch von Kernel-Thread gesprochen (vgl. User Thread). Ein Prozess wird durch eine sequentielle Abarbeitung von Kernel-Threads ausgeführt. Beim Multithreading teilen sich die Threads der entsprechenden Prozesse einige Ressourcen, wie das Codesegment, das Datensegment und die Dateideskriptoren. Jeder Thread verwendet jedoch seinen eigenen Befehlszähler und Stack. Threads verwenden denselben Adressraum und können deswegen Interprozesskommunikation betreiben. Manche Ressourcen können nur von dem erzeugenden Thread verwendet werden, wie z. B. das Windows-Handle. Threads innerhalb einer Task teilen sich Speicherressourcen sowie OS-abhängige Betriebsmittel wie Dateien und Netzwerkverbindungen. Daher erzeugen Threads weniger administrativen Aufwand als Prozesse, insbesondere ist bei einem Thread-Wechsel kein vollständiger Wechsel des Prozesskontextes notwendig, da alle Threads einen Teil davon bereits nutzen. Thread-Wechsel sind beim hardwareseitigen Multithreading Performance-steigernd, da Konflikte in den Pipelines der Prozessoren (Pipeline-Hazards) reduziert werden. Beim softwareseitigen Multithreading erzeugen viele Thread-Wechsel zusätzlichen Overhead, so dass sogar eine Leistungsminderung entstehen könnte. |
|||||
| Siehe auch: Task Multithreading Hyper-Threading Simultaneous-Multithreading SMP Pentium-4 Pipeline-Architektur Kernel | |||||