सिस्टम प्रारंभिकरण या स्टार्टअप कोड स्तर पर सभी इंटरप्ट को अक्षम करने की आवश्यकता क्या है। अगर मैं इंटरप्ट को अक्षम नहीं करता तो क्या होगा ??सिस्टम स्टार्टअप या सिस्टम प्रारंभिकरण पर हमें सभी इंटरप्ट को अक्षम करने की आवश्यकता क्यों है?
उत्तर
कुछ स्थितियों में बाधाएं अवांछित हैं, इसलिए वे अक्षम हैं।
उदाहरण कई हैं लेकिन मेरे सिर के ऊपर से मैं इन के साथ आ सकते हैं:
ss:(e)sp
का संशोधन। यदि कोई बाधा निकाल दी जाती है, तोflags
रजिस्टर स्टैक पर धकेल दिया जाता है। एक अमान्य स्टैक मान उस प्रतिलिपि को कुछ यादृच्छिक स्थान पर ले जायेगा।ss:(e)sp
बदलना परमाणु नहीं है, कम से कम x86 पर, क्योंकि इसमें कई निर्देश होते हैं, इसलिए बीच में एक बाधा आ सकती है।
हालांकि, अगर आप अपना कोड सही तरीके से लिखते हैं, तो आप यहां पर इंटरप्ट्स को अक्षम किए बिना एक ही परमाणुता प्राप्त कर सकते हैं क्योंकि वे automatically disabled on certain occasions हैं।@MichaelPetch 8088 प्रोसेसर (8086, पहले 86 प्रोसेसर की "कमजोर भाई"), इन के लिए एक अपवाद चित्रण के बारे में कुछ विशेषता बोला "कुछ अवसरों," इस जवाब देने के लिए टिप्पणी में:
यही सच है के बारे में बीच में आता है अगले निर्देश के अंत तक बंद कर दिया जा रहा है (
SS
में कोई मान जाने के बाद), लेकिन वहाँ एक बग जहां बीच में आता है ठीक से एकSS
परिवर्तन के बाद बंद नहीं किया गया साथ 8088 प्रोसेसर थे। हम में से (डायनासोर) अक्सरCLI
/STI
SS:SP
के आसपास अपडेट करते हैं (इस तरह की एक बग के साथ 8088 सिस्टम चलाने की संभावना शून्य के करीब होने की संभावना है)। एक ऐतिहासिक परिप्रेक्ष्य से, यह PC mag article इस प्राचीन समस्या पर कुछ प्रकाश डाल सकता है।(कोड formatters गयी।)
- एक IDT/IVT का अभाव। जबकि संरक्षित मोड आईडीटी प्रारंभ किया गया है या 16-बिट रीयल मोड आईवीटी संशोधित (या शून्य या कुछ) संशोधित है, तो एक इंटरप्ट कुछ स्मृति स्थान पर कूद जाएगा, कोई निर्देश नहीं स्थित है।
सामान्य रूप से, आप कह सकते हैं कि कुछ गैर-परमाणु तरीके से आईडीटी/आईवीटी को संशोधित करने वाले संचालन में इंटरप्ट अक्षम करने की आवश्यकता है।
एक अलग रूप में के रूप में: मैं अपने आप को पहले से ही कई bootloaders लिखा है और आम तौर पर बूटलोडर के पूरे क्रम के दौरान बीच में आता है अक्षम करें। संरक्षित मोड में, मैं अंततः उन्हें पुन: सक्षम करता हूं। लिनक्स 4.2 इसी तरह से संभालता है। यदि आप रुचि रखते हैं, तो इसके स्रोत कोड (/arch/x86/boot/
) या मिनिक्स से पढ़ें!
असल में x86 पर किसी विशेष नियम के कारण पहले मामले में इंटरप्ट को अक्षम करने की आवश्यकता नहीं है: 'पॉप% ss' के बाद एक चक्र के लिए इंटरप्ट अक्षम हैं ताकि आपके पास स्टैक पॉइंटर सेट करने का समय हो। – fuz
@FUZxxl हो गया। क्या आप इसे देख सकते हैं, कृपया? – Downvoter
यह सही है लेकिन सावधान रहें, जब आप पंक्ति में कई ऐसे निर्देश निष्पादित करते हैं तो सूक्ष्म व्यवहार होता है। – fuz
- 1. फोनगैप स्टार्टअप - क्या हमें उन सभी फ़ाइलों की आवश्यकता है?
- 2. हमें JSON ऑब्जेक्ट्स को फ़्लैट करने की आवश्यकता क्यों है?
- 3. हमें डेटाबेस और फ़ाइल सिस्टम के लिए बी-ट्री जैसे अलग डेटास्ट्रक्चर की आवश्यकता क्यों है?
- 4. . हमें System.gc(); को कॉल करने की आवश्यकता क्यों है ??
- 5. हमें strdup() की आवश्यकता क्यों है?
- 6. हमें प्रबंधित कोड (मूल पर) की आवश्यकता क्यों है?
- 7. हमें लक्ष्य नामस्थान की आवश्यकता क्यों है?
- 8. हमें संरचना की आवश्यकता क्यों है? (सी #)
- 9. हमें स्थिर रचनाकारों की आवश्यकता क्यों है?
- 10. हमें np.squeeze() की आवश्यकता क्यों है?
- 11. हमें फ़ील्ड टैग की आवश्यकता क्यों है?
- 12. हमें "आउट" पैरामीटर की आवश्यकता क्यों है?
- 13. हमें सी # प्रतिनिधियों की आवश्यकता क्यों है
- 14. हमें यहां अंतहीनता की आवश्यकता क्यों है?
- 15. विजुअल स्टूडियो मुझे क्यों बता रहा है मुझे सिस्टम को संदर्भित करने की आवश्यकता है। निजी.कोरीलिब?
- 16. हमें "हटाएं []" ऑपरेटर की आवश्यकता क्यों है?
- 17. हमें वेब-सॉकेट की आवश्यकता क्यों है?
- 18. हमें मोनाड पर शायद मोनाड की आवश्यकता क्यों है
- 19. हमें डेटाबेस टेबल्स में ऑडिट कॉलम की आवश्यकता क्यों है?
- 20. हमें डिज़ाइन पैटर्न की आवश्यकता क्यों है
- 21. हमें यहां टाइपनाम की आवश्यकता क्यों है?
- 22. हमें टेंसरफ्लो टीएफ.ग्राफ की आवश्यकता क्यों है?
- 23. हमें वर्चुअल मेमोरी की आवश्यकता क्यों है?
- 24. क्या हमें सभी एपीआई स्तरों के लिए इंटेल x86 एटम सिस्टम छवि स्थापित करने की आवश्यकता है?
- 25. इंटरप्ट अक्षम करने का क्या अर्थ है?
- 26. स्टार्टअप कंपनी को किस डेटाबेस सिस्टम पर विचार करना चाहिए?
- 27. हमें italatee पर scalaz.stream की आवश्यकता क्यों है?
- 28. हमें RuntimeException में प्रयास करने की आवश्यकता क्यों नहीं है?
- 29. सिस्टम है। वेब। सिल्वरलाइट संदर्भ की आवश्यकता है?
- 30. सेटिड() उपयोगी कब है, या हमें लिनक्स में प्रक्रियाओं को समूहबद्ध करने की आवश्यकता क्यों है?
आपको इसलिए करना होगा क्योंकि आपके इंटरप्ट हैंडलर अभी तक स्थापित नहीं हैं। यदि आप उन्हें अक्षम नहीं करते हैं और आपको कोई बाधा आती है, तो सिस्टम/स्टार्टअप क्रैश हो जाएगा। –
आप संबंधित हैंडलर स्थापित करने से पहले इंटरप्ट को आग लगाना नहीं चाहते हैं, और हैंडलर का उपयोग करने वाले सभी डेटास्ट्रक्चर प्रारंभ किए गए हैं। अन्यथा आपको अप्रत्याशित व्यवहार नहीं मिल सकता है। –
यदि आप एक वास्तविक मोड ओएस लिख रहे हैं तो इंटरप्ट अक्षम करने की आवश्यकता नहीं हो सकती है।प्रश्न में BIOS/हार्डवेयर के लिए डिफ़ॉल्ट वास्तविक मोड इंटरप्ट तालिका होगी। यदि आप संरक्षित मोड ओएस बनाने का इरादा रखते हैं, तो आपको सुरक्षित मोड में स्विच करने से पहले इंटरप्ट को अक्षम करने की आवश्यकता होगी। यदि आप इंटरप्ट के साथ संरक्षित मोड में स्विच करते हैं और कोई इंटरप्ट वेक्टर टेबल (आईवीटी) नहीं है तो यह ट्रिपल गलती होगी। एक बार संरक्षित मोड में, आप एक आईवीटी सेट अप कर सकते हैं, और फिर इंटरप्ट को फिर से सक्षम कर सकते हैं। –