Was sind Threads (Computer)?

7 Antworten

Hallo,

Threads sind erstmal ein Konzept, um die Nebenläufigkeit bei Computern zu verbessern.

Ein Prozessor kann erstmal nur eine Sache ausführen. Wenn aber der Prozessor die ganze Zeit nur z.B. Word ausführt, dann funktioniert dein Browser nicht gleichzeitig. Für das hat man Scheduling in Betriebssystemen eingeführt. Das teilt die Prozessorzeit ein und gibt verschiedenen Prozessen gewisse Zeit zum rechnen und das schnell hintereinander, sodass es mehrere Prozesse gefühlt gleichzeitig funktionieren. Das ist also schonmal eine Methode um Prozesse quasi gleichzeitig ablaufen zu lassen. Allerdings kostet es sehr viel Zeit, die CPU vorzubereiten, sodass ein andere Prozess ausgeführt wird (Für uns geht das schnell, für den Prozessor ist das lange zeit). Denn es muss erst der Speicher vom alten Prozess gesichert werden und der vom neuen Prozess geladen werden (ganz grob gesagt).

Wenn man nun Prozesse noch unterteilt in Threads, dann kannst du dir das so vorstellen, dass dann die CPU-Zeit unter den Threads (Kernel-Threads) aufgeteilt wird. Der Vorteil liegt darin, dass sich Threads einen Speicher teilen und daher der Wechsel von Thread zu Thread innerhalb eines Prozesses sehr schnell geht! Nur ein Prozess zu Prozess wechsel ist dann natürlich wieder länger. Neben den Kernel-Threads gibt es auch noch User-Threads, aber die lassen wir hier weg (ist nicht schwer aber uninteressant). Solltest du mehrere Prozessoren (oder Cores) haben, dann kann natürlich jeder vin diesen einen Prozess ausführen.

Das sind Threads.

Allerdings hast du bestimmt schon von Multithreading bei Prozessoren gehört. Das Konzept ist im Prinzip ähnlich, nur in Hardware umgesetzt. Eine CPU hat üblicherweise kleine Speicherbausteine, in denen die wichtigsten Infos vom Prozess enthalten sind. Wenn man nun diese Speicher in doppelter Ausführung auf den Chip packt, hat man einen Prozessor, der quasi zwei Prozesse oder Threads gleichzeitig halten kann. Er verhält sich fast so schnell wie zwei Prozessoren. Also 1 Core / 2 logische Cores. Denn statt ewig den Prozessspeicher auszutauschen hält einer Speicher ja diesen schon und der Prozessor kann direkt auslesen, während z.B. der andere Speicher mit neuem Prozess gefüllt wird oder wartet, bis die CPU bei ihm weiterrechnet.

Woher ich das weiß:Studium / Ausbildung

3Zociety4 
Beitragsersteller
 06.06.2020, 18:28

Danke✌🏽

CPUs können Virtuelle Kerne erstellen um die Daten effizienter zu verarbeiten.

Eine CPU mit 4 Kernen die Hyperthreading/SMT unterstützt hätte dann 4 echte Kerne und 4 Virtuelle Kerne.

Threads sind Handlungsabläufe eines Prozesses. Stell dir vor ein Prozess will einen Kuchen backen. Während der Ofen vorheizt (Thread 1) steht der Prozess meistens vor der Schale und mischt die Zutaten zusammen. (Thread 0, also Hauptthread).

Es ist im Prinzip ein Konzept um eine Aufgabe in mehrere Teilaufgaben zu unterteilen, damit der Prozessor mit den kleineren Häppchen schneller fertig wird.


3Zociety4 
Beitragsersteller
 06.06.2020, 18:29

Danke ✌🏽✌🏽

Mosel2801  06.06.2020, 14:50

Achja, Woher ich das weiß: Studium Informatik.

Stelle dir das so vor dein Computer ist ein Großraum Büro

Der RAM ist die Größe des Aktenschranks für alle Mitarbeiter

Dann gibt es noch kleinere Ablagen (Caches) der nächstgelegene auf deinem Schreibtisch ist der schnellste und kleinste der L1 Cache.

Jeder Kern stellt einen Mitarbeiter dar der die Papiere bearbeitet, manchmal muss man die wieder weg legen und kurz darauf warten bis man weiter arbeiten kann. (1 thread)

Dann gibt es noch Simultane Multi Threading (SMT) bzw Hyperrhreading (HT) der nutzt diese Pausen um nochmal schnell einen anderen Vorhang zu bearbeiten, so kann 1 Mitarbeiter (Kern) 2 Aufgaben (Threads) bearbeiten.


3Zociety4 
Beitragsersteller
 06.06.2020, 18:29

Dankeschön!

Meines Wissens nach sind das virtuelle Kerne der CPU.

Also meine hat z.B. 6 Kerne und 12 Threads.


Mosel2801  06.06.2020, 14:49

Das sagt nur aus wie viele Threads deine CPU gleichzeitig fressen kann. Ein Thread selbst ist eine Liste aus Befehlen für die CPU. Ein Programm kann mehrere dieser Listen haben. Ein Game z.b. hat eine Liste für die "KIs" der NPCs, und eine für die Berechnung der Grafik.

In Java z.b. kann man einen solchen mit "class MyThread extends Thread" anlegen, und während das Programm läuft mit: (new MyThread()).start() aktivieren. Dann verbraucht dein Programm 2 Threads von der CPU. Aber keine Sorge, der Scheduler wechselt die nach einer bestimmen Zeit aus.

Hattet ihr schon das Fach Betriebsysteme? Da wird das Thema breitgetreten.

Sören Stabenow  06.06.2020, 14:50
@Mosel2801

Als Fach gibt es das nicht, hatten wir aber - theoretisch - schon. Dank Corona auch nur theoretisch. ^^

Sören Stabenow  06.06.2020, 14:53
@Mosel2801

^^

Aber bzgl. Betriebssysteme gab es auch nur was von Cisco. Wir haben zwar auch Online-Material dazu, aber das wurde nie angefasst. Weder im Unterricht, noch online.

Sören Stabenow  06.06.2020, 14:54
@Mosel2801

Aber der Lehrer ist auch etwas... anstrengend. Freue mich schon aufs nächste Jahr, wenn der Lehrer gewechselt wird. ^^