3.2.9 Threads

[gesichtete Version][gesichtete Version]
Keine Bearbeitungszusammenfassung
Zeile 52: Zeile 52:


<br />
<br />
==== Beispiel einer Mischform ===
==== Beispiel einer Mischform ====
<p>
<p>
{{#index:Thread, Mischform}}
{{#index:Thread, Mischform}}

Version vom 26. Oktober 2013, 15:43 Uhr

Threads haben sehr viel Ähnlichkeit mit Prozessen. Zunächst die Definition, bevor auch auf Unterschiede eingegangen wird:


Definition: Thread

{{#index:Thread}}

Definition

Unter einem Thread versteht man einen Teil eines Prozesses, der einen unabhängigen Kontrollfluss repräsentiert.

Ein Prozess kann aus mehreren Threads bestehen, somit ergeben sich mehrere voneinander unabhängige, nebenläufige Kontrollflüsse. Vereinfachend kann man sich vorstellen, dass ein Thread so etwas wie "ein Prozess in einem Prozess" ist. Bei mehreren Threads innerhalb eines Prozesses hat man somit "mehrere Prozesse innerhalb eines Prozesses". Jedoch gibt es unterschiedliche Verfahrensweisen bei der Nutzung von Betriebsmitteln, was weiter unten auf dieser Seite noch erläutert wird.


Beispiel

Man betrachte zunächst ein einfaches Beispiel für einen Prozess mit mehreren Threads:

Beispiel

Ein Textverarbeitungsprogramm wird gestartet. Somit existiert auf dem Computersystem ein Textverarbeitungs-Prozess. Dieser Prozess startet intern mehrere Threads, die jeweils bestimmte Aufgaben übernehmen:

  • Thread 1:
    realisiert den Texteditor. Er reagiert also auf Eingaben des Users mit Tastatur oder Maus.
  • Thread 2:
    realisiert eine "Alle 10 Minuten automatisch im Hintergrund speichern"-Funktion. D.h. dieser Thread wartet 10 Minuten, speichert dann den aktuellen Inhalt des Texteditors in einer (temporären) Datei auf der Festplatte, wartet wieder 10 Minuten, speichert wieder... usw.
  • Thread 3:
    realisiert die automatische Rechtschreibprüfung. D.h. in kleinen zeitlichen Abständen werden eingegebene Wörter geprüft und ggf. rot unterstrichen.

Das Thread-Konzept wird heute von den meisten relevanten Betriebssystemen unterstützt. Threads können deshalb auf Kernel-Ebene realisiert sein. Falls das Betriebssystem keine Threads unterstützt, so können Threads immer noch auf User-Ebene realisiert werden. Denkbar sind auch Mischformen: Das Betriebssystem unterstützt Threads auf Kernel-Ebene und zusätzlich ist das Thread-Konzept noch auf User-Ebene implementiert.


Threads auf Kernel-Ebene

{{#index:Threadkontrollblock|Thread Control Block|TCB|Thread, Kernel-Ebene}} Unterstützt das Betriebssystem Threads, so kann auch das Betriebssystem deren Verwaltung übernehmen. Dies geschieht sehr ähnlich zur Verwaltung von Prozessen, beispielsweise existiert i.d.R. ein Threadkontrollblock (Thread Control Block, TCB), analog zum Prozesskontrollblock.


Threads auf User-Ebene

{{#index:Threadbibliothek|Thread, User-Ebene|Java Virtual Machine|JVM}} Unterstützt das Betriebssystem keine Threads, so kann auf der User-Ebene ein spezielles Programm (Mandl 2013 nennt dies in Kapitel 4.2.2 die Threadbibliothek) deren Bereitstellung übernehmen. Ein Beispiel dafür ist die Java Virtual Machine (JVM), welche eine eigene Threadverwaltung implementiert, und somit auch Threads auf Nicht-Thread-unterstützenden Betriebssystemen ermöglicht.


Beispiel einer Mischform

{{#index:Thread, Mischform}} Wird die Java Virtual Maschine auf einem Betriebssystem installiert, welches bereits Threads unterstützt, so können Threads sowohl auf Kernel-Ebene (also vom Betriebssystem) verwaltet werden, als auch auf User-Ebene (also von der JVM).



Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecommons.org/l/by/3.0/80x15.png