2009-05-08 21 views
5

मैंने पढ़ा है कि संकेतों को एक अलग ढेर होना चाहिए, क्यों और कैसे आपको लगता है कि इसे लागू किया गया है?सिग्नल स्टैक

क्या वे गतिशील रूप से आवंटित या स्थाई रूप से आवंटित हैं? स्मृति आवंटन कैसे किया जाता है? क्या यह सभी संकेतों के लिए समान है?

उत्तर

2

सिग्नल को एक अलग स्टैक की आवश्यकता होने का कारण यह है कि, यदि सामान्य स्टैक दूषित हो जाता है या बहती है, तो सिग्नल अभी भी निष्पादित हो सकता है। मुझे लगता है कि सिग्नल स्टैक आमतौर पर गतिशील रूप से आवंटित किया जाता है, लेकिन यह किसी भी तरह से लागू किया जा सकता है। आप sigaltstack के साथ एक नया सिग्नल स्टैक सेट कर सकते हैं। यह सभी संकेतों के लिए समान है।

+0

तो जैसा कि मैं समझता हूं कि हमारे पास अलग-अलग सिग्नल स्टैक पर सभी डिफ़ॉल्ट हैंडलर हैं, क्या यह सच है? क्या होता है जब हम एक अलग सिग्नल हैंडलर का उपयोग करने का निर्णय लेते हैं? इस विशेष मामले की देखभाल कैसे की जाती है? – Thunderboltz

+0

गैर-सिग्नल सिग्नल हैंडलर को उसी सिग्नल स्टैक पर भी निष्पादित किया जाता है। – Zifre

+0

यह कैसे संभव हो सकता है? गैर-डिफ़ॉल्ट सिग्नल हैंडलर को उसी सिग्नल स्टैक पर निष्पादित नहीं किया जाएगा। गैर-डिफ़ॉल्ट सिग्नल हैंडलर को उपयोगकर्ता प्रोग्राम में परिभाषित किया जाएगा और सामान्य उपयोगकर्ता स्टैक का उपयोग किया जाएगा, न कि विशेष सिग्नल स्टैक। मुझे लगता है कि हम पॉइंटर को गैर-डिफ़ॉल्ट सिग्नल हैंडलर में पास करते हैं जिसे बाद में बीएसडी सिग्नल एपीआई के साथ उपयोग किया जाता है। – Thunderboltz

1

उपयोगकर्ता स्तर के धागे बनाने के लिए एक और अधिक गूढ़ कारण है। राल्फ एंजल्सचॉल द्वारा पेपर, "पोर्टेबल मल्टीथ्रेडिंग" देखें: http://www.gnu.org/software/pth/rse-pmt.ps। यह वर्णन करता है कि "सिग्नल स्टैक ट्रैम्पोलिन चाल" का उपयोग उपयोगकर्ता स्पेस थ्रेडिंग को प्रभावित करने के लिए किया जाता है।

+0

पूरी तरह से ऑफ-विषय यह सवाल (दुर्भाग्य से), लेकिन बहुत अच्छा लिंक :-) – Mecki

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