Saya memiliki pertanyaan terkait dengan implementasi utas di Linux.
Linux tidak memiliki dukungan utas eksplisit. Di ruang pengguna, kami mungkin menggunakan perpustakaan utas (seperti NPTL) untuk membuat utas. Sekarang jika kita menggunakan NPTL, ini mendukung pemetaan 1: 1.
Kernel akan menggunakan clone()
fungsi tersebut untuk mengimplementasikan utas.
Misalkan saya telah membuat 4 utas. Maka itu berarti:
- Akan ada 4
task_struct
. - Di dalam
task_struct
, akan ada ketentuan untuk berbagi sumber daya sesuai argumen untuk kloning(CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND)
.
Sekarang saya memiliki pertanyaan berikut:
- Apakah 4 utas akan memiliki PID yang sama? Jika seseorang dapat menjelaskan, bagaimana PID dibagikan.
- Bagaimana berbagai utas diidentifikasi; apakah ada konsep TID (thread ID)?
getpid()
mengembalikan tgid:,asmlinkage long sys_getpid(void) { return current->tgid;}
seperti yang ditunjukkan di www.makelinux.com/