जहां एक ऑपरेटिंग सिस्टम शामिल है, प्रोग्राम डिवाइस ड्राइवरों से बात नहीं करते हैं, कम से कम सीधे नहीं। कार्यक्रम अमूर्तता से बात करते हैं, जो उनके लिए अनभिज्ञ है, अंततः अंत में डिवाइस चालकों से एक या अधिक परतों के अमूर्त तरीके से बात कर रहा है।
मैं आधुनिक ऑपरेटिंग सिस्टम की जटिलताओं को छोड़ता जा रहा हूं और उदाहरण के रूप में 45 साल पहले विकसित एक माइक्रो कंप्यूटर ऑपरेटिंग सिस्टम CP / M का उपयोग कर रहा हूं । CP / M तीन परतों वाला एक लेयर केक था:
कार्यक्रम। शीर्ष परत एक ऐसा कार्यक्रम है जो गणना और I / O करके कुछ उपयोगी (वर्ड प्रोसेसिंग, प्लेइंग स्पेस आक्रमणकारियों) करता है। मान लें कि किसी बिंदु पर कार्यक्रम उपयोगकर्ता को देखने के लिए 'ए' अक्षर प्रदर्शित करना चाहता है। सीपी / एम एक कंसोल प्रदान करता है जिसे कंसोल के रूप में जाना जाता है , जो कि प्रोग्राम के साथ बातचीत करने वाले उपयोगकर्ता की तलाश में होना चाहिए। कुछ विधानसभा निर्देशों के साथ एक चरित्र भेजने का पारंपरिक तरीका है:
LD C,2 ; Load 2 into register C
LD E,65 ; Load the ASCII code for 'A' into register E
CALL 5 ; Call CP/M's routine for getting things done
(यदि आप उनसे परिचित नहीं हैं, तो रजिस्टरों को वैरिएबल के रूप में सोचा जा सकता है जो प्रोसेसर में रहते हैं।) हम जादू की संख्याओं के बारे में जानेंगे 2
और 5
सभी एक मिनट में हो जाएंगे । यहाँ takeaway है कि सभी कार्यक्रम जानता है कि वहाँ एक सांत्वना है और इसे लिखने का एक तरीका है। यह उस से परे किसी भी चीज के बारे में नहीं जानता या परवाह नहीं करता है। यह दो अमूर्तताओं में से पहला है जो CP / M I / O के लिए उपयोग करता है।
BDOS । पता 5
नामक कार्यक्रम अगले परत, के लिए प्रवेश बिंदु है बुनियादी डिस्क ऑपरेटिंग सिस्टम या बीडीओ । BDOS एक पूरे किए गए कार्यों को प्रदान करता है जो एक रेस्तरां मेनू से नंबर द्वारा ऑर्डर करने जैसा है। आप यह बताना चाहते हैं कि आप C
फ़ंक्शन संख्या ( 2
कंसोल आउटपुट के लिए) के साथ रजिस्टर को लोड करके कंसोल को आउटपुट करें और E
भेजे जाने वाले चरित्र के साथ रजिस्टर करें। कंसोल आउटपुट एक बहुत ही सरल ऑपरेशन है, और BDOS को वास्तव में अगली परत को कॉल करने के अलावा इसके साथ बहुत कुछ नहीं करना है।
BIOS। BIOS, या बेसिक इनपुट / आउटपुट सिस्टम वह परत है जहां सभी हार्डवेयर-विशिष्ट कोड रहते हैं। आधुनिक प्रणालियों में, यह डिवाइस चालकों का एक सेट माना जाएगा। BDOS की तरह, BIOS बहुत ही आदिम परिचालनों के एक मानक सेट के लिए कॉल प्रदान करता है जिसका उपयोग BDOS अपना व्यवसाय करने के लिए करता है। उन ऑपरेशनों में से एक कहा जाता हैCONOUT
, जो कि उस प्रोग्राम को प्राप्त करने के लिए ध्यान रखता है जो उस प्रोग्राम के ऊपर दो लेयर्स लिखने को कहता है जो कुछ भी हार्डवेयर करता है। (पीसी के विपरीत, चीजें तब समरूप नहीं होती थीं। हर किसी के सिस्टम में इसे बनाने के अलग-अलग तरीके होते हैं।) कंसोल आउटपुट BDOS के लिए एक सरल पास-थ्रू है, लेकिन कुछ और जटिल करने जैसे कि डिस्क पर फ़ाइल बनाने के लिए कई की आवश्यकता हो सकती है। BIOS मीडिया में हेरफेर करने के लिए कहता है। फिर से, क्योंकि BIOS में एक मानक, सार इंटरफ़ेस है, बीडीओएस हमेशा जानता है कि वह कैसे प्राप्त करना चाहता है और यह परवाह नहीं करता है कि BIOS कैसे करता है।
आप शायद सोच रहे हैं कि सिर्फ एक के बजाय दो सार (प्रोग्राम-टू-बीडीओएस और बीडीओएस-टू-BIOS) क्यों हैं। इसका उत्तर यह है कि CP / M और इसके BDOS को कंप्यूटर निर्माताओं को बाइनरी रूप में प्रदान किया जा सकता है, वे अपने हार्डवेयर के लिए डिवाइस ड्राइवरों के साथ एक कस्टम BIOS लिखेंगे, दोनों को एक साथ बोल्ट करेंगे और इसे अपने सिस्टम के लिए OS के रूप में शिप करेंगे। यह एक बड़ी बात थी क्योंकि BDOS एक संगठन द्वारा बनाए रखा गया था और इसलिए हमेशा उपयोगकर्ता कार्यक्रमों के लिए एक ज्ञात मात्रा थी, जिससे हार्डवेयर के बहुत व्यापक (समय के लिए) समान अनुप्रयोगों को चलाना संभव हो गया। यही कारण है कि ऑपरेटिंग सिस्टम मौजूद हैं और हम केवल हार्डवेयर को सीधे ट्वेल करने वाले प्रोग्राम नहीं लिखते हैं ।
मैंने यहां जो कुछ भी वर्णित किया है वह आधुनिक ऑपरेटिंग सिस्टम पर भी लागू होता है। यूनिक्स, उदाहरण के लिए, फ़ाइलों के रूप में सब कुछ सार। यह कार्यक्रमों को एक ही (सिस्टम कॉल के सेट देता है open()
, write()
, close()
, आदि) क्या यह एक डिस्क ड्राइव या सीरियल पोर्ट है संवाद करने के लिए। निर्णय और अमूर्त का सेट बहुत अधिक जटिल है, लेकिन यह अभी भी उबलने के लिए उबलता है कि ऑपरेशन होने के लिए नीचे की परत पर किस डिवाइस ड्राइवर कोड को चलाने की आवश्यकता है।