संकेत मिला है यदि मैं गलत हूं तो कृपया मुझे सही करें।प्रक्रिया को कैसे पता चलता है कि इसे
जहाँ तक मुझे पता है, संकेत पीढ़ी और संकेत वितरण 2 अलग बातें हैं: यहाँ संकेतों के बारे में मेरी समझ है। आदेश में एक संकेत उत्पन्न करने के लिए, ओएस बस एक प्रक्रिया के प्रक्रिया नियंत्रण ब्लॉक (पीसीबी) में बनाए रखा एक bitarray में बिट सेट। प्रत्येक बिट एक विशेष संकेत, और से मेल खाती है जब एक सा सेट किया गया है, इसका मतलब है संकेत बिट करने के लिए इसी है लंबित है।
डिलिवरी: उपयोगकर्ता मोड में एक प्रक्रिया के लिए नियंत्रण स्थानांतरित वापस करने से पहले, कर्नेल हमेशा लंबित संकेत इस प्रक्रिया के लिए जाँच करता है। यह चेक कर्नेल अंतरिक्ष में होने चाहिए क्योंकि कुछ संकेत एक प्रक्रिया के द्वारा कभी नहीं अनदेखा किया जा सकता - अर्थात् SIGSTOP और SIGKILL।
तो क्या इसका मतलब यह है कि सिग्नल केवल उस प्रक्रिया में वितरित किए जा सकते हैं जब कर्नेल उस प्रक्रिया को शेड्यूल कर रहा है यानी इसे सीपीयू आवंटित कर रहा है? क्या प्रक्रिया वास्तव में सीपीयू पर निष्पादित होने पर संकेत प्राप्त कर सकती है? यदि हां, तो यह कैसे संभव है कि प्रक्रिया को कैसे पता चल जाता है कि इसके लिए एक सिग्नल लंबित है (चूंकि यह उपयोगकर्ता मोड में निष्पादित हो रहा है और पीसीबी तक नहीं पहुंच सकता है)
कहें कि बहु प्रोसेसर मशीन है और इसलिए असली है समांतरता यानी कई प्रक्रियाएं एक ही समय में निष्पादित की जा रही हैं। प्रक्रिया पी 1 सीपीयू 1 पर निष्पादित कर रहा है और प्रक्रिया पी 2 सीपीयू 2 पर निष्पादित कर रही है और अब पी 2 (पर्याप्त विशेषाधिकार रखने) को पी 1 को संसाधित करने के लिए संकेत भेजता है। क्या यह सिग्नल अभी पी 1 पर पहुंचाया जाएगा या पी 1 के बाद इसे किसी कारण से सीपीयू छोड़ने के बाद वितरित किया जाएगा और फिर कुछ समय बाद कर्नेल द्वारा फिर से निर्धारित किया जाएगा और फिर यह सिग्नल पी 1 को संसाधित करने के लिए वितरित किया जाएगा।
कृपया नहीं कहता इस सवाल का कार्यान्वयन निर्भर है। यदि आपको लगता है कि सही उत्तर कार्यान्वयन परिभाषित किया गया है तो मैं लिनक्स, फ्रीबीएसडी या किसी भी * निक्स प्लेटफ़ॉर्म में उत्तर ढूंढ रहा हूं जिसके लिए आपको ज्ञान है।
धन्यवाद आपकी मदद और धैर्य :)
सादर
लाली
क्या इसका मतलब यह है कि सिग्नल केवल तब ही वितरित किया जाता है जब उस प्रक्रिया को निर्धारित किया जाता है? क्या होगा यदि प्रक्रिया सीपीयू गहन है और वर्तमान में मशीन के सीपीयू 1 पर चल रहा है, तो 2 सीपीयू है और शेड्यूलिंग गैर प्रीपेप्टिव फीफो है, इसलिए प्रक्रिया को कोई संकेत नहीं मिलेगा, भले ही सीपीयू 2 पर चल रही प्रक्रिया सिग्नल भेजती है (प्रक्रिया के रूप में cpu1 पर कभी cpu1 को छोड़ देता है)? क्या यह ? – ghayalcoder
@ ग्राहम: क्यों 2 2 कोर मशीन पर कभी नहीं चलेंगे? – SiegeX
क्षमा करें @ सिएजेक्स, आप सही हैं, इसलिए मैंने अपनी टिप्पणी हटा दी। @ इली की सजा का विश्लेषण करने की कोशिश करते समय मैं उलझन में आया। –