Foundationপ্রথম নীতি থেকে
LEVEL 4 · Operating Systems

Thread

থ্রেড

একই address space ভাগ করা একটা execution context। নিজস্ব stack, register আর TLS থাকে; heap, global আর file descriptor শেয়ার করে।

কী শেয়ার হয় আর কী হয় না:

শেয়ার করাআলাদা
text, heap, globalstack
file descriptor tableregister set
signal handlerTLS, errno
working directorykernel stack

Linux-এর দৃষ্টিতে thread আর process-এর পার্থক্য প্রায় নেই। দুটোই একটা task_struct; পার্থক্য শুধু clone()-এর flag-এ:

clone(CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_THREAD, ...)

CLONE_VM না দিলে সেটা process, দিলে thread। একই syscall।

1:1 বনাম M:N — Linux NPTL-এ প্রতিটা user thread একটা kernel thread (1:1)। আগের LinuxThreads আর কিছু ভাষার green thread (Go-র goroutine, Java-র virtual thread) M:N — বহু user thread কম kernel thread-এর উপর, user space-এ scheduling করে।

ps -eLf | head              # L = thread দেখায়
ls /proc/<pid>/task/        # প্রতিটা thread একটা directory