इंटरप्ट हैंडलर
This article needs additional citations for verification. (February 2015) (Learn how and when to remove this template message) |
कंप्यूटर सिस्टम प्रोग्रामिंग में इंटरप्ट हैंडलर जिसे इंटरप्ट सर्विस रूटीन या ISR के रूप में भी जाना जाता है एक विशिष्ट इंटरप्ट कंडीशन से जुड़े कोड का विशेष ब्लॉक है। इंटरप्ट हैंडलर हार्डवेयर इंटरप्ट निर्देश, सॉफ़्टवेयर इंटरप्ट निर्देश, या सॉफ़्टवेयर हैंडलिंग द्वारा शुरू किए जाते हैं और डिवाइस ड्राइवर को लागू करने या ऑपरेशन के संरक्षित मोड जैसे सिस्टम कॉल के बीच उपयोग किए जाते हैं।
इंटरप्ट हैंडलर का पारंपरिक रूप हार्डवेयर इंटरप्ट हैंडलर है। डिजिटल लॉजिक्स में लागू विद्युत स्थितियों या निम्न-स्तरीय प्रोटोकॉल से हार्डवेयर व्यवधान उत्पन्न होता हैI आमतौर पर इंटरप्ट वैक्टर की हार्ड-कोडेड तालिका के माध्यम से भेजा जाता है, अतुल्यकालिक रूप से सामान्य निष्पादन स्ट्रीम एक अलग स्टैक का उपयोग करते हुए और इंटरप्ट हैंडलर के निष्पादन की अवधि के लिए स्वचालित रूप से अलग निष्पादन संदर्भ में प्रवेश कराना होता हैI सामान्य तौर पर हार्डवेयर व्यवधान और उनके संचालकों का उपयोग उच्च-प्राथमिकता वाली स्थितियों को संभालने के लिए किया जाता है जिसके लिए केंद्रीय प्रसंस्करण इकाई द्वारा निष्पादित वर्तमान कोड के व्यवधान की आवश्यकता होती है।[1][2]
सॉफ्टवेयर के लिए सॉफ्टवेयर इंटरप्ट सिंक्रोनस इंटरप्ट के माध्यम से ट्रिगर करने में सक्षम होना सुविधाजनक पाया गया। हार्डवेयर स्तर पर हार्ड-कोडेड इंटरप्ट डिस्पैच टेबल का उपयोग करने के बजाय सॉफ़्टवेयर इंटरप्ट्स को अक्सर कॉलबैक कंप्यूटर प्रोग्रामिंग के रूप में ऑपरेटिंग सिस्टम स्तर पर लागू किया जाता है।
इंटरप्ट हैंडलर में कई प्रकार के कार्य होते हैं जो इस बात पर निर्भर करते हैं कि किस चीज ने इंटरप्ट को ट्रिगर किया और जिस गति से इंटरप्ट हैंडलर अपने कार्य को पूरा करता है। उदाहरण के लिए कंप्यूटर कीबोर्ड पर कुंजी दबाने पर[1]या माउस कंप्यूटिंग उस कॉल इंटरप्ट हैंडलर को ट्रिगर करता है जो कुंजी या माउस की स्थिति को पढ़ता है और संबंधित जानकारी को कंप्यूटर की मेमोरी में कॉपी करता है।[2]
इंटरप्ट हैंडलर आयोजन प्रबंधकर्ता का निम्न-स्तरीय समकक्ष है। हालांकि इंटरप्ट हैंडलर के पास असामान्य निष्पादन संदर्भ होता हैI समय और स्थान में कई कठोर बाधाएं होती हैं और उनकी आंतरिक रूप से अतुल्यकालिक प्रकृति उन्हें मानक अभ्यास द्वारा पुनर्निरीक्षण करने के लिए करने के लिए कठिन बना देती हैI सिस्टम प्रोग्रामिंग का महत्वपूर्ण उपवर्ग हार्डवेयर इंटरप्ट लेयर पर क्रियांवित होते हैंI
इंटरप्ट हैंडलर्स
इंटरप्ट हैंडलर आर्किटेक्चर में एक इंटरप्ट हैंडलर सामान्य रूप से आवश्यक संदर्भ की सबसे छोटी मात्रा को सहेजता हैI वर्तमान हैंडलर को बाधित करने के लिए उच्च प्राथमिकता वाले इंटरप्ट को अनुमति देने के लिए पहले अवसर पर ग्लोबल इंटरप्ट डिसेबल फ्लैग को रीसेट करता है। इंटरप्ट हैंडलर के लिए वर्तमान इंटरप्ट स्रोत महत्वपूर्ण हैI
इंटरप्ट हैंडलर की कार्यगतिविधि अगर सही स्थिति में है तो इस परिस्थिति में इंटरप्ट सिस्टम के साथ इंटरप्ट हैंडलर से बाहर निकलना कठिन और सटीक कार्य है और इसका गलत संचालन सिस्टम को पूरी तरह से रोक देता है।इंटरप्ट हैंडलर्स का औपचारिक सत्यापन काफी कठिन है जबकि परीक्षण आमतौर पर लगातार विफलता की पहचान करता है इस प्रकार इंटरप्ट हैंडलर्स में सूक्ष्म और आंतरिक बग अक्सर अंतिम ग्राहक तक सम्प्रेषित किये जाते हैं।
निष्पादन संदर्भ
आधुनिक ऑपरेटिंग सिस्टम में हार्डवेयर इंटरप्ट हैंडलर का निष्पादन संदर्भ सूक्ष्म होता है। हैंडलर को आमतौर पर चलने वाली प्रक्रिया की स्मृति और निष्पादन संदर्भ में शुरू किया जाएगा जिससे इसका कोई संपर्क नहीं है I बाधित प्रक्रिया के विपरीत बाधा आमतौर पर हार्ड-कोडेड सीपीयू तंत्र द्वारा हार्डवेयर संसाधनों तक सीधे पहुंचने के लिए पर्याप्त उच्च स्तर तक बढ़ जाती है।
स्टैक स्पेस विचार
निम्न-स्तर के माइक्रोकंट्रोलर में, चिप में सुरक्षा मोड की कमी हो सकती है और इसमें स्मृति प्रबंधन इकाई नहीं होती है। इन चिप में एक इंटरप्ट हैंडलर का निष्पादन संदर्भ अनिवार्य रूप से बाधित प्रोग्राम के समान कार्य करता है जो आमतौर पर निश्चित आकार के छोटे स्टैक यानि चिमनी पर चलता हैI नेस्टेड इंटरप्ट्स अक्सर स्टैक के उपयोग को बढ़ा देता है। इस प्रोग्रामिंग प्रयास में इंटरप्ट हैंडलर पर प्राथमिक बाधा सबसे खराब स्थिति में उपलब्ध स्टैक से अधिक नहीं है जिससे प्रोग्रामर को प्रत्येक कार्यान्वित इंटरप्ट हैंडलर और एप्लिकेशन टास्क की स्टैक स्पेस आवश्यकता के बारे में विश्व स्तर पर तर्क करने की आवश्यकता होती है।
जब आवंटित स्टैक स्थान पार हो जाता है (एक स्थिति जिसे स्टैक ओवरफ्लो के रूप में जाना जाता है), यह सामान्य रूप से इस वर्ग के चिप्स द्वारा हार्डवेयर में नहीं पाया जाता है। यदि स्टैक को किसी अन्य लिखने योग्य मेमोरी क्षेत्र में पार कर लिया गया है, तो हैंडलर आमतौर पर अपेक्षित रूप से काम करेगा, लेकिन हैंडलर के स्मृति भ्रष्टाचार के दुष्प्रभाव के कारण एप्लिकेशन बाद में (कभी-कभी बहुत बाद में) विफल हो जाएगा
लिखने योग्य मामले में, एक सेंटिनल स्टैक गार्ड को लागू कर सकता है - कानूनी स्टैक के अंत से ठीक परे एक निश्चित मूल्य जिसका मान अधिलेखित किया जा सकता है, लेकिन अगर सिस्टम सही ढंग से संचालित होता है तो ऐसा कभी नहीं होगा। किसी प्रकार के वॉच डॉग मैकेनिज्म के साथ स्टैक गार्ड के भ्रष्टाचार को नियमित रूप से देखना आम है। यह अधिकांश स्टैक ओवरफ्लो स्थितियों को आपत्तिजनक ऑपरेशन के करीब समय पर पकड़ लेगा।
मल्टीटास्किंग सिस्टम में, निष्पादन के प्रत्येक थ्रेड का आमतौर पर अपना स्टैक होता है। यदि इंटरप्ट्स के लिए कोई विशेष सिस्टम स्टैक प्रदान नहीं किया जाता है, तो इंटरप्ट निष्पादन के किसी भी थ्रेड से स्टैक स्पेस का उपभोग करेगा। इन डिज़ाइनों में आमतौर पर एक MMU होता है, और उपयोगकर्ता स्टैक आमतौर पर इस तरह कॉन्फ़िगर किए जाते हैं कि स्टैक ओवरफ़्लो MMU द्वारा फंस जाता है, या तो सिस्टम त्रुटि (डिबगिंग के लिए) या उपलब्ध स्थान को बढ़ाने के लिए मेमोरी को रीमैप करने के लिए। माइक्रोकंट्रोलर के इस स्तर पर मेमोरी संसाधन आमतौर पर बहुत कम बाधित होते हैं, ताकि ढेर को एक उदार सुरक्षा मार्जिन के साथ आवंटित किया जा सके।
उच्च थ्रेड काउंट का समर्थन करने वाले सिस्टम में, यह बेहतर होता है कि हार्डवेयर इंटरप्ट मैकेनिज्म स्टैक को एक विशेष सिस्टम स्टैक पर स्विच करता है, ताकि किसी भी थ्रेड स्टैक को सबसे खराब स्थिति वाले नेस्टेड इंटरप्ट उपयोग के लिए खाते की आवश्यकता न हो। 1978 से 8-बिट मोटोरोला 6809 तक छोटे सीपीयू ने अलग सिस्टम और उपयोगकर्ता स्टैक पॉइंटर्स प्रदान किए हैं।
समय और संगामिति में प्रतिबन्ध
कई कारणों से, यह अत्यधिक वांछित है कि इंटरप्ट हैंडलर जितना संभव हो उतना संक्षेप में निष्पादित करें, और संभावित रूप से ब्लॉकिंग सिस्टम कॉल को कॉल करने के लिए हार्डवेयर इंटरप्ट के लिए यह अत्यधिक निराश (या वर्जित) है। एक प्रणाली में कई निष्पादन कोर के साथ, पुनर्वित्त (कंप्यूटिंग) के विचार भी सर्वोपरि हैं। यदि सिस्टम हार्डवेयर प्रत्यक्ष मेमोरी एक्सेस प्रदान करता है, तो समवर्ती (कंप्यूटर विज्ञान) समस्याएँ केवल एक सीपीयू कोर के साथ भी उत्पन्न हो सकती हैं। (मध्य स्तरीय माइक्रोकंट्रोलर के लिए सुरक्षा स्तर और MMU की कमी होना असामान्य नहीं है, लेकिन फिर भी कई चैनलों के साथ एक DMA इंजन प्रदान करता है; इस परिदृश्य में, कई व्यवधान आमतौर पर DMA इंजन द्वारा ही ट्रिगर किए जाते हैं, और संबंधित इंटरप्ट हैंडलर है सावधानी से चलने की उम्मीद है।)
हार्डवेयर इंटरप्ट हैंडलर को फ्रंट-हाफ और बैक-हाफ तत्वों में विभाजित करने के लिए एक आधुनिक अभ्यास विकसित हुआ है। फ्रंट-हाफ (या पहला स्तर) रनिंग प्रक्रिया के संदर्भ में प्रारंभिक रुकावट प्राप्त करता है, हार्डवेयर को कम जरूरी स्थिति में पुनर्स्थापित करने के लिए न्यूनतम कार्य करता है (जैसे पूर्ण प्राप्त बफर को खाली करना) और फिर बैक-हाफ को चिह्नित करता है (या दूसरा स्तर) उपयुक्त समयबद्धन प्राथमिकता पर निकट भविष्य में निष्पादन के लिए; एक बार आह्वान करने के बाद, बैक-हाफ़ कम प्रतिबंधों के साथ अपने स्वयं के प्रक्रिया संदर्भ में संचालित होता है और हैंडलर के तार्किक संचालन को पूरा करता है (जैसे नए प्राप्त डेटा को ऑपरेटिंग सिस्टम डेटा कतार में पहुंचाना)।
आधुनिक ऑपरेटिंग सिस्टम में विभाजित हैंडलर
कई ऑपरेटिंग सिस्टम में—Linux, Unix, macOS, Microsoft Windows, z/OS, DESQview और अतीत में उपयोग किए जाने वाले कुछ अन्य ऑपरेटिंग सिस्टम—इंटरप्ट हैंडलर को दो भागों में बांटा गया है: फर्स्ट-लेवल इंटरप्ट हैंडलर (FLIH) और सेकेंड-लेवल इंटरप्ट हैंडलर (SLIH)। FLIHs को हार्ड इंटरप्ट हैंडलर्स या फास्ट इंटरप्ट हैंडलर्स के रूप में भी जाना जाता है, और SLIHs को विंडोज़ में स्लो/सॉफ्ट इंटरप्ट हैंडलर्स या आस्थगित प्रक्रिया कॉल के रूप में भी जाना जाता है।
एक FLIH 'इंटरप्ट रूटीन' के समान न्यूनतम प्लेटफॉर्म-विशिष्ट इंटरप्ट हैंडलिंग पर लागू होता है। एक बाधा के जवाब में, एक संदर्भ स्विच होता है, और बाधा के लिए कोड लोड और निष्पादित होता है। एक FLIH का काम इंटरप्ट को जल्दी से सर्विस करना है, या प्लेटफ़ॉर्म-विशिष्ट महत्वपूर्ण जानकारी को रिकॉर्ड करना है जो केवल इंटरप्ट के समय उपलब्ध है, और अनुसूची (कंप्यूटर विज्ञान) आगे लंबे समय तक चलने वाले इंटरप्ट हैंडलिंग के लिए SLIH का निष्पादन करता है।[2]
FLIHs प्रक्रिया निष्पादन में घबराहट पैदा करते हैं। FLIHs भी बाधा को छिपाते हैं। रीयल-टाइम ऑपरेटिंग सिस्टम के लिए घबराना को कम करना सबसे महत्वपूर्ण है, क्योंकि उन्हें इस बात की गारंटी रखनी चाहिए कि विशिष्ट कोड का निष्पादन सहमत समय के भीतर पूरा हो जाएगा। नकाबपोश रुकावटों से डेटा खोने की संभावना को कम करने के लिए, प्रोग्रामर एक FLIH के निष्पादन समय को कम करने का प्रयास करते हैं, जितना संभव हो उतना SLIH तक ले जाते हैं। आधुनिक कंप्यूटरों की गति के साथ, FLIHs सभी डिवाइस और प्लेटफ़ॉर्म-निर्भर हैंडलिंग को लागू कर सकते हैं, और आगे के प्लेटफ़ॉर्म-स्वतंत्र दीर्घकालिक हैंडलिंग के लिए SLIH का उपयोग कर सकते हैं।
FLIHs, जो सेवा हार्डवेयर आमतौर पर उनके संबंधित व्यवधान को छिपाते हैं (या जैसा भी मामला हो, इसे नकाबपोश रखें) जब तक कि वे अपना निष्पादन पूरा नहीं कर लेते। एक (असामान्य) FLIH जो पूरा होने से पहले अपने संबंधित व्यवधान को उजागर करता है, उसे एक पुनः प्रवेशी (उपनेमका) #Reentrant बाधा संचालक कहा जाता है। रीएन्ट्रेंट इंटरप्ट हैंडलर एक ही व्यवधान वेक्टर द्वारा कई प्रीमेशन (कंप्यूटिंग) से स्टैक ओवरफ्लो का कारण बन सकते हैं, और इसलिए उन्हें आमतौर पर टाला जाता है। इंटरप्ट प्राथमिकता स्तर प्रणाली में, FLIH समान या कम प्राथमिकता के अन्य व्यवधानों को भी (संक्षेप में) मास्क करता है।
एक SLIH एक प्रक्रिया के समान लंबे व्यवधान प्रसंस्करण कार्यों को पूरा करता है। SLIH के पास या तो प्रत्येक हैंडलर के लिए एक समर्पित कर्नेल (कंप्यूटर साइंस) थ्रेड है, या कर्नेल वर्कर थ्रेड्स के एक पूल द्वारा निष्पादित किया जाता है। ये थ्रेड्स ऑपरेटिंग सिस्टम में कतार चलाओ पर तब तक बैठते हैं जब तक कि उनके लिए इंटरप्ट के लिए प्रोसेसिंग करने के लिए प्रोसेसर का समय उपलब्ध न हो। SLIH के पास लंबे समय तक चलने वाला निष्पादन समय हो सकता है, और इस प्रकार आमतौर पर थ्रेड्स और प्रक्रियाओं के समान ही निर्धारित किया जाता है।
लिनक्स में, FLIH को ऊपरी आधा कहा जाता है, और SLIH को निचला आधा या निचला आधा कहा जाता है।[1][2] यह अन्य यूनिक्स जैसी प्रणालियों में उपयोग किए जाने वाले नामकरण से अलग है, जहां दोनों निचले आधे हिस्से का हिस्सा हैं।[clarification needed]
यह भी देखें
- [[उन्नत प्रोग्रामेबल इंटरप्ट कंट्रोलर]] (APIC)
- इंटर-प्रोसेसर रुकावट (IPI)
- व्यवधान विलंबता
- 65xx प्रोसेसर में रुकावट
- आईआरक्यूएल (विंडोज़)
- गैर-नकाबपोश व्यवधान (NMI)
- प्रोग्रामेबल इंटरप्ट कंट्रोलर (PIC)
- रेड जोन (कंप्यूटिंग)
संदर्भ
- ↑ 1.0 1.1 1.2 "The Linux Kernel Module Programming Guide, Chapter 12. Interrupt Handlers". The Linux Documentation Project. May 18, 2007. Retrieved February 20, 2015.
- ↑ 2.0 2.1 2.2 2.3 Jonathan Corbet; Alessandro Rubini; Greg Kroah-Hartman (January 27, 2005). "Linux Device Drivers, Chapter 10. Interrupt Handling" (PDF). O'Reilly Media. Retrieved February 20, 2015.