Zum Inhalt springen

Informatik · Klasse 12 · aktualisiert

Thread in der Informatik einfach erklärt

Du lernst, was ein Thread ist, wie er sich vom Prozess unterscheidet und warum gemeinsam genutzte Daten Synchronisation brauchen.

0 von 9 Aufgaben gelöst

Thread in der Informatik einfach erklärt

Kurz gesagt

Ein Thread ist ein Ausführungsstrang innerhalb eines Prozesses. Jeder Thread hat einen eigenen Threadkontext, teilt sich aber Speicher und andere Ressourcen mit den übrigen Threads. Bei gemeinsam genutzten Daten kann es Konflikte geben, die man mit Synchronisation auflöst.

Dein Programm zeigt eine Oberfläche, wartet auf deine Eingabe und arbeitet nebenbei im Hintergrund. Dafür kann es mehrere Abläufe gleichzeitig verwalten. Diese Abläufe heißen Threads. Hier lernst du, was sie ausmacht und warum sie auch Fehler verursachen können.

Deine Lernziele

Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Mela das Ziel für dich ab.

4 Abschnitte

Ein Prozess bezeichnet den Ablauf eines Computerprogramms. Ein Thread ist ein Ausführungsstrang (eine Ausführungsreihenfolge) in der Abarbeitung eines Programms. Er ist Teil eines Prozesses. Man nennt ihn auch Aktivitätsträger oder leichtgewichtiger Prozess. Hier geht es um den Thread im engeren Sinne, den Kernel-Thread. Das Betriebssystem steuert ihn.

Jeder Thread besitzt einen eigenen Threadkontext. Dazu gehören ein unabhängiger Registersatz mit dem Befehlszeiger (Instruction Pointer) und ein eigener Stapel (Stack), meist im gemeinsamen Adressraum des Prozesses. Es kann außerdem Betriebsmittel geben, die nur der Thread benutzen kann oder darf, der sie erzeugt hat. Ein Beispiel ist Thread-local storage.

Die Threads eines Prozesses teilen sich dagegen das Codesegment, das Datensegment und die verwendeten Dateideskriptoren.

Bei den meisten Betriebssystemen hat ein Thread einen Zustand. Aktiv (running) heißt: Der Thread führt Befehle auf der CPU aus. Bereit (ready) heißt: Der Thread ist gestoppt, damit ein anderer Thread rechnen kann. Blockiert (waiting) heißt: Der Thread wartet auf ein Ereignis, meist darauf, dass ein Betriebssystem-Dienst fertig ist. Inaktiv heißt meist: Der Thread wird gerade neu eingerichtet oder hat fertiggerechnet.

Definition

Thread

Ein Thread ist ein Ausführungsstrang in der Abarbeitung eines Programms und Teil eines Prozesses. Er besitzt einen eigenen Threadkontext.

Eigen pro ThreadGeteilt im Prozess
Registersatz mit BefehlszeigerCodesegment
Stapel (Stack), meist im gemeinsamen AdressraumDatensegment
Betriebsmittel nur für den erzeugenden Thread (möglich)Dateideskriptoren

Teste dich

LeichtWas gehört zum eigenen Threadkontext eines Threads?

Alles auf einen Blick

Thread

  • Thread

    ein Ausführungsstrang, der Teil eines Prozesses ist

  • Eigen

    Registersatz mit Befehlszeiger und Stapel

  • Geteilt

    Codesegment, Datensegment und Dateideskriptoren

  • Prozess

    gegeneinander abgeschirmt, Umschaltung braucht mehr Rechenzeit

  • Nebenläufig

    nur scheinbar oder echt gleichzeitig

  • Synchronisation

    nötig, weil gemeinsame Daten zu Konflikten führen können

Musteraufgabe · Schritt für Schritt

Zähler erhöhen: ohne und mit Sperre (erfundenes Beispiel)

  1. 1Annahme: Der gespeicherte Zähler steht auf 5. Die Threads A und B erhöhen ihn je um 1. Erwartet wird 7.
  2. 2Ohne Sperre, ungünstige Reihenfolge: A liest 5 ein, B liest ebenfalls 5 ein.
  3. 3A erhöht intern auf 6, B erhöht intern auf 6. Der gespeicherte Wert ist noch 5.
  4. 4A speichert 6, B speichert 6. Im Speicher steht 6 statt 7.
  5. 5Mit Sperre: A sperrt, liest 5, erhöht auf 6, speichert 6 und hebt die Sperre auf.
  6. 6Danach sperrt B, liest 6, erhöht auf 7 und speichert 7. Ergebnis: 7.

Fehler finden

Prüfe die Aussagen zur Nebenläufigkeit In einer Zeile steckt ein Fehler. Tippe sie an.

Lückentext

Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.

Ein Thread im Zustand ist gestoppt, um einen anderen Thread rechnen zu lassen. Im Multitasking auf einem Prozessor können Operationen nebenläufig laufen. Erst wenn A die Sperrung , gelingt sie B.

Karteikasten

Erst selbst überlegen, dann umdrehen.

Übung mit Feedback

Abschluss-Check: Thread

LeichtWie wirkt sich bei den meisten bekannten Unix-Systemen (außer Linux) ein sich falsch verhaltendes Programm aus?
MittelWas meint Parallelverarbeitung in der engeren Begriffsauffassung?
SchwerWie vermeidet eine Sperre die falsche Zählung beim gleichzeitigen Erhöhen eines gemeinsamen Werts?

Weiterlesen in Informatik