ऑपरेटिंग सिस्टम - I / O सॉफ्टवेयर्स

I / O सॉफ्टवेयर अक्सर निम्न परतों में व्यवस्थित होता है -

  • User Level Libraries- यह इनपुट और आउटपुट करने के लिए उपयोगकर्ता प्रोग्राम को सरल इंटरफ़ेस प्रदान करता है। उदाहरण के लिए,stdio C और C ++ प्रोग्रामिंग भाषाओं द्वारा प्रदान की जाने वाली लाइब्रेरी है।

  • Kernel Level Modules - यह डिवाइस ड्राइवर को डिवाइस कंट्रोलर और डिवाइस इंडिपेंडेंट आई / ओ मॉड्यूल के साथ इंटरैक्ट करने के लिए डिवाइस ड्राइवर मुहैया कराता है।

  • Hardware - इस परत में वास्तविक हार्डवेयर और हार्डवेयर नियंत्रक शामिल हैं जो डिवाइस ड्राइवरों के साथ बातचीत करते हैं और हार्डवेयर को जीवंत बनाते हैं।

I / O सॉफ़्टवेयर के डिज़ाइन में एक महत्वपूर्ण अवधारणा यह है कि यह डिवाइस स्वतंत्र होना चाहिए जहां उन कार्यक्रमों को लिखना संभव हो जो किसी भी I / O डिवाइस को पहले से निर्दिष्ट किए बिना एक्सेस कर सकते हैं। उदाहरण के लिए, एक प्रोग्राम जो फ़ाइल को इनपुट के रूप में पढ़ता है, उसे एक फ्लॉपी डिस्क पर, हार्ड डिस्क पर, या सीडी-रोम पर, प्रत्येक अलग-अलग डिवाइस के लिए प्रोग्राम को संशोधित किए बिना एक फ़ाइल को पढ़ने में सक्षम होना चाहिए।

डिवाइस ड्राइवर

डिवाइस ड्राइवर सॉफ्टवेयर मॉड्यूल हैं जिन्हें किसी विशेष डिवाइस को संभालने के लिए ओएस में प्लग किया जा सकता है। ऑपरेटिंग सिस्टम सभी I / O उपकरणों को संभालने के लिए डिवाइस ड्राइवरों की मदद लेता है। डिवाइस ड्राइवर डिवाइस-निर्भर कोड को एनकैप्सुलेट करते हैं और मानक इंटरफ़ेस को इस तरह से लागू करते हैं कि कोड में डिवाइस-विशिष्ट रजिस्टर रीड / राइट होता है। डिवाइस ड्राइवर, आमतौर पर डिवाइस के निर्माता द्वारा लिखा जाता है और सीडी-रोम पर डिवाइस के साथ दिया जाता है।

एक उपकरण चालक निम्नलिखित कार्य करता है -

  • इसके ऊपर डिवाइस स्वतंत्र सॉफ़्टवेयर से अनुरोध स्वीकार करने के लिए।
  • I / O लेने और देने के लिए डिवाइस कंट्रोलर के साथ बातचीत करें और आवश्यक त्रुटि से निपटने के लिए प्रदर्शन करें
  • यह सुनिश्चित करते हुए कि अनुरोध सफलतापूर्वक निष्पादित किया गया है

एक डिवाइस ड्राइवर एक अनुरोध को कैसे संभालता है, इस प्रकार है: मान लीजिए कि एक अनुरोध एक एन ब्लॉक को पढ़ने के लिए आता है। यदि ड्राइवर अनुरोध आने के समय बेकार है, तो वह तुरंत अनुरोध को पूरा करना शुरू कर देता है। अन्यथा, यदि ड्राइवर पहले से ही किसी अन्य अनुरोध के साथ व्यस्त है, तो यह नए अनुरोध को लंबित अनुरोधों की कतार में रखता है।

बाधा डालने वाला

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

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

इंटरप्ट मैकेनिज़्म एक पते को स्वीकार करता है an एक संख्या जो एक छोटे सेट से एक विशिष्ट इंटरप्ट हैंडलिंग रुटीन / फ़ंक्शन का चयन करती है। अधिकांश आर्किटेक्चर में, यह पता एक तालिका में संग्रहीत ऑफसेट है जिसे इंटरप्ट वेक्टर टेबल कहा जाता है। इस वेक्टर में विशेष बाधित हैंडलर के मेमोरी एड्रेस हैं।

डिवाइस-इंडिपेंडेंट I / O सॉफ्टवेयर

डिवाइस-स्वतंत्र सॉफ़्टवेयर का मूल कार्य I / O फ़ंक्शन करना है जो सभी उपकरणों के लिए सामान्य हैं और उपयोगकर्ता-स्तरीय सॉफ़्टवेयर के लिए एक समान इंटरफ़ेस प्रदान करते हैं। हालांकि पूरी तरह से स्वतंत्र डिवाइस को लिखना मुश्किल है, लेकिन हम कुछ मॉड्यूल लिख सकते हैं जो सभी उपकरणों के बीच आम हैं। निम्नलिखित उपकरण स्वतंत्र I / O सॉफ़्टवेयर के कार्यों की एक सूची है -

  • डिवाइस ड्राइवरों के लिए यूनिफ़ॉर्म इंटरफेसिंग
  • डिवाइस का नामकरण - मेजोनिक और माइनर डिवाइस नंबरों के लिए मैप किए गए नामनामिक नाम
  • डिवाइस सुरक्षा
  • डिवाइस-स्वतंत्र ब्लॉक आकार प्रदान करना
  • बफरिंग क्योंकि डिवाइस से आने वाले डेटा को अंतिम गंतव्य में संग्रहीत नहीं किया जा सकता है।
  • ब्लॉक उपकरणों पर भंडारण आवंटन
  • आवंटन और समर्पित उपकरणों को जारी करना
  • त्रुटि की सूचना देना

उपयोगकर्ता-अंतरिक्ष I / O सॉफ़्टवेयर

ये पुस्तकालय हैं जो डिवाइस चालकों के साथ कर्नेल की कार्यक्षमता या अंत: क्रिया तक पहुँचने के लिए समृद्ध और सरलीकृत इंटरफ़ेस प्रदान करते हैं। अधिकांश उपयोगकर्ता-स्तर I / O सॉफ़्टवेयर में स्पूलिंग सिस्टम जैसी कुछ अपवाद वाली लाइब्रेरी प्रक्रियाएँ होती हैं, जो एक मल्टीग्रोमिंग सिस्टम में समर्पित I / O उपकरणों से निपटने का एक तरीका है।

I / O लाइब्रेरी (जैसे, stdio) OS- निवासी डिवाइस-स्वतंत्र I / O SW के लिए इंटरफ़ेस प्रदान करने के लिए यूजर-स्पेस में हैं। उदाहरण के लिए putchar (), getchar (), printf () और scanf () C प्रोग्रामिंग में उपलब्ध उपयोगकर्ता स्तर I / O लाइब्रेरी stdio का उदाहरण हैं।

कर्नेल I / O सबसिस्टम

कर्नेल I / O सबसिस्टम I / O से संबंधित कई सेवाएं प्रदान करने के लिए जिम्मेदार है। निम्नलिखित कुछ सेवाएँ प्रदान की गई हैं।

  • Scheduling- कर्नेल एक अच्छा क्रम निर्धारित करने के लिए I / O अनुरोधों का एक सेट निर्धारित करता है जिसमें उन्हें निष्पादित करना है। जब कोई एप्लिकेशन अवरुद्ध I / O सिस्टम कॉल जारी करता है, तो अनुरोध उस डिवाइस के लिए कतार में रखा जाता है। कर्नेल I / O अनुसूचक समग्र प्रणाली दक्षता और अनुप्रयोगों द्वारा अनुभव की गई औसत प्रतिक्रिया समय में सुधार के लिए कतार के क्रम को पुन: व्यवस्थित करता है।

  • Buffering - कर्नेल I / O सबसिस्टम के रूप में जाना जाता है एक स्मृति क्षेत्र रखता है bufferवह डेटा संग्रहीत करता है, जबकि वे दो डिवाइसों के बीच या किसी एप्लिकेशन ऑपरेशन वाले डिवाइस के बीच स्थानांतरित होते हैं। बफ़रिंग एक डेटा स्ट्रीम के निर्माता और उपभोक्ता के बीच गति बेमेल का सामना करने या उन डिवाइसों के बीच अनुकूलन करने के लिए किया जाता है जिनके पास विभिन्न डेटा ट्रांसफर आकार होते हैं।

  • Caching- कर्नेल कैशे मेमोरी को बनाए रखता है जो फास्ट मेमोरी का क्षेत्र है जो डेटा की प्रतियां रखता है। कैश्ड कॉपी तक पहुंच मूल की पहुंच से अधिक कुशल है।

  • Spooling and Device Reservation- एक स्पूल एक बफर है जो एक डिवाइस के लिए आउटपुट रखता है, जैसे कि एक प्रिंटर, जो इंटरलेव्ड डेटा धाराओं को स्वीकार नहीं कर सकता है। स्पूलिंग सिस्टम एक बार में प्रिंटर के लिए कतारबद्ध स्पूल फ़ाइलों की प्रतिलिपि बनाता है। कुछ ऑपरेटिंग सिस्टम में स्पूलिंग को एक सिस्टम डेमन प्रक्रिया द्वारा प्रबंधित किया जाता है। अन्य ऑपरेटिंग सिस्टम में, इसे कर्नेल थ्रेड में हैंडल किया जाता है।

  • Error Handling - एक ऑपरेटिंग सिस्टम जो संरक्षित मेमोरी का उपयोग करता है, कई प्रकार के हार्डवेयर और एप्लिकेशन त्रुटियों के खिलाफ गार्ड कर सकता है।