GNU/Linux >> Linux Esercitazione >  >> Linux

In che modo Linux distingue i thread dai processi figlio?

Da un task_struct prospettiva, i thread di un processo hanno lo stesso capogruppo di thread (group_leader in task_struct ), mentre i processi figli hanno un capogruppo di thread diverso (ogni singolo processo figlio).

Queste informazioni sono esposte allo spazio utente tramite il /proc sistema di file. Puoi rintracciare genitori e figli guardando il ppid campo in /proc/${pid}/stat o .../status (questo dà il pid genitore); puoi rintracciare i thread guardando il tgid campo in .../status (questo fornisce l'id del gruppo di thread, che è anche il pid del leader del gruppo). I thread di un processo sono resi visibili nel /proc/${pid}/task directory:ogni thread ottiene la propria sottodirectory. (Ogni processo ha almeno un thread.)

In pratica, i programmi che desiderano tenere traccia dei propri thread farebbero affidamento sulle API fornite dalla libreria di threading che stanno utilizzando, invece di utilizzare informazioni specifiche del sistema operativo. Tipicamente su sistemi Unix-like ciò significa usare pthreads.


  1. Questo esegue il top comando con alcune opzioni extra:

    top -H -b -n 1
    
    • Il -H L'argomento indica a top di visualizzare ogni singolo thread. Normalmente top riassume tutti i thread sotto il loro processo padre.
    • Il -b L'argomento fa in modo che top venga eseguito in modalità batch:le informazioni vengono raccolte, visualizzate e quindi scaricate su stdout invece di essere eseguite in modalità interattiva e aggiornare i dati visualizzati.
    • Con il -b opzione, l'utente deve dire a top quante volte eseguire, questo viene fatto con il -n argomento e un argomento finale con quante volte eseguire.

    Quindi top -H -b -n 1 indica al sistema di "eseguire top, visualizzare singoli thread, eseguire in modalità batch ed eseguire solo una volta".

  2. Il ps Il comando riporta un'istantanea dei processi attualmente in esecuzione.

    ps -eLf
    

    Il -eLf argomento (può essere usato come -e -L -f pure) si suddivide come segue:

    • e dice a ps per visualizzare tutti i processi indipendentemente da chi li possiede o dal loro stato attuale:attivo, dormiente, in pausa, in attesa di I/O, ecc.
    • L dice a ps per mostrare i singoli thread
    • il f dice a ps per formattare l'output come elenco in formato completo e insieme a L argomento le colonne NLWP (numero di thread) e LWP (ID thread) vengono aggiunte all'output.

Linux
  1. Linux:come eseguire un bootloader da Linux?

  2. Linux:in che modo il kernel Linux pianifica la CPU, tra processi/thread dello spazio utente e attività/lavori del kernel?

  3. Linux:in che modo Node.js / Il modulo cluster passa le nuove connessioni dal processo principale / principale ai processi secondari?

  4. Come eliminare i processi in esecuzione in Linux

  5. Come funziona internamente copy_from_user dal kernel di Linux?

Come creare un montaggio da immagini in Linux

Come accedere alle partizioni Linux da Windows 10

Come personalizzare il comando top di Linux

Come rimuovere un comando dalla cronologia in Linux

Come installare il software dal sorgente in Linux

Come trovare i migliori processi in esecuzione in base all'utilizzo di memoria e CPU in Linux