চারটি থ্রেডের একই পিআইডি থাকবে তবে কেবল উপরের থেকে দেখা হবে viewed কি আপনি (ক ব্যবহারকারী হিসাবে) একটি PID কল কি কার্নেল (নীচের থেকে খুঁজছি) একটি PID আহ্বান নয়।
ইন কার্নেল, প্রতিটি থ্রেড এটা নিজস্ব আইডি, (যদিও এটি সম্ভবত এই একটি TID, বা থ্রেড আইডি কলে আরো বেশি জানার জন্য হবে) এবং তারা একটি TGID (থ্রেড গ্রুপ আইডি) আছে একটি PID নামক থ্রেডের PID, থাকে যে পুরো প্রক্রিয়া শুরু।
সরলতার সাথে, যখন একটি নতুন প্রক্রিয়া তৈরি করা হয়, এটি একটি থ্রেড হিসাবে উপস্থিত হয় যেখানে পিআইডি এবং টিজিআইডি উভয়ই একই (নতুন) সংখ্যা।
যখন কোনও থ্রেড অন্য থ্রেড শুরু করে , তখন শুরু হওয়া থ্রেডটি তার নিজস্ব পিআইডি পায় (যাতে শিডিয়ুলার এটি স্বাধীনভাবে নির্ধারণ করতে পারে) তবে এটি মূল থ্রেড থেকে টিজিআইডি উত্তরাধিকার সূত্রে প্রাপ্ত হয়।
এইভাবে, কার্নেল সুখের সাথে থ্রেডগুলি নির্ধারণ করতে পারে যে তারা কোন প্রক্রিয়াধীন তার থেকে পৃথক, যখন প্রক্রিয়াগুলি (থ্রেড গ্রুপ আইডি) আপনাকে জানানো হয়।
নিম্নলিখিত থ্রেডের শ্রেণিবিন্যাস সাহায্য করতে পারে (ক) :
USER VIEW
<-- PID 43 --> <----------------- PID 42 ----------------->
+---------+
| process |
_| pid=42 |_
_/ | tgid=42 | \_ (new thread) _
_ (fork) _/ +---------+ \
/ +---------+
+---------+ | process |
| process | | pid=44 |
| pid=43 | | tgid=42 |
| tgid=43 | +---------+
+---------+
<-- PID 43 --> <--------- PID 42 --------> <--- PID 44 --->
KERNEL VIEW
আপনি দেখতে পাচ্ছেন যে একটি নতুন প্রক্রিয়া শুরু করার (বাম দিকে) আপনাকে একটি নতুন পিআইডি এবং একটি নতুন টিজিআইডি (উভয় একই মানে সেট করা) দেয়, যখন একটি নতুন থ্রেড শুরু করার সময় (ডানদিকে) একই রক্ষণাবেক্ষণের সময় আপনাকে একটি নতুন পিআইডি দেয় এটি শুরু হওয়া থ্রেড হিসাবে টিজিআইডি।
(ক) আমার চিত্তাকর্ষক গ্রাফিকাল দক্ষতা দেখে বিস্মিত হওয়া :-)
getpid()
আয় tgid:asmlinkage long sys_getpid(void) { return current->tgid;}
, যেমন দেখানো www.makelinux.com/