2015-11-11 6 views
5

एक ऑपरेटिंग सिस्टम में, सिस्टम कॉल और बाधा के बीच क्या अंतर है? क्या सभी सिस्टम इंटरप्ट कहते हैं? क्या सभी सिस्टम कॉल को बाधित करते हैं?एक ऑपरेटिंग सिस्टम में, सिस्टम कॉल और बाधा के बीच क्या अंतर है?

+0

न्यूनतम बाधा उदाहरण और कुछ लिनक्स सिस्टम कॉल के लिए इसका उपयोग कैसे करते हैं: http://stackoverflow.com/questions/1817577/what-does-int-0x80-mean-in-assembly-code/31836988#31836988 –

उत्तर

13

संक्षिप्त उत्तर: वे अलग-अलग चीजें हैं।

  • ओएस द्वारा प्रदान की गई सेवाओं सेवाओं पर ओएस पर चल रहे सॉफ़्टवेयर द्वारा सिस्टम कॉल को कॉल किया जाता है।
  • एक बाधा आमतौर पर बाहरी हार्डवेयर घटक सीपीयू/माइक्रोप्रोसेसर को सॉफ़्टवेयर (आमतौर पर एक ड्राइवर) में संभालने की आवश्यकता के बारे में सूचित करने के बारे में सूचित करता है।

मैं कहना आमतौर पर बाहरी, क्योंकि कुछ बीच में आता है सॉफ्टवेयर (नरम व्यवधान) द्वारा उठाया जा सकता है

सभी सिस्टम बीच में आता है कॉल कर रहे हैं? निर्भर करता है

क्या सभी सिस्टम कॉल में बाधा डालती हैं? कोई

लांग जवाब: ओएस CPU समय और अन्य हार्डवेयर सीपीयू से जुड़ा का प्रबंधन करता है (मेमोरी (RAM), HDD, कीबोर्ड, कुछ नाम हैं)। यह उन सेवाओं को उजागर करता है जो उपयोगकर्ता प्रोग्राम को अंतर्निहित हार्डवेयर तक पहुंचने की अनुमति देते हैं और ये सिस्टम कॉल हैं। आम तौर पर स्मृति को आवंटित करने, फ़ाइलों को पढ़ने/लिखने, दस्तावेज़ को प्रिंट करने और इसी तरह के साथ इन सौदों।

जब ओएस अन्य हार्डवेयर के साथ इंटरैक्ट करता है तो यह आमतौर पर ड्राइवर परत के माध्यम से ऐसा करता है जो काम करने के बाद हार्डवेयर को निष्पादित करने और बाधित करने के लिए कार्य को सेट अप करता है, इसलिए दस्तावेज़ मुद्रित होने के बाद प्रिंटर बाधित हो सकता है या यह पृष्ठों से बाहर चलाता है। इसलिए अक्सर ऐसा होता है कि एक सिस्टम कॉल इंटरप्ट की पीढ़ी की ओर जाता है।

क्या सभी सिस्टम इंटरप्ट कहते हैं - निर्भर करता है क्योंकि उन्हें नरम इंटरप्ट के रूप में लागू किया जा सकता है। इसलिए जब कोई उपयोगकर्ता प्रोग्राम सिस्टम कॉल करता है, तो यह नरम बाधा उत्पन्न करता है जिसके परिणामस्वरूप ओएस कॉलिंग प्रक्रिया को निलंबित कर देता है, और अनुरोध को स्वयं संभालता है, फिर प्रक्रिया को फिर से शुरू करता है। लेकिन, और मैं विकिपीडिया से बोली,

"कई RISC प्रोसेसर इस (व्यवधान) के लिए प्रदान की केवल तकनीक है, लेकिन इस तरह के 86 समर्थन अतिरिक्त तकनीक के रूप में CISC आर्किटेक्चर। एक उदाहरण है syscall/SYSRET, SYSENTER/SYSEXIT (दो तंत्र स्वतंत्र रूप से एएमडी और इंटेल द्वारा बनाए गए थे, लेकिन संक्षेप में वही काम करते हैं)। ये "तेज़" नियंत्रण हस्तांतरण निर्देश हैं जिन्हें सिस्टम कॉल के लिए ओएस पर नियंत्रण स्थानांतरित करने के लिए डिज़ाइन किया गया है। एक बाधा के ऊपरी हिस्से के बिना "

+0

के लिए धन्यवाद आपकी त्वरित प्रतिक्रिया। तो हस्तक्षेप हार्डवेयर हैं, लेकिन सॉफ्टवेयर में सिस्टम कॉल के कारण हो सकता है? क्या वो सही है? –

+0

"लेकिन सॉफ्टवेयर में सिस्टम कॉल के कारण हो सकता है" हां, सॉफ्टवेयर इंटरप्ट्स का एक स्रोत है, लेकिन आमतौर पर सभी परिधीय घटनाएं उत्पन्न करते हैं। घड़ी टिक सिस्टम घड़ी द्वारा उत्पन्न एक बाधा है जिसे किसी भी उपयोगकर्ता/सॉफ्टवेयर हस्तक्षेप की आवश्यकता नहीं होती है। – Ali

+0

बस कई भ्रम के लिए, कई ओएस कक्षाओं में, कर्नेल में प्रवेश करने वाले सभी सिस्कोल्स को 'इंटरप्ट्स' के रूप में वर्णित किया गया है, भले ही तंत्र में क्लासिक 'सॉफ़्टवेयर इंटरप्ट' शामिल न हो जो 'वास्तविक' हार्डवेयर बाधा की नकल करता हो। जावा जैसे कुछ भाषाओं में 'इंटरप्ट' शब्द भी ओवरलोड हो गया है। खुशी है कि पूरी तरह से स्पष्ट है ... :) –

1

आपके प्रश्न का उत्तर अंतर्निहित हार्डवेयर (और कभी-कभी ऑपरेटिंग सिस्टम कार्यान्वयन) पर निर्भर करता है। मैं उस पर थोड़ा सा वापस आ गया।

एक इंटरप्ट हैंडलर और सिस्टम कॉल (और एक गलती हैंडलर) का उद्देश्य काफी हद तक समान है: कर्नेल संरचनाओं में अनजान या दुर्भावनापूर्ण पहुंच से सुरक्षा प्रदान करते समय प्रोसेसर को कर्नेल मोड में स्विच करने के लिए।

एक एसिंक्रोनस बाहरी घटना द्वारा एक बाधा उत्पन्न होती है। कोड निष्पादित करके एक सिस्टम कॉल (या गलती या जाल) सिंक्रनाइज़ रूप से ट्रिगर किया जाता है।

यह तब आपके पहले प्रश्न का उत्तर है।

आपके अनुभाग प्रश्न का उत्तर यह है कि सिस्टम कॉल इंटरप्ट नहीं होते हैं क्योंकि वे हार्डवेयर द्वारा असीमित रूप से ट्रिगर नहीं होते हैं। एक प्रक्रिया एक सिस्टम कॉल में अपनी कोड स्ट्रीम निष्पादित करने के लिए जारी है, लेकिन एक बाधा में नहीं।

यह कहा गया है कि इंटेल के दस्तावेज़ अक्सर बाधा, सिस्टम कॉल, जाल और दोषों को "बाधा" के रूप में स्वीकार करते हैं।

कुछ प्रोसेसर सिस्टम कॉल जाल, गलती और बड़े पैमाने पर बाधाओं का इलाज करते हैं। अन्य (विशेष रूप से इंटेल) सिस्टम कॉल को लागू करने के लिए विभिन्न विधियां प्रदान करते हैं।

प्रोसेसर में जो उपर्युक्त सभी को उसी तरह से संभालते हैं, प्रत्येक प्रकार के बाधा, जाल और गलती में एक अद्वितीय संख्या होती है। प्रोसेसर ऑपरेटिंग सिस्टम को हैंडलरों को पॉइंटर्स के वेक्टर (सरणी) को स्थापित करने की अपेक्षा करता है। इसके अलावा, एक ऑपरेटिंग सिस्टम के लिए एक या अधिक हैंडलर सिस्टम कॉल

उपलब्ध हैंडलर की संख्या के आधार पर, ओएस के पास प्रत्येक सिस्टम कॉल के लिए एक अलग हैंडलर हो सकता है या यह निर्धारित करने के लिए एक रजिस्टर मान का उपयोग कर सकता है निष्पादित करने के लिए सिस्टम फ़ंक्शन।

ऐसी प्रणाली में, कोई एक सिस्टम कॉल को आमंत्रित करने के समान ही एक इंटरप्ट हैंडलर को सिंक्रनाइज़ कर सकता है।

उदाहरण के लिए, VAX

CHMK # 4

अनुदेश पर, 4 कर्नेल मोड हैंडलर invokes। इंटेल भूमि में उनके एक

INT

अनुदेश कि लगभग एक ही करता है।

इंटेल प्रोसेसर ने SYSCALL तंत्र का समर्थन किया है जो सिस्टम कॉल को लागू करने के लिए एक अलग तरीका प्रदान करता है।

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