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