सॉफ़्टवेयर और हार्डवेयर क्या हैं, और वे कैसे संसाधित होते हैं?


43

मुझे यकीन नहीं है कि अगर मैं हार्डवेयर और सॉफ्टवेयर की अवधारणा को बाधित करता हूं।

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

  1. फिर क्या एक हार्डवेयर रुकावट जारी करता है? क्या यह हार्डवेयर ड्राइवर प्रक्रिया है?
  2. यदि हाँ, तो हार्डवेयर ड्राइवर प्रक्रिया कहाँ चल रही है? यदि यह सीपीयू पर चल रहा है, तो हार्डवेयर अवरोध, सही से सीपीयू पर ध्यान नहीं देना होगा? तो क्या यह कहीं और चल रहा है?
  3. क्या कोई हार्डवेयर सीधे तौर पर सीपीयू को बाधित करता है, या यह पहले कर्नेल प्रक्रिया और कर्नेल प्रक्रिया से संपर्क करता है और फिर सीपीयू से संपर्क / बाधित करता है?

दूसरी ओर, मुझे लगता है कि एक सॉफ्टवेयर व्यवधान का उद्देश्य वर्तमान में सीपीयू पर चल रही प्रक्रिया के लिए कुछ संसाधनों का अनुरोध करना है।

  1. संसाधन क्या हैं? क्या वे सभी चल रही प्रक्रियाओं के रूप में हैं? उदाहरण के लिए, CPU ड्राइवर प्रक्रिया और मेमोरी ड्राइवर प्रक्रियाएँ CPU और मेमोरी संसाधनों का प्रतिनिधित्व करती हैं? क्या I / O उपकरणों की ड्राइवर प्रक्रिया I / O संसाधनों का प्रतिनिधित्व करती है? क्या अन्य चलने वाली प्रक्रियाएं हैं जो प्रक्रिया भी संसाधनों के साथ संवाद करना चाहेंगी?
  2. यदि हाँ, तो क्या सॉफ्टवेयर अवरोधक प्रक्रियाओं से संपर्क करता है (जो संसाधनों का प्रतिनिधित्व करता है) अप्रत्यक्ष रूप से कर्नेल प्रक्रिया के माध्यम से? क्या यह सही है कि एक हार्डवेयर इंटरप्ट के विपरीत, एक सॉफ्टवेयर इंटरप्ट कभी भी सीधे सीपीयू को बाधित नहीं करता है, लेकिन इसके बजाय, यह कर्नेल प्रक्रिया को बाधित / संपर्क करता है?

जवाबों:


55

एक हार्डवेयर व्यवधान वास्तव में CPU मल्टीटास्किंग का हिस्सा नहीं है, लेकिन इसे ड्राइव कर सकता है।

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

  2. ड्राइवर जो व्यवधान को संभालता है वह CPU पर चलाया जाता है। सीपीयू रुकावट को संभालने के लिए जो कर रहा था उससे बाधित है, इसलिए सीपीयू का ध्यान आकर्षित करने के लिए अतिरिक्त कुछ भी आवश्यक नहीं है। मल्टीप्रोसेसर सिस्टम में, एक आमतौर पर केवल सीपीयू में से एक बाधित होता है। (विशेष मामलों के रूप में मेनफ्रेम में हार्डवेयर चैनल होते हैं जो मुख्य सीपीयू के समर्थन के बिना कई व्यवधानों से निपट सकते हैं।)

  3. हार्डवेयर इंटरप्ट सीपीयू को सीधे बाधित करता है। इससे कर्नेल प्रक्रिया में संबंधित कोड ट्रिगर हो जाएगा। ऐसी प्रक्रियाओं के लिए, जिन्हें संसाधित करने में कुछ समय लगता है, व्यवधान कोड स्वयं को अन्य हार्डवेयर व्यवधान से बाधित होने की अनुमति दे सकता है।

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

सॉफ्टवेयर इंटरप्ट को बहुत ज्यादा प्रोसेस किया जाता है जैसे हार्डवेयर इंटरप्ट। हालांकि, वे केवल उन प्रक्रियाओं द्वारा उत्पन्न हो सकते हैं जो वर्तमान में चल रहे हैं।

  1. आमतौर पर सॉफ्टवेयर इंटरप्ट I / O (इनपुट या आउटपुट) के लिए अनुरोध हैं। ये कर्नेल रूटीन कहेंगे जो I / O होने के लिए शेड्यूल करेंगे। कुछ उपकरणों के लिए I / O तुरंत किया जाएगा, लेकिन डिस्क I / O आमतौर पर कतारबद्ध और बाद के समय में किया जाता है। I / O किए जाने के आधार पर, I / O पूर्ण होने तक प्रक्रिया को निलंबित किया जा सकता है, जिससे कर्नेल अनुसूचक चलाने के लिए किसी अन्य प्रक्रिया का चयन कर सकता है। I / O प्रक्रियाओं के बीच हो सकता है और आमतौर पर प्रोसेसिंग डिस्क I / O के समान होती है।

  2. सॉफ्टवेयर केवल कर्नेल से बात करता है। किसी अन्य प्रक्रिया को चलाने के लिए कर्नेल की जिम्मेदारी है जिसे चलाने की आवश्यकता है। यह एक पाइप के अंत में एक और प्रक्रिया हो सकती है। कुछ कर्नेल डिवाइस ड्राइवर के कुछ हिस्सों को उपयोगकर्ता स्थान में मौजूद होने की अनुमति देते हैं, और जब जरूरत होती है, तो कर्नेल इस प्रक्रिया को शेड्यूल करेगा।

    यह सही है कि एक सॉफ्टवेयर इंटरप्ट CPU को सीधे बाधित नहीं करता है। केवल कोड जो वर्तमान में चल रहा है कोड एक सॉफ्टवेयर रुकावट उत्पन्न कर सकता है। रुकावट कर्नेल के लिए कुछ करने के लिए एक अनुरोध है (आमतौर पर I / O) चल रही प्रक्रिया के लिए। एक विशेष सॉफ्टवेयर इंटरप्ट एक यील्ड कॉल है, जो कर्नेल शेड्यूलर से यह देखने के लिए अनुरोध करता है कि क्या कोई अन्य प्रक्रिया चल सकती है।

टिप्पणी करने के लिए प्रतिक्रिया:

  1. I / O अनुरोधों के लिए, कर्नेल उपयुक्त कर्नेल ड्राइवर को कार्य दर्शाता है। दिनचर्या बाद के प्रसंस्करण के लिए I / O को कतारबद्ध कर सकती है (डिस्क I / O के लिए सामान्य), या यदि संभव हो तो इसे तुरंत निष्पादित करें। हार्डवेयर द्वारा व्यवधान उत्पन्न करने पर अक्सर चालक द्वारा कतार को नियंत्रित किया जाता है। जब एक I / O पूरा हो जाता है, तो कतार में अगला आइटम डिवाइस को भेजा जाता है।

  2. हाँ, सॉफ़्टवेयर व्यवधान हार्डवेयर सिग्नलिंग चरण से बचें। सॉफ़्टवेयर अनुरोध उत्पन्न करने वाली प्रक्रिया वर्तमान में चलने वाली प्रक्रिया होनी चाहिए, ताकि वे CPU को बाधित न करें। हालाँकि, वे कॉलिंग कोड के प्रवाह को बाधित करते हैं।

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


धन्यवाद! (1) सॉफ्टवेयर व्यवधान में, क्या I / O ऑपरेशन I / O डिवाइस ड्राइवर रूटीन प्रक्रिया के भीतर किया जाता है? (२) क्या यह सही है कि जिस रास्ते से सॉफ्टवेयर इंटरप्ट होता है वह हार्डवेयर इंटरप्ट के लिए पथ से एक कदम छोटा होता है? दूसरे शब्दों में, सॉफ्टवेयर रुकावट के लिए: सॉफ्टवेयर प्रोग्राम -> डिवाइस ड्राइवर रूटीन प्रक्रिया के भीतर; हार्डवेयर व्यवधान के लिए: हार्डवेयर -> CPU -> डिवाइस ड्राइवर रूटीन प्रक्रिया के भीतर?
टिम

धन्यवाद! क्या यह सही है कि हार्डवेयर इंटरप्ट के कारण सीपीयू अपनी वर्तमान स्थिति को एक स्टैक पर धकेल देता है ताकि हार्डवेयर चालक सीपीयू पर चल सके और बाद में सीपीयू पर बाधित प्रक्रिया को वापस ला सके? क्या सॉफ्टवेयर व्यवधान भी सीपीयू पर चलने वाली प्रक्रिया को एक स्टैक में धकेलने का कारण बनता है ताकि सीपीयू पर अनुरोधित सेवा को चलाया जा सके?
टिम

या तो बाधा राज्य को ढेर पर धकेलने का कारण बनेगी। यह सिस्टम को उस स्थिति में फिर से लोड करने की अनुमति देता है जब यह रुकावट के साथ किया जाता है।
बिल्टोर

धन्यवाद! यदि अनुरोधित सेवा CPU पर नहीं चलेगी जैसे कि IO संक्रियाएँ जो CPU के बजाय IO उपकरणों पर चलाई जाती हैं, और अनुरोधित सेवा समाप्त होने तक प्रतीक्षा किए बिना अनुरोध प्रक्रिया जारी रह सकती है, तो क्या अनुरोध प्रक्रिया अभी भी एक स्टैक में रखी जाएगी। ?
टिम

आम तौर पर, I / O रीड को सिंक्रोनस कहा जाता है और I / O पूरा होने तक यह प्रक्रिया नहीं चलेगी। पढ़ता है के लिए आप लगभग हमेशा यही चाहते हैं। राइट्स आमतौर पर अतुल्यकालिक रूप से प्रक्रिया को जारी रखने की अनुमति देते हैं।
बिल्टोर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.