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
topcomando con alcune opzioni extra:top -H -b -n 1- Il
-HL'argomento indica a top di visualizzare ogni singolo thread. Normalmente top riassume tutti i thread sotto il loro processo padre. - Il
-bL'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
-bopzione, l'utente deve dire a top quante volte eseguire, questo viene fatto con il-nargomento e un argomento finale con quante volte eseguire.
Quindi
top -H -b -n 1indica al sistema di "eseguire top, visualizzare singoli thread, eseguire in modalità batch ed eseguire solo una volta". - Il
-
Il
psIl comando riporta un'istantanea dei processi attualmente in esecuzione.ps -eLfIl
-eLfargomento (può essere usato come-e -L -fpure) si suddivide come segue:edice apsper visualizzare tutti i processi indipendentemente da chi li possiede o dal loro stato attuale:attivo, dormiente, in pausa, in attesa di I/O, ecc.Ldice apsper mostrare i singoli thread- il
fdice apsper formattare l'output come elenco in formato completo e insieme aLargomento le colonne NLWP (numero di thread) e LWP (ID thread) vengono aggiunte all'output.