मैंने पढ़ा है कि संकेतों को एक अलग ढेर होना चाहिए, क्यों और कैसे आपको लगता है कि इसे लागू किया गया है?सिग्नल स्टैक
क्या वे गतिशील रूप से आवंटित या स्थाई रूप से आवंटित हैं? स्मृति आवंटन कैसे किया जाता है? क्या यह सभी संकेतों के लिए समान है?
मैंने पढ़ा है कि संकेतों को एक अलग ढेर होना चाहिए, क्यों और कैसे आपको लगता है कि इसे लागू किया गया है?सिग्नल स्टैक
क्या वे गतिशील रूप से आवंटित या स्थाई रूप से आवंटित हैं? स्मृति आवंटन कैसे किया जाता है? क्या यह सभी संकेतों के लिए समान है?
सिग्नल को एक अलग स्टैक की आवश्यकता होने का कारण यह है कि, यदि सामान्य स्टैक दूषित हो जाता है या बहती है, तो सिग्नल अभी भी निष्पादित हो सकता है। मुझे लगता है कि सिग्नल स्टैक आमतौर पर गतिशील रूप से आवंटित किया जाता है, लेकिन यह किसी भी तरह से लागू किया जा सकता है। आप sigaltstack
के साथ एक नया सिग्नल स्टैक सेट कर सकते हैं। यह सभी संकेतों के लिए समान है।
उपयोगकर्ता स्तर के धागे बनाने के लिए एक और अधिक गूढ़ कारण है। राल्फ एंजल्सचॉल द्वारा पेपर, "पोर्टेबल मल्टीथ्रेडिंग" देखें: http://www.gnu.org/software/pth/rse-pmt.ps। यह वर्णन करता है कि "सिग्नल स्टैक ट्रैम्पोलिन चाल" का उपयोग उपयोगकर्ता स्पेस थ्रेडिंग को प्रभावित करने के लिए किया जाता है।
पूरी तरह से ऑफ-विषय यह सवाल (दुर्भाग्य से), लेकिन बहुत अच्छा लिंक :-) – Mecki
तो जैसा कि मैं समझता हूं कि हमारे पास अलग-अलग सिग्नल स्टैक पर सभी डिफ़ॉल्ट हैंडलर हैं, क्या यह सच है? क्या होता है जब हम एक अलग सिग्नल हैंडलर का उपयोग करने का निर्णय लेते हैं? इस विशेष मामले की देखभाल कैसे की जाती है? – Thunderboltz
गैर-सिग्नल सिग्नल हैंडलर को उसी सिग्नल स्टैक पर भी निष्पादित किया जाता है। – Zifre
यह कैसे संभव हो सकता है? गैर-डिफ़ॉल्ट सिग्नल हैंडलर को उसी सिग्नल स्टैक पर निष्पादित नहीं किया जाएगा। गैर-डिफ़ॉल्ट सिग्नल हैंडलर को उपयोगकर्ता प्रोग्राम में परिभाषित किया जाएगा और सामान्य उपयोगकर्ता स्टैक का उपयोग किया जाएगा, न कि विशेष सिग्नल स्टैक। मुझे लगता है कि हम पॉइंटर को गैर-डिफ़ॉल्ट सिग्नल हैंडलर में पास करते हैं जिसे बाद में बीएसडी सिग्नल एपीआई के साथ उपयोग किया जाता है। – Thunderboltz