इंटरप्ट बनाम अपवाद
किसी भी कंप्यूटर में, किसी प्रोग्राम के सामान्य निष्पादन के दौरान, ऐसी घटनाएं हो सकती हैं जो सीपीयू को अस्थायी रूप से रोक सकती हैं। इस तरह की घटनाओं को इंटरप्ट कहा जाता है। रुकावट सॉफ्टवेयर या हार्डवेयर दोष के कारण हो सकती है। हार्डवेयर इंटरप्ट को (बस) इंटरप्ट कहा जाता है, जबकि सॉफ्टवेयर इंटरप्ट को अपवाद कहा जाता है। एक बार रुकावट (सॉफ़्टवेयर या हार्डवेयर) उठने के बाद, नियंत्रण को एक विशेष सबरूटीन में स्थानांतरित कर दिया जाता है जिसे ISR (इंटरप्ट सर्विस रूटीन) कहा जाता है, जो इंटरप्ट द्वारा उठाई गई स्थितियों को संभाल सकता है।
इंटरप्ट क्या है?
इंटरप्ट शब्द आमतौर पर हार्डवेयर इंटरप्ट के लिए आरक्षित होता है।वे बाहरी हार्डवेयर घटनाओं के कारण प्रोग्राम नियंत्रण रुकावटें हैं। यहां, बाहरी का मतलब सीपीयू से बाहर है। हार्डवेयर इंटरप्ट आमतौर पर कई अलग-अलग स्रोतों से आते हैं जैसे टाइमर चिप, परिधीय उपकरण (कीबोर्ड, माउस, आदि), I/O पोर्ट (धारावाहिक, समानांतर, आदि), डिस्क ड्राइव, CMOS घड़ी, विस्तार कार्ड (साउंड कार्ड, वीडियो) कार्ड, आदि)। इसका मतलब है कि निष्पादन कार्यक्रम से संबंधित किसी घटना के कारण हार्डवेयर इंटरप्ट लगभग कभी नहीं होता है। उदाहरण के लिए, उपयोगकर्ता द्वारा कीबोर्ड पर एक कुंजी प्रेस, या एक आंतरिक हार्डवेयर टाइमर टाइमिंग आउट जैसी घटना इस प्रकार की बाधा को बढ़ा सकती है और सीपीयू को सूचित कर सकती है कि एक निश्चित डिवाइस को कुछ ध्यान देने की आवश्यकता है। ऐसी स्थिति में सीपीयू जो कुछ भी कर रहा था उसे रोक देगा (यानी वर्तमान प्रोग्राम को रोक देता है), डिवाइस द्वारा आवश्यक सेवा प्रदान करता है और सामान्य प्रोग्राम पर वापस आ जाएगा। जब हार्डवेयर इंटरप्ट होता है और CPU ISR शुरू करता है, तो अन्य हार्डवेयर इंटरप्ट अक्षम हो जाते हैं (जैसे 80×86 मशीनों में)। यदि आपको ISR के चलने के दौरान अन्य हार्डवेयर व्यवधानों की आवश्यकता है, तो आपको स्पष्ट रूप से इंटरप्ट फ़्लैग (sti निर्देश के साथ) को साफ़ करके ऐसा करने की आवश्यकता है।80×86 मशीनों में, इंटरप्ट फ़्लैग को साफ़ करने से केवल हार्डवेयर इंटरप्ट्स प्रभावित होंगे।
अपवाद क्या है?
अपवाद एक सॉफ्टवेयर इंटरप्ट है, जिसे एक विशेष हैंडलर रूटीन के रूप में पहचाना जा सकता है। अपवाद को स्वचालित रूप से होने वाले जाल के रूप में पहचाना जा सकता है (एक जाल को नियंत्रण के हस्तांतरण के रूप में पहचाना जा सकता है, जिसे प्रोग्रामर द्वारा शुरू किया जाता है)। आम तौर पर, अपवादों से जुड़े कोई विशिष्ट निर्देश नहीं होते हैं (एक विशिष्ट निर्देश का उपयोग करके जाल उत्पन्न होते हैं)। तो, एक "असाधारण" स्थिति के कारण एक अपवाद उत्पन्न होता है जो प्रोग्राम निष्पादन के दौरान होता है। उदाहरण के लिए, शून्य से विभाजन, एक अवैध ऑपोड का निष्पादन या स्मृति संबंधी दोष अपवाद का कारण बन सकता है। जब भी कोई अपवाद उठाया जाता है, तो CPU उस प्रोग्राम को अस्थायी रूप से निलंबित कर देता है जिसे वह निष्पादित कर रहा था और ISR शुरू करता है। ISR में शामिल होगा कि अपवाद के साथ क्या करना है। यह समस्या को ठीक कर सकता है या यदि यह संभव नहीं है तो यह एक उपयुक्त त्रुटि संदेश को प्रिंट करके प्रोग्राम को शानदार ढंग से निरस्त कर सकता है।हालांकि एक विशिष्ट निर्देश अपवाद का कारण नहीं बनता है, एक अपवाद हमेशा एक निर्देश के कारण होता है। उदाहरण के लिए, शून्य त्रुटि से विभाजन केवल विभाजन निर्देश के निष्पादन के दौरान हो सकता है।
इंटरप्ट और एक्सेप्शन में क्या अंतर है?
इंटरप्ट हार्डवेयर इंटरप्ट हैं, जबकि अपवाद सॉफ्टवेयर इंटरप्ट हैं। हार्डवेयर इंटरप्ट की घटनाएँ आमतौर पर अन्य हार्डवेयर इंटरप्ट को अक्षम कर देती हैं, लेकिन यह अपवादों के लिए सही नहीं है। यदि आपको अपवाद प्रस्तुत होने तक हार्डवेयर इंटरप्ट को अस्वीकार करने की आवश्यकता है, तो आपको इंटरप्ट ध्वज को स्पष्ट रूप से साफ़ करने की आवश्यकता है। और आमतौर पर कंप्यूटर पर इंटरप्ट फ्लैग अपवादों के विपरीत (हार्डवेयर) इंटरप्ट को प्रभावित करता है। इसका मतलब है कि इस ध्वज को साफ़ करने से अपवादों को नहीं रोका जा सकेगा।