GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie unterscheidet Linux Threads von untergeordneten Prozessen?

Von einem task_struct Perspektive haben die Threads eines Prozesses denselben Thread-Gruppenleiter (group_leader in task_struct ), während untergeordnete Prozesse einen anderen Thread-Gruppenleiter haben (jeder einzelne untergeordnete Prozess).

Diese Informationen werden dem Userspace über zugänglich gemacht die /proc Dateisystem. Sie können Eltern und Kinder verfolgen, indem Sie auf ppid schauen Feld in /proc/${pid}/stat oder .../status (dies ergibt die Eltern-PID); Sie können Threads verfolgen, indem Sie sich tgid ansehen Feld in .../status (Dies ergibt die Thread-Gruppen-ID, die auch die PID des Gruppenleiters ist). Die Threads eines Prozesses werden im /proc/${pid}/task sichtbar gemacht Verzeichnis:Jeder Thread erhält sein eigenes Unterverzeichnis. (Jeder Prozess hat mindestens einen Thread.)

In der Praxis Programme, die ihre eigenen Threads im Auge behalten möchten würden sich auf APIs verlassen, die von der von ihnen verwendeten Threading-Bibliothek bereitgestellt werden, anstatt betriebssystemspezifische Informationen zu verwenden. Typischerweise auf Unix-ähnlichen Systemen bedeutet das die Verwendung von pthreads.


  1. Dies führt den top aus Befehl mit einigen zusätzlichen Optionen:

    top -H -b -n 1
    
    • Die -H Das Argument weist top an, jeden einzelnen Thread anzuzeigen. Normalerweise fasst top alle Threads unter ihrem übergeordneten Prozess zusammen.
    • Die -b Das Argument lässt top im Stapelmodus laufen – die Informationen werden gesammelt, angezeigt und dann auf stdout abgelegt, anstatt in einem interaktiven Modus ausgeführt und die angezeigten Daten aktualisiert zu werden.
    • Mit dem -b Option, der Benutzer muss top mitteilen, wie oft er ausgeführt werden soll, dies geschieht mit -n Argument und ein abschließendes Argument, wie oft ausgeführt werden soll.

    Also top -H -b -n 1 weist das System an, „Top auszuführen, einzelne Threads anzuzeigen, im Stapelmodus auszuführen und nur einmal auszuführen“.

  2. Die ps Befehl meldet einen Schnappschuss der aktuell laufenden Prozesse.

    ps -eLf
    

    Die -eLf Argument (kann als -e -L -f verwendet werden auch) gliedert sich wie folgt:

    • e sagt ps um alle Prozesse anzuzeigen, unabhängig davon, wem sie gehören oder in welchem ​​Status sie sich gerade befinden – aktiv, schlafend, pausiert, auf I/O wartend usw.
    • L sagt ps um einzelne Threads anzuzeigen
    • der f sagt ps um die Ausgabe als vollformatige Auflistung zu formatieren, und in Verbindung mit L Argument werden die Spalten NLWP (Anzahl der Threads) und LWP (Thread-ID) zur Ausgabe hinzugefügt.

Linux
  1. Linux – Wie führe ich einen Bootloader von Linux aus?

  2. So beenden Sie laufende Prozesse in Linux

  3. Wie kann man unter Linux Binärdateien von Textdateien unterscheiden?

  4. Wie funktioniert copy_from_user aus dem Linux-Kernel intern?

  5. Wie weist Linux Bandbreite zwischen Prozessen zu?

So erstellen Sie eine Montage aus Bildern unter Linux

So greifen Sie von Windows 10 auf Linux-Partitionen zu

So passen Sie den Linux-Befehl top an

So entfernen Sie einen Befehl aus dem Verlauf in Linux

So installieren Sie Software von der Quelle in Linux

So finden Sie die am häufigsten ausgeführten Prozesse nach Speicher- und CPU-Auslastung in Linux