Ein Thread ist ein innerhalb eines Prozesses eingeplanter Ausführungsfluss. Jeder laufende Prozess besitzt mindestens einen Thread, und ein mehrthreadiger Prozess besitzt mehrere Abläufe, die gleichzeitig Fortschritte machen können.
Prozessauslastung · Lektion 3
Prozess-Threads
Lerne, welche Prozessressourcen Linux-Threads gemeinsam nutzen und wie du sie mit ps untersuchst.
Prozesse und Threads
Threads eines Prozesses nutzen Ressourcen wie den virtuellen Adressraum und offene Dateideskriptoren gemeinsam. Jeder Thread besitzt dennoch einen eigenen Ausführungszustand einschließlich Registern und Stack. Das gemeinsame Nutzen ermöglicht effiziente Kommunikation, bedeutet aber auch, dass eine nicht synchronisierte Änderung eines Threads die anderen beeinflussen kann.
Getrennte Prozesse besitzen normalerweise unterschiedliche Adressräume und kommunizieren über ausdrückliche Interprozessmechanismen. Keine der beiden Bauweisen ist automatisch schneller oder sicherer; Arbeitslast und Implementierung bestimmen den Kompromiss.
Welche Ressource wird normalerweise von Threads desselben Prozesses gemeinsam genutzt?
Thread-Kennungen
Linux stellt jeden Thread als ein planbares Task mit eigener Thread-ID dar. Die ID des Threadgruppenleiters wird gewöhnlich als Prozess-ID angezeigt, während alle Mitglieder eine Threadgruppen-ID gemeinsam haben. Werkzeuge verwenden Bezeichnungen wie PID, TID, LWP und SPID; prüfe die Felddefinitionen des Werkzeugs, statt anzunehmen, dass jede Bezeichnung dasselbe bedeutet.
Was verwaltet jeder Thread unabhängig?
Threads mit ps auflisten
Verwende ausdrückliche Ausgabefelder, um mehrdeutige Standarddarstellungen zu vermeiden:
$ ps -eLo pid,tid,psr,stat,comm
Bei ps aus procps zeigt -L Threads an, und -e wählt alle Prozesse aus. pid bezeichnet die Threadgruppe, tid einen einzelnen Thread, psr die CPU, auf der er zuletzt lief, und stat seinen Zustand. So untersuchst du einen einzelnen Prozess:
$ ps -L -p 1234 -o pid,tid,stat,pcpu,comm
Threadauflistungen sind Momentaufnahmen. Ein Thread kann unmittelbar danach enden oder seinen Zustand ändern.
Welcher Befehl listet die Threads von PID 1234 mit ausdrücklichen Feldern auf?
Threadaktivität interpretieren
Eine hohe CPU-Auslastung eines einzelnen Threads kann durch einen prozessweiten Mittelwert verborgen werden. Verknüpfe CPU-Stichproben auf Threadebene mit Anwendungsprotokollen, Stacktraces und Profiling-Werkzeugen. Hänge keine Debugger an Produktions-Tasks und sende ihnen keine Signale, ohne die Auswirkungen von Pausen, Berechtigungen und Diensten zu verstehen.
Warum solltest du eine Threadauflistung von ps nicht als dauerhaften Zustand betrachten?
Lektion abgeschlossen
Sie haben Prozess-Threads abgeschlossen
Du kannst nun Prozessressourcen von Ausführungszuständen einzelner Threads unterscheiden.
Erkenne, dass jeder Prozess mindestens einen Thread besitzt.
Ermittle Ressourcen, die Threads eines Prozesses gemeinsam nutzen.
Liste mit
ps -Lausdrückliche Prozess- und Thread-IDs auf.Behandle Threadausgaben als Momentaufnahme und verknüpfe sie mit weiteren Belegen.
Lernfortschritt speichern
Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.
Kostenloses Konto erstellen