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.
-
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". - Il
-
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 aps
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 aps
per mostrare i singoli thread- il
f
dice aps
per formattare l'output come elenco in formato completo e insieme aL
argomento le colonne NLWP (numero di thread) e LWP (ID thread) vengono aggiunte all'output.