Dokumentasinya bisa sangat membingungkan, jadi inilah model Linux " asli ":
- di dalam kernel Linux, sesuatu yang dapat dijalankan (& dijadwalkan) disebut "proses",
- setiap proses memiliki ID Proses unik (PID) sistem, dan ID Grup Thread (TGID),
- proses "normal" memiliki PID = TGID dan tidak ada proses lain yang membagikan nilai TGID ini,
- proses "berulir" adalah proses yang nilai TGID dibagi oleh proses lain,
- beberapa proses berbagi TGID yang sama juga berbagi, setidaknya, ruang memori dan penangan sinyal yang sama (kadang-kadang lebih),
- jika proses "berulir" memiliki PID = TGID, itu dapat disebut "utas utama",
- menelepon
getpid()
dari proses apa pun akan mengembalikan TGID (= "utas utama" PID),
- menelepon
gettid()
dari proses apa pun akan mengembalikan PID (!),
- segala jenis proses dapat dibuat dengan
clone(2)
system call,
- nama numerik folder Anda bisa daftar dengan
ls /proc
sebagai /proc/NUMBER
yang TGIDs,
- nama numerik folder
/proc/TGID/task
seperti halnya /proc/TGID/task/NUMBER
PID,
- meskipun Anda tidak melihat setiap PID yang ada
ls /proc
, Anda masih bisa melakukannya cd /proc/any_PID
.
Kesimpulan : dari sudut pandang kernel, hanya proses yang ada, masing-masing memiliki PID uniknya sendiri, dan yang disebut utas hanyalah jenis proses yang berbeda.
Catatan: implementasi konsep "utas" di Linux telah menyebabkan kebingungan kosa kata, dan jika getpid()
berbohong kepada Anda tidak melakukan apa yang Anda pikirkan, itu karena perilakunya mengikuti kompatibilitas POSIX (utas seharusnya berbagi PID umum) .