2013-08-01 7 views
15

मैं जानना चाहता था कि kthread क्या है और यह कोई स्मृति नहीं लेता है और इसमें कोई खुली फ़ाइलें नहीं हैं। मैंने कुछ कोड लिखा है जो वर्तमान में चल रहे प्रक्रियाओं के पीआईडी ​​को मूल बच्चे के पेड़ प्रारूप में मुद्रित करेगा जैसे कि वीएमजेड, आरएसएस, थ्रेड्स, ओपनफाइल जैसी कुछ अतिरिक्त जानकारी। kthreadd नामक पीआईडी ​​2 के सभी बच्चों में /proc/[pid]/status फ़ाइल में VmSize और VmRSS नहीं था। /proc/[pid]/fd में कोई भी खुली फ़ाइलें नहीं थीं।kthreadd प्रक्रिया और बच्चों क्या है और यह init और बच्चों से अलग कैसे है

इन प्रक्रियाओं में क्या हैं, वे इनिट (पीआईडी ​​1) द्वारा उत्पन्न सामान्य प्रक्रियाओं के साथ अलग कैसे हैं। मैंने पढ़ा (एक पुरानी किताब में) कि स्वैपर पीआईडी ​​1 में प्रवेश करेगा और अन्य सभी प्रक्रिया पीआईडी ​​के बच्चे हैं 1. निश्चित रूप से इसके पीछे एक अलग वास्तुकला है (लिनक्स कर्नेल 3.7.10.1-16) जो मुझे नहीं पता, इसलिए एक और सवाल यह है कि क्यों पीआईडी ​​2 पीआईडी ​​0 का बच्चा है और पीआईडी ​​1 का बच्चा नहीं है।

+0

को पीआईडी ​​अवर की अनुमति दी जाती मुझे लगता है कि यह आपकी मदद कर सकता है .... http: // यूनिक्स। stackexchange.com/questions/13290/init-process-ancestor-of-all-processes – Rex

+0

unix.stackexchange में यह उत्तर विस्तार से उत्तर नहीं देता है। मुझे और अधिक विस्तृत जानकारी की आवश्यकता है। – phoxis

उत्तर

17

कर्नेल थ्रेड इनिट के बच्चे नहीं हैं क्योंकि उन्हें सभी उपयोगकर्तास्थान प्रक्रियाओं से पहले शुरू किया जा सकता है।

आमतौर पर हार्डवेयर का प्रबंधन करने के लिए उपयोग किया जाता है, यही कारण है कि वे सीधे कर्नेल द्वारा संभाले जाते हैं और उच्च प्राथमिकता रखते हैं।

init के बच्चे होने की प्रक्रिया के लिए इसे init से क्लोन करने की आवश्यकता है और Kthreads इसलिए नहीं है कि उनके माता-पिता पीआईडी ​​0 "नो-वन" है।

सभी यूज़रस्पेस प्रक्रियाओं आम तौर पर 1000 तक एक पीआईडी ​​बेहतर है, केवल कर्नेल धागे 1000

+7

उत्तर के लिए धन्यवाद, लेकिन क्या आप मुझे कुछ दस्तावेज के लिए कुछ संदर्भ दे सकते हैं? – phoxis

संबंधित मुद्दे