जवाबों:
ज़ोंबी प्रक्रियाएं पहले से ही मृत हैं। आप उन्हें मार नहीं सकते। kill
आदेश या सिस्टम कॉल एक ज़ोंबी प्रक्रिया पर कोई प्रभाव नहीं है। (आप एक ज़ोंबी के साथ दूर जा सकते हैं kill
, लेकिन आपको ज़ोंबी को शूट करना होगा, ज़ोंबी को नहीं, जैसा कि हम एक मिनट में देखेंगे।)
एक ज़ोंबी प्रक्रिया वास्तव में एक प्रक्रिया नहीं है, यह केवल प्रक्रिया तालिका में एक प्रविष्टि है। ज़ोंबी प्रक्रिया से जुड़े कोई अन्य संसाधन नहीं हैं: इसमें कोई मेमोरी या कोई रनिंग कोड नहीं है, यह किसी भी फाइल को खुला नहीं रखता है, आदि।
जब एक प्रक्रिया मर जाती है, तो अन्य सभी संसाधनों को साफ करने के बाद जाने की आखिरी चीज, प्रक्रिया तालिका में प्रविष्टि है। यह प्रविष्टि चारों ओर रखी जाती है, एक ज़ोंबी का निर्माण करते हुए, माता-पिता की प्रक्रिया को बच्चे की निकास स्थिति को ट्रैक करने की अनुमति देता है। माता-पिता wait
syscalls के परिवार में से एक को बुलाकर बाहर निकलने की स्थिति पढ़ते हैं; इस बिंदु पर, ज़ोंबी गायब हो जाता है। कॉलिंग wait
है करने के लिए कहा काटते मृत जा रहा है, लेकिन किसी तरह से अभी भी पूरी तरह से पुनर्जन्म में संसाधित एक ज़ोंबी के रूपक का विस्तार बच्चे,। माता-पिता यह भी संकेत कर सकते हैं कि यह परवाह नहीं करता है (SIGCHLD सिग्नल की अनदेखी करके या ध्वज के sigaction
साथ कॉल करके SA_NOCLDWAIT
), जिस स्थिति में बच्चे के मरने पर प्रक्रिया तालिका में प्रविष्टि तुरंत हटा दी जाती है।
इस प्रकार एक ज़ोंबी केवल तब मौजूद होता है जब एक प्रक्रिया मर गई हो और उसके माता-पिता ने wait
अभी तक फोन नहीं किया हो। यह स्थिति केवल तब तक बनी रह सकती है जब तक कि अभिभावक अभी भी चल रहे हों। यदि माता-पिता बच्चे की मृत्यु से पहले मर जाते हैं या बच्चे की स्थिति को पढ़े बिना मर जाते हैं, तो ज़ोंबी की मूल प्रक्रिया PID 1 के साथ प्रक्रिया में सेट हो जाती है, जो कि है init
। नौकरियों में से एक को एक लूप में init
कॉल wait
करना है और इस प्रकार अपने माता-पिता द्वारा पीछे छोड़ दी गई किसी भी ज़ोंबी प्रक्रिया को काटना है।
आप kill
एक ज़ोंबी प्रक्रिया नहीं है, क्योंकि यह पहले से ही मर चुका है।
ज़ोंबी प्रक्रियाओं को wait
उनके माता-पिता द्वारा संपादित किया जाना है , ताकि उनकी निकास स्थिति एकत्र की जा सके।
केवल "अंतर्निहित क्लीन-अप तंत्र" लिनक्स में है, इस मामले के लिए काम करता है कि कोई भी अभिभावक-प्रक्रिया अपने बच्चों के निकास की स्थिति को इकट्ठा करने से पहले ही मर जाती है। इस मामले में, प्रत्येक बच्चे को init
प्रक्रिया द्वारा विरासत में मिला है , जो wait
बच्चे पर होगा , अपनी निकास स्थिति को इकट्ठा करेगा और प्रक्रिया तालिका में इसके प्रवेश को हटा देगा।
जैसे ही एक प्रक्रिया के माता-पिता की मृत्यु हो जाती है, यह प्रक्रिया एक अनाथ हो जाती है - यह एक ज़ोंबी है या नहीं, इसकी अवहेलना। क्या होता है अनाथ? उन्हें एक नया अभिभावक मिलता है, जिसे बुलाया जाता है init
। प्रत्येक अनाथ पर init
होगा wait
कि यह एकत्र किया है, इस प्रकार अनाथ (कि यह भी एक ज़ोंबी हो सकता है) काटना है।
नहीं, लाश के लिए कोई अंतर्निहित सफाई तंत्र नहीं है। उनके माता-पिता के मारे जाने के बाद लाश ज़ोंबी स्वर्ग में जाती है। तब तक, ओएस उन्हें माता-पिता से बाहर निकलने की स्थिति वापस करने के लिए रखता है।
init
प्रक्रिया समाप्त हो जाती है और इसे कॉल wait
करेंगे
init
को नहीं मारता है। यह केवल अपने बच्चों पर अपनी स्थिति एकत्र करने के लिए है।wait