Unter Linux bezieht sich Thread auf eine Ausführungsroute innerhalb eines Programms, also auf eine Steuerungssequenz innerhalb eines Prozesses. Alle Prozesse verfügen über mindestens einen Ausführungsthread. Thread ist die kleinste Einheit der Programmausführung. Threads teilen Prozessdaten, verfügen aber auch über einen eigenen Teil der Daten.
Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Dell G3-Computer.
Das Konzept der Linux-Threads
Was ist ein Thread?
- Eine Ausführungsroute in einem Programm wird als Thread bezeichnet. Eine genauere Definition lautet: Ein Thread ist „eine Steuersequenz innerhalb eines Prozesses“.
- Jeder Prozess hat mindestens einen Ausführungsthread.
Prozess und Thread
- Prozess ist die Grundeinheit der Ressourcenzuweisung und des Wettbewerbs.
- Thread ist die kleinste Einheit der Programmausführung
Thread-ID- Eine Reihe von Registern: IP, PSW, Stapelzeiger
- Stack
- Errno
- Signalstatus
- Priorität
-
-
Der Unterschied zwischen Fork und dem Erstellen eines neuen Threads
Wenn ein Prozess einen Fork ausführt, wird beim Aufruf eine neue Kopie des Prozesses erstellt. Der neue Prozess verfügt über eigene Variablen und eine eigene PID. Die Laufzeit dieses neuen Prozesses ist unabhängig; er wird nahezu unabhängig von dem Prozess ausgeführt, der ihn erstellt hat.
Beim Erstellen eines neuen Threads in einem Prozess verfügt der neue Ausführungsprozess über einen eigenen Stapel (und damit über eigene lokale Variablen), teilt jedoch globale Variablen, Dateideskriptoren und Signalhandler mit seinem Ersteller und dem aktuellen Arbeitsverzeichnis Status. -
-
Vorteile von Threads
Die Kosten für die Erstellung eines neuen Threads sind viel geringer als für die Erstellung eines neuen Prozesses
Im Vergleich zum Wechseln zwischen Prozessen erfordert der Wechsel zwischen Threads viel weniger Arbeit durch das Betriebssystem- Threads beanspruchen viel weniger Ressourcen als Prozesse
- Können die parallele Anzahl von Multiprozessoren voll ausnutzen
- Während das Programm auf das Ende langsamer E/A-Vorgänge wartet, kann es andere Rechenaufgaben ausführen
- Rechenintensive Anwendungen der Reihe nach Um auf Multiprozessorsystemen ausgeführt zu werden, zerlegen Sie Berechnungen in mehrere Threads, um
- I/O-intensive Anwendungen zu implementieren. Um das System zu verbessern, überlappen Sie I/O-Vorgänge. Threads können gleichzeitig auf verschiedene E/A-Vorgänge warten
-
-
Nachteile von Threads
Leistungsverlust
Ein rechenintensiver Thread, der selten durch externe Ereignisse blockiert wird, kann oft nicht denselben Prozessor mit anderen teilen Threads. Wenn die Anzahl der rechenintensiven Threads die verfügbaren Prozessoren übersteigt, kann es zu einem großen Leistungsverlust kommen, wobei sich der Leistungsverlust auf die Hinzufügung von zusätzlichem Synchronisierungs- und Planungsaufwand bezieht, während die verfügbaren Ressourcen unverändert bleiben. - Reduzierte Robustheit
- Das Schreiben von Multithreads erfordert umfassendere und tiefergehende Überlegungen. In einem Multithread-Programm besteht eine hohe Wahrscheinlichkeit von Problemen, die durch geringfügige Abweichungen bei der Zeitzuweisung oder der gemeinsamen Nutzung von Variablen verursacht werden, die nicht gemeinsam genutzt werden sollten. Mit anderen Worten: Es besteht ein Mangel an Schutz zwischen Threads.
- Mangelnde Zugriffskontrolle
- Der Prozess ist die grundlegende Granularität der Zugriffskontrolle. Der Aufruf bestimmter Betriebssystemfunktionen in einem Thread wirkt sich auf den gesamten Prozess aus.
- Der Programmierschwierigkeitsgrad nimmt zu.
- Das Schreiben und Debuggen eines Multithread-Programms ist viel schwieriger als ein Single-Thread-Programm Anwendungen. Der Hauptzeitunterschied zwischen diesen Modellen besteht darin, dass beim Wettbewerb um Systemressourcen (insbesondere CPU-Zeit) der Thread-Planungskonfliktbereich unterschiedlich ist
- Prozesskonfliktbereich: Jeder Thread befindet sich im selben Prozess. Konkurrieren Sie um „geplante CPU-Zeit“ (aber). nicht direkt mit Threads in anderen Prozessen konkurrieren).
- Systemkonfliktbereich: Threads konkurrieren direkt mit anderen Threads innerhalb des „Systembereichs“.
Verwandte Empfehlungen: „Linux-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonWas ist ein Thread unter Linux?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!