BIOS इंटरप्ट कॉल: Difference between revisions
No edit summary |
|||
| Line 1: | Line 1: | ||
{{more citations needed|date=April 2012}} | {{more citations needed|date=April 2012}} | ||
{{short description|Facility used by operating systems and application programs}} | {{short description|Facility used by operating systems and application programs}} | ||
BIOS [[ बाधा डालना ]] कॉल | BIOS [[ बाधा डालना |बाधा डालना]] कॉल सुविधा है जो [[ऑपरेटिंग सिस्टम]] और एप्लिकेशन प्रोग्राम BIOS [[की]] सुविधाओं को लागू करने के लिए उपयोग करते हैं। [[आईबीएम पीसी संगत]] कंप्यूटरों पर बेसिक इनपुट/आउटपुट सिस्टम फर्मवेयर। परंपरागत रूप से, BIOS कॉल मुख्य रूप से डॉस प्रोग्राम और [[बूट लोडर]] जैसे कुछ अन्य सॉफ़्टवेयर द्वारा उपयोग किए जाते हैं (जिनमें ज्यादातर ऐतिहासिक रूप से अपेक्षाकृत सरल एप्लिकेशन सॉफ़्टवेयर सम्मिलित हैं जो सीधे बूट होते हैं और ऑपरेटिंग सिस्टम के बिना चलते हैं - विशेष रूप से गेम सॉफ़्टवेयर)। BIOS वास्तविक मोड में चलता है। x86 CPU का वास्तविक पता मोड (वास्तविक मोड), इसलिए BIOS को कॉल करने वाले प्रोग्राम को या तो वास्तविक मोड में चलना चाहिए या BIOS को कॉल करने से पहले संरक्षित मोड से वास्तविक मोड में स्विच करना चाहिए और फिर से वापस स्विच करना चाहिए। इस कारण से, आधुनिक ऑपरेटिंग सिस्टम जो सीपीयू को संरक्षित मोड या लॉन्ग मोड में उपयोग करते हैं, सामान्यतः सिस्टम फ़ंक्शंस का समर्थन करने के लिए BIOS इंटरप्ट कॉल का उपयोग नहीं करते हैं, चूंकि वे [[बूटिंग]] के समय हार्डवेयर की जांच और आरंभ करने के लिए BIOS इंटरप्ट कॉल का उपयोग करते हैं।<ref>{{Cite web|title=Booting · Linux Inside|url=https://0xax.gitbooks.io/linux-insides/content/Booting/|access-date=2020-11-10|website=0xax.gitbooks.io}}</ref> वास्तविक मोड में 1 एमबी मेमोरी सीमा है, आधुनिक [[बूट लोडर]] (जैसे [[GRUB2]], [[ विंडोज़ बूट प्रबंधक |विंडोज़ बूट प्रबंधक]] ) [[अवास्तविक मोड]] या संरक्षित मोड का उपयोग करते हैं (और [[वर्चुअल 8086 मोड]] में BIOS इंटरप्ट कॉल निष्पादित करते हैं, किन्तु केवल ओएस बूटिंग के लिए) 4 जीबी तक पहुंच के लिए याद।<ref>{{Cite web|url=https://www.slideshare.net/mobile/MikeWang45/grub2-booting-process|title=Grub2 Booting Process|date=21 June 2016}}</ref> | ||
सभी कंप्यूटरों में, सॉफ्टवेयर निर्देश बिजली चालू होने के क्षण से भौतिक हार्डवेयर (स्क्रीन, डिस्क, कीबोर्ड, आदि) को नियंत्रित करते हैं। | सभी कंप्यूटरों में, सॉफ्टवेयर निर्देश बिजली चालू होने के क्षण से भौतिक हार्डवेयर (स्क्रीन, डिस्क, कीबोर्ड, आदि) को नियंत्रित करते हैं। पीसी में, BIOS, मदरबोर्ड पर ROM में प्री-लोडेड, CPU के रीसेट होने के तुरंत बाद नियंत्रण कर लेता है, जिसमें पावर-अप के समय, जब हार्डवेयर रीसेट बटन दबाया जाता है, या जब महत्वपूर्ण सॉफ़्टवेयर विफलता ([[ ट्रिपल दोष ]]) होती है हार्डवेयर रीसेट को स्वचालित रूप से ट्रिगर करने के लिए मेनबोर्ड सर्किट्री का कारण बनता है। BIOS हार्डवेयर का परीक्षण करता है और इसकी स्थिति को आरंभ करता है; बूट प्रोग्राम ढूँढता है, लोड करता है और चलाता है (सामान्यतः, OS बूट लोडर, और ऐतिहासिक [[ROM BASIC]]); और मशीन पर चलने वाले सॉफ़्टवेयर को बुनियादी हार्डवेयर नियंत्रण प्रदान करता है, जो सामान्यतः ऑपरेटिंग सिस्टम (एप्लिकेशन प्रोग्राम के साथ) होता है, किन्तु यह सीधे बूटिंग एकल सॉफ़्टवेयर एप्लिकेशन हो सकता है। | ||
आईबीएम के हिस्से के लिए, उन्होंने | आईबीएम के हिस्से के लिए, उन्होंने प्रारंभिक आईबीएम पीसी मॉडल (पीएस / 2 से पहले) प्रोग्रामिंग करते समय, अपने BIOS को पूरी तरह से उपयोग करने या सीधे हार्डवेयर का उपयोग करने और BIOS से पूरी तरह से बचने के लिए आवश्यक सभी जानकारी प्रदान की। प्रारंभ से ही, प्रोग्रामर के पास प्रति-हार्डवेयर-परिधीय आधार पर BIOS का उपयोग करने या न करने का विकल्प था। आईबीएम ने अच्छी तरह से व्यवहार किए गए कार्यक्रमों के लेखन को दृढ़ता से प्रोत्साहित किया जो केवल BIOS INT कॉल (और DOS सेवा कॉल) के माध्यम से हार्डवेयर तक पहुंचे, उपस्तिथा और भविष्य के पीसी मॉडल के साथ सॉफ्टवेयर की अनुकूलता का समर्थन करने के लिए असमान परिधीय हार्डवेयर वाले, किन्तु आईबीएम ने समझा कि कुछ सॉफ्टवेयर डेवलपर्स के लिए और हार्डवेयर ग्राहक, हार्डवेयर को सीधे नियंत्रित करने के लिए उपयोगकर्ता सॉफ़्टवेयर की क्षमता आवश्यकता थी। आंशिक रूप से, यह इसलिए था क्योंकि BIOS सेवाओं द्वारा सभी हार्डवेयर सुविधाओं और कार्यों का महत्वपूर्ण उपसमुच्चय उजागर नहीं किया गया था। दो उदाहरणों के लिए (कई के बीच), एमडीए और सीजीए एडेप्टर हार्डवेयर स्क्रॉल करने में सक्षम हैं, और पीसी सीरियल एडेप्टर बाधित-संचालित डेटा ट्रांसफर में सक्षम है, किन्तु आईबीएम BIOS इनमें से किसी भी उपयोगी तकनीकी सुविधा का समर्थन नहीं करता है। | ||
आज, | आज, नए पीसी में BIOS अभी भी आईबीएम पर्सनल कंप्यूटर/एटी (1984 में प्रारंभ) के लिए आईबीएम द्वारा परिभाषित BIOS इंटरप्ट फ़ंक्शन कॉल्स का सबसे अधिक समर्थन करता है, यदि सभी नहीं, तो कई और नए लोगों के साथ, इनमें से कुछ के लिए एक्सटेंशन विभिन्न अन्य संगठनों और सहयोगी उद्योग समूहों द्वारा प्रख्यापित मूल (जैसे विस्तारित पैरामीटर रेंज)। यह, हार्डवेयर संगतता की समान डिग्री के साथ मिलकर, इसका मतलब है कि आईबीएम एटी के लिए लिखे गए अधिकांश प्रोग्राम आज भी नए पीसी पर सही ढंग से चल सकते हैं, यह मानते हुए कि निष्पादन की तेज गति स्वीकार्य है (जो सामान्यतः सभी खेलों के लिए है जो उपयोग करते हैं सीपीयू-आधारित समय)। BIOS इंटरप्ट्स के माध्यम से एक्सेस की जाने वाली सेवाओं की अधिक सीमाओं के बावजूद, वे तकनीकी परिवर्तन के लिए बेहद उपयोगी और टिकाऊ सिद्ध करना हुए हैं। | ||
== BIOS कॉल का उद्देश्य == | == BIOS कॉल का उद्देश्य == | ||
BIOS इंटरप्ट कॉल | BIOS इंटरप्ट कॉल प्रोग्राम द्वारा अनुरोधित हार्डवेयर नियंत्रण या I/O फ़ंक्शन करता है, प्रोग्राम को सिस्टम की जानकारी लौटाता है, या दोनों करता है। BIOS कॉल के उद्देश्य का प्रमुख तत्व अमूर्त है - BIOS कॉल सामान्यतः परिभाषित कार्य करता है, और सिस्टम के विशेष हार्डवेयर पर उन कार्यों को कैसे निष्पादित किया जाता है, इसका विशिष्ट विवरण BIOS में एनकैप्सुलेट किया जाता है और प्रोग्राम से छिपा होता है। इसलिए, उदाहरण के लिए, प्रोग्राम जो हार्ड डिस्क से पढ़ना चाहता है, उसे यह जानने की आवश्यकता नहीं है कि हार्ड डिस्क समानांतर ATA, [[SCSI]], या [[SATA]] ड्राइव है (या पहले के दिनों में, बढ़ी हुई छोटी डिस्क इंटरफ़ेस ड्राइव, या [[संशोधित आवृत्ति मॉड्यूलेशन]] या [[रन लेंथ लिमिटेड]] ड्राइव संभवतः सीगेट [[ST-506]] नियंत्रक के साथ, संभवतः कई पश्चिमी डिजिटल # 1980 के नियंत्रक प्रकारों में से एक, या किसी अन्य ब्रांड के अलग मालिकाना नियंत्रक के साथ)। प्रोग्राम को केवल उस ड्राइव की BIOS-परिभाषित संख्या की पहचान करने की आवश्यकता है जिसे वह एक्सेस करना चाहता है और उस क्षेत्र के पते को पढ़ने या लिखने की आवश्यकता है, और BIOS इस सामान्य अनुरोध को प्राथमिक संचालन के विशिष्ट अनुक्रम में अनुवाद करने का ध्यान रखेगा। उस ड्राइव से जुड़े विशेष डिस्क नियंत्रक हार्डवेयर के माध्यम से कार्य को पूरा करने के लिए। प्रोग्राम को हर प्रकार की हार्ड डिस्क (या डिस्प्ले एडॉप्टर, या पोर्ट इंटरफ़ेस, या रीयल-टाइम क्लॉक पेरिफेरल) को निम्न स्तर पर नियंत्रित करने के बारे में जानने की आवश्यकता से मुक्त किया गया है, जिसे एक्सेस करने की आवश्यकता हो सकती है। यह प्रोग्रामिंग ऑपरेटिंग सिस्टम और एप्लिकेशन दोनों को आसान बनाता है और प्रोग्राम को छोटा बनाता है, प्रोग्राम कोड के दोहराव को कम करता है, क्योंकि BIOS में सम्मिलित कार्यक्षमता को हर उस प्रोग्राम में सम्मिलित करने की आवश्यकता नहीं होती है जिसकी उसे आवश्यकता होती है; इसके अतिरिक्त BIOS में अपेक्षाकृत कम कॉल को प्रोग्राम में सम्मिलित किया जाता है। (ऑपरेटिंग सिस्टम में जहां BIOS का उपयोग नहीं किया जाता है, ऑपरेटिंग सिस्टम द्वारा प्रदान की जाने वाली सर्विस कॉल सामान्यतः समान कार्य और उद्देश्य को पूरा करती हैं।) | ||
उपस्तिथा सॉफ़्टवेयर के साथ अनुकूलता बनाए रखने के लिए, नए सिस्टम को डिज़ाइन करते समय पुराने सिस्टम के साथ त्रुटिहीन हार्डवेयर संगतता बनाए रखने के लिए BIOS कंप्यूटर हार्डवेयर डिजाइनरों (इस हद तक कि प्रोग्राम विशेष रूप से BIOS का उपयोग करने के लिए लिखे गए हैं) को मुक्त करता है। उदाहरण के लिए, [[IBM PCjr]] पर कीबोर्ड हार्डवेयर पहले के IBM PC मॉडल के कीबोर्ड हार्डवेयर की तुलना में बहुत अलग तरीके से काम करता है, किन्तु उन प्रोग्रामों के लिए जो केवल BIOS के माध्यम से कीबोर्ड का उपयोग करते हैं, यह अंतर लगभग अदृश्य है। (इस मुद्दे के दूसरे पक्ष के अच्छे उदाहरण के रूप में, पीसीजेआर प्रस्तुत किए जाने के समय उपयोग में आने वाले पीसी प्रोग्रामों का महत्वपूर्ण हिस्सा विशेष रूप से BIOS के माध्यम से कीबोर्ड का उपयोग नहीं करता था, इसलिए आईबीएम ने पीसीजेआर में हार्डवेयर सुविधाओं को भी सम्मिलित किया जिससे कि इसका अनुकरण किया जा सके। जिस तरह IBM पर्सनल कंप्यूटर और IBM पर्सनल कंप्यूटर XT कीबोर्ड हार्डवेयर काम करता है। हार्डवेयर अनुकरण त्रुटिहीन नहीं है, इसलिए सभी प्रोग्राम जो सीधे कीबोर्ड हार्डवेयर का उपयोग करने का प्रयास करते हैं, PCjr पर सही ढंग से काम करेंगे, किन्तु सभी प्रोग्राम जो केवल BIOS कीबोर्ड सेवाओं का उपयोग करते हैं इच्छा।) | |||
हार्डवेयर सुविधाओं तक पहुंच प्रदान करने के | हार्डवेयर सुविधाओं तक पहुंच प्रदान करने के अतिरिक्त, BIOS अतिरिक्त सुविधाएं प्रदान करता है जो कि BIOS सॉफ़्टवेयर में कार्यान्वित की जाती हैं। उदाहरण के लिए, BIOS आठ टेक्स्ट डिस्प्ले पेजों के लिए अलग-अलग कर्सर की स्थिति रखता है और स्वचालित लाइन रैप के साथ [[कंप्यूटर टर्मिनल]] जैसा आउटपुट प्रदान करता है और कैरिज रिटर्न और लाइन फीड जैसे बुनियादी नियंत्रण वर्णों की व्याख्या करता है, जबकि सीजीए-संगत टेक्स्ट डिस्प्ले हार्डवेयर केवल वैश्विक प्रदर्शन कर्सर है और स्वचालित रूप से कर्सर को आगे नहीं बढ़ा सकता है, प्रदर्शन मेमोरी को संबोधित करने के लिए कर्सर की स्थिति का उपयोग करें (जिससे कि यह निर्धारित किया जा सके कि कौन सा वर्ण सेल बदला या जांचा जाएगा), या नियंत्रण वर्णों की व्याख्या करें। अन्य उदाहरण के लिए, BIOS कीबोर्ड इंटरफ़ेस विभिन्न शिफ्ट स्टेट्स (बाएं और दाएं Shift, Ctrl, और Alt) का ट्रैक रखने के लिए कई कीस्ट्रोक्स और कुंजी संयोजनों की व्याख्या करता है, Shift+PrtScrn के पूर्व होने पर प्रिंट-स्क्रीन सेवा को कॉल करने के लिएssed, सिस्टम को रिबूट करने के लिए जब Ctrl+Alt+Del दबाया जाता है, लॉक स्टेट्स (कैप्स लॉक, न्यूम लॉक और स्क्रॉल लॉक) का ट्रैक रखने के लिए और एटी-क्लास मशीनों में, संबंधित लॉक-स्टेट इंडिकेटर लाइट्स को नियंत्रित करें कीबोर्ड, और कीबोर्ड के लिए अन्य समान व्याख्यात्मक और प्रबंधन कार्य करने के लिए। इसके विपरीत, मानक पीसी और पीसी-एटी कीबोर्ड हार्डवेयर की सामान्य क्षमताएं सिस्टम को रिपोर्ट करने तक सीमित होती हैं, जिसमें व्यक्तिगत कुंजी को दबाने या जारी करने की प्रत्येक आदिम घटना होती है (अर्थात जारी स्थिति से उदास स्थिति या इसके विपरीत संक्रमण करना) ), कीबोर्ड यूनिट का कमांड्ड रीसेट और सेल्फ-टेस्ट करना, और एटी-क्लास कीबोर्ड के लिए, लॉक-स्टेट इंडिकेटर्स (एलईडी) की पूर्ण स्थिति सेट करने के लिए होस्ट सिस्टम से कमांड निष्पादित करना। | ||
== कॉलिंग BIOS: BIOS सॉफ़्टवेयर बाधित होता है == | == कॉलिंग BIOS: BIOS सॉफ़्टवेयर बाधित होता है == | ||
ऑपरेटिंग सिस्टम और अन्य सॉफ़्टवेयर, स्थापित हार्डवेयर को नियंत्रित करने के लिए, सॉफ़्टवेयर इंटरप्ट के माध्यम से, BIOS सॉफ़्टवेयर के साथ संचार करते हैं। | ऑपरेटिंग सिस्टम और अन्य सॉफ़्टवेयर, स्थापित हार्डवेयर को नियंत्रित करने के लिए, सॉफ़्टवेयर इंटरप्ट के माध्यम से, BIOS सॉफ़्टवेयर के साथ संचार करते हैं। सॉफ्टवेयर इंटरप्ट इंटरप्ट की सामान्य अवधारणा की विशिष्ट विविधता है। इंटरप्ट ऐसा मैकेनिज्म है जिसके द्वारा सीपीयू हो सकता है | ||
मेन-लाइन प्रोग्राम को निष्पादित करना बंद करने और इसके | मेन-लाइन प्रोग्राम को निष्पादित करना बंद करने और इसके अतिरिक्त इंटरप्ट सर्विस रूटीन (ISR) नामक विशेष प्रोग्राम को तुरंत निष्पादित करने का निर्देश दिया। ISR समाप्त होने के बाद, CPU मुख्य प्रोग्राम के साथ जारी रहता है। X86 CPUs पर, जब कोई व्यवधान उत्पन्न होता है, तो कॉल करने के लिए ISR को स्मृति में ISR प्रारंभ-बिंदु पतों (इंटरप्ट वैक्टर कहा जाता है) की तालिका में देखकर पाया जाता है: [[ व्यवधान सदिश तालिका |व्यवधान सदिश तालिका]] (आईवीटी)। इसके टाइप नंबर द्वारा 0 से 255 तक इंटरप्ट का आह्वान किया जाता है, और टाइप नंबर को इंटरप्ट वेक्टर टेबल में इंडेक्स के रूप में उपयोग किया जाता है, और उस इंडेक्स में टेबल में ISR का पता पाया जाता है जो प्रतिक्रिया में चलाया जाएगा रुकावट। सॉफ्टवेयर इंटरप्ट केवल इंटरप्ट है जो सॉफ्टवेयर कमांड द्वारा ट्रिगर किया जाता है; इसलिए, सॉफ्टवेयर सबरूटीन्स जैसे कार्य को बाधित करता है, मुख्य अंतर यह है कि सॉफ्टवेयर इंटरप्ट कॉल करने वाले प्रोग्राम को ISR का पता जानने की जरूरत नहीं है, केवल इसकी इंटरप्ट संख्या। सिस्टम कॉन्फ़िगरेशन में प्रतिरूपकता, अनुकूलता और लचीलेपन के लिए इसके फायदे हैं। | ||
BIOS इंटरप्ट कॉल को ऑपरेटिंग सिस्टम जैसे BIOS और BIOS क्लाइंट सॉफ़्टवेयर के बीच संदेश भेजने के लिए | BIOS इंटरप्ट कॉल को ऑपरेटिंग सिस्टम जैसे BIOS और BIOS क्लाइंट सॉफ़्टवेयर के बीच संदेश भेजने के लिए तंत्र के रूप में माना जा सकता है। संदेश BIOS से डेटा या कार्रवाई का अनुरोध करते हैं और अनुरोधित डेटा, स्थिति की जानकारी, और/या अनुरोधित कार्रवाई के उत्पाद को कॉलर को लौटाते हैं। संदेशों को श्रेणियों में बांटा गया है, जिनमें से प्रत्येक की अपनी रुकावट संख्या है, और अधिकांश श्रेणियों में उप-श्रेणियां होती हैं, जिन्हें फ़ंक्शन कहा जाता है और फ़ंक्शन संख्याओं द्वारा पहचाना जाता है। BIOS क्लाइंट अधिकांश सूचनाओं को CPU रजिस्टरों में BIOS को पास करता है, और उसी तरह से अधिकांश जानकारी वापस प्राप्त करता है, किन्तु रजिस्टरों में फिट होने के लिए बहुत बड़ा डेटा, जैसे नियंत्रण मापदंडों की तालिका या डिस्क ट्रांसफर के लिए डिस्क सेक्टर डेटा, बफर आवंटित करके पारित किया जाता है। (अर्थात कुछ जगह) स्मृति में और रजिस्टरों में बफर के पते को पास करना। (कभी-कभी मेमोरी में डेटा आइटम्स के एकाधिक पते मेमोरी में डेटा संरचना में पास किए जा सकते हैं, उस संरचना के पते रजिस्टरों में BIOS को पास किए जाते हैं।) इंटरप्ट नंबर को सॉफ्टवेयर इंटरप्ट इंस्ट्रक्शन (इंटेल असेंबली लैंग्वेज में) के पैरामीटर के रूप में निर्दिष्ट किया जाता है। , INT निर्देश), और फ़ंक्शन संख्या AH रजिस्टर में निर्दिष्ट है; अर्थात्, कॉलर एएच रजिस्टर को वांछित फ़ंक्शन की संख्या पर सेट करता है। सामान्यतः, प्रत्येक इंटरप्ट संख्या से संबंधित BIOS सेवाएं दूसरे से स्वतंत्र रूप से संचालित होती हैं, किन्तु इंटरप्ट सेवा के भीतर कार्य ही BIOS प्रोग्राम द्वारा नियंत्रित किए जाते हैं और स्वतंत्र नहीं होते हैं। (यह अंतिम बिंदु Reentrancy (कंप्यूटिंग) के लिए प्रासंगिक है।) | ||
BIOS सॉफ़्टवेयर | BIOS सॉफ़्टवेयर सामान्यतः कॉल करने वाले के पास त्रुटि कोड के साथ वापस आता है यदि सफल नहीं होता है, या स्थिति कोड और/या सफल होने पर अनुरोधित डेटा के साथ। डेटा स्वयं बिट जितना छोटा या पूरे कच्चे डिस्क क्षेत्रों के 65,536 बाइट्स जितना बड़ा हो सकता है (अधिकतम जो वास्तविक-मोड मेमोरी सेगमेंट में फिट होगा)। कई अलग-अलग कॉरपोरेट संस्थाओं द्वारा BIOS को कई वर्षों में कई बार विस्तारित और बढ़ाया गया है, और दुर्भाग्य से इस विकास का परिणाम यह है कि सभी BIOS फ़ंक्शंस जिन्हें डेटा को प्रारूपित करने और संचार करने या परिणामों की रिपोर्ट करने के लिए सुसंगत सम्मेलनों का उपयोग नहीं कहा जा सकता है। कुछ BIOS फ़ंक्शन विस्तृत स्थिति जानकारी की रिपोर्ट करते हैं, जबकि अन्य सफलता या विफलता की रिपोर्ट भी नहीं कर सकते हैं, किन्तु कॉल करने वाले को सफलता मानने के लिए (या किसी अन्य तरीके से परिणाम का परीक्षण करने के लिए) चुपचाप वापस लौटते हैं। कभी-कभी यह निर्धारित करना भी कठिनाई हो सकता है कि निश्चित कंप्यूटर पर BIOS द्वारा निश्चित BIOS फ़ंक्शन कॉल समर्थित है या नहीं, या कॉल के पैरामीटर की सीमा क्या हैउस कंप्यूटर पर फिर से। (कुछ अमान्य फ़ंक्शन नंबरों के लिए, या प्रमुख मापदंडों के अमान्य मानों के साथ मान्य फ़ंक्शन नंबर - विशेष रूप से प्रारंभिक IBM BIOS संस्करण के साथ - BIOS कुछ भी नहीं कर सकता है और बिना किसी त्रुटि कोड के वापस आ सकता है; तो यह [असुविधाजनक किन्तु अपरिहार्य] जिम्मेदारी है कॉलर या तो ऐसी कॉल न करके इस स्थितिसे बचने के लिए, या कॉल के प्रभावी होने के अतिरिक्त कॉल के अपेक्षित प्रभाव के लिए सकारात्मक रूप से परीक्षण करने के लिए। क्योंकि BIOS अपने इतिहास में कई चरणों में बड़े पैमाने पर विकसित हुआ है, फ़ंक्शन जो मान्य है कुछ निश्चित विक्रेता से BIOS संस्करण उसी विक्रेता से या किसी अन्य विक्रेता से किसी भी संबंधित आयु के BIOS संस्करण में पहले या अलग-अलग BIOS संस्करण में मान्य नहीं हो सकता है।) | ||
क्योंकि BIOS इंटरप्ट कॉल सीपीयू रजिस्टर-आधारित पैरामीटर पासिंग का उपयोग करते हैं, कॉल असेंबली लैंग्वेज से किए जाने के लिए उन्मुख होते हैं और सीधे उच्च-स्तरीय [[उच्च स्तरीय प्रोग्रामिंग भाषा]]| हाई-लेवल लैंग्वेज (HLL) से नहीं किए जा सकते हैं। | क्योंकि BIOS इंटरप्ट कॉल सीपीयू रजिस्टर-आधारित पैरामीटर पासिंग का उपयोग करते हैं, कॉल असेंबली लैंग्वेज से किए जाने के लिए उन्मुख होते हैं और सीधे उच्च-स्तरीय [[उच्च स्तरीय प्रोग्रामिंग भाषा]]| हाई-लेवल लैंग्वेज (HLL) से नहीं किए जा सकते हैं। चूँकि, उच्च स्तरीय भाषा रैपर रूटीन की लाइब्रेरी प्रदान कर सकती है जो उच्च-स्तरीय भाषा द्वारा उपयोग किए जाने वाले फॉर्म (सामान्यतः स्टैक-आधारित) से मापदंडों का अनुवाद BIOS द्वारा आवश्यक रजिस्टर-आधारित फॉर्म में करती है, फिर एचएलएल [[कॉलिंग कन्वेंशन]] के बाद BIOS रिटर्न। सी के कुछ रूपों में, सी मॉड्यूल के भीतर इनलाइन असेंबली भाषा का उपयोग करके BIOS कॉल किए जा सकते हैं। (इनलाइन असेंबली भाषा के लिए समर्थन एएनएसआई सी मानक का हिस्सा नहीं है, किन्तु भाषा विस्तार है, इसलिए, इनलाइन असेंबली भाषा का उपयोग करने वाले सी मॉड्यूल शुद्ध एएनएसआई मानक सी मॉड्यूल से कम पोर्टेबल हैं।) | ||
=== | === रुकावट का आह्वान === | ||
[[आईएनटी (x[[86]] निर्देश)]] x86 असेंबली भाषा निर्देश का उपयोग करके बाधा उत्पन्न की जा सकती है। उदाहरण के लिए, BIOS इंटरप्ट 0x10 का उपयोग कर स्क्रीन पर | [[आईएनटी (x[[86]] निर्देश)]] x86 असेंबली भाषा निर्देश का उपयोग करके बाधा उत्पन्न की जा सकती है। उदाहरण के लिए, BIOS इंटरप्ट 0x10 का उपयोग कर स्क्रीन पर वर्ण को प्रिंट करने के लिए, निम्नलिखित x86 असेंबली भाषा निर्देशों को निष्पादित किया जा सकता है: | ||
<syntaxhighlight lang="nasm"> | <syntaxhighlight lang="nasm"> | ||
| Line 42: | Line 42: | ||
सामान्य BIOS इंटरप्ट क्लासेस की सूची नीचे पाई जा सकती है। ध्यान दें कि कुछ BIOS (विशेष रूप से पुराने वाले) इन सभी इंटरप्ट कक्षाओं को लागू नहीं करते हैं। | सामान्य BIOS इंटरप्ट क्लासेस की सूची नीचे पाई जा सकती है। ध्यान दें कि कुछ BIOS (विशेष रूप से पुराने वाले) इन सभी इंटरप्ट कक्षाओं को लागू नहीं करते हैं। | ||
BIOS उन प्रोग्रामों में हार्डवेयर ईवेंट इंटरप्ट्स को रिले करने के लिए कुछ इंटरप्ट्स का भी उपयोग करता है जो उन्हें प्राप्त करना चुनते हैं या संदेशों को अपने स्वयं के उपयोग के लिए रूट करते हैं। नीचे दी गई तालिका में केवल वे BIOS इंटरप्ट | BIOS उन प्रोग्रामों में हार्डवेयर ईवेंट इंटरप्ट्स को रिले करने के लिए कुछ इंटरप्ट्स का भी उपयोग करता है जो उन्हें प्राप्त करना चुनते हैं या संदेशों को अपने स्वयं के उपयोग के लिए रूट करते हैं। नीचे दी गई तालिका में केवल वे BIOS इंटरप्ट सम्मिलित हैं जो सेवाओं या जानकारी का अनुरोध करने के लिए प्रोग्राम (INT असेंबली-लैंग्वेज सॉफ़्टवेयर इंटरप्ट इंस्ट्रक्शन का उपयोग करके) द्वारा बुलाए जाने के लिए अभिप्रेत हैं। | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
| Line 53: | Line 53: | ||
|- | |- | ||
|{{Code|08h}} | |{{Code|08h}} | ||
|This is the real time clock interrupt. | |This is the real time clock interrupt. It fires 18.2 times/second. The BIOS increments the time-of-day counter during this interrupt. | ||
|- | |- | ||
|{{Code|09h}} | |{{Code|09h}} | ||
|This is the Keyboard interrupt. | |This is the Keyboard interrupt. This is generally triggered when a key on a keyboard is pressed. | ||
|- | |- | ||
|[[INT 10H|{{Code|10h}}]] | |[[INT 10H|{{Code|10h}}]] | ||
| Line 380: | Line 380: | ||
|- | |- | ||
|{{Code|18h}} | |{{Code|18h}} | ||
|Execute [[Cassette BASIC]]: On IBM machines up to the early PS/2 line, this interrupt would start the ROM Cassette BASIC. Clones did not have this feature and different machines/BIOSes would perform a variety of different actions if INT 18h was executed, most commonly an error message stating that no bootable disk was present. Modern machines would attempt to [[Network boot|boot from a network]] through this interrupt. On modern machines this interrupt will be treated by the BIOS as a signal from the bootloader that it failed to complete its task. | |Execute [[Cassette BASIC]]: On IBM machines up to the early PS/2 line, this interrupt would start the ROM Cassette BASIC. Clones did not have this feature and different machines/BIOSes would perform a variety of different actions if INT 18h was executed, most commonly an error message stating that no bootable disk was present. Modern machines would attempt to [[Network boot|boot from a network]] through this interrupt. On modern machines this interrupt will be treated by the BIOS as a signal from the bootloader that it failed to complete its task. The BIOS can then take appropriate next steps.<ref name=spec>* [https://www.scs.stanford.edu/nyu/04fa/lab/specsbbs101.pdf BIOS Boot Specification Version 1.01 January 11 1996] Appendix D</ref> | ||
|- | |- | ||
|{{Code|19h}} | |{{Code|19h}} | ||
|After POST this interrupt is used by the BIOS to load the operating system. | |After POST this interrupt is used by the BIOS to load the operating system. A program can call this interrupt to reboot the computer (but must ensure that hardware interrupts or DMA operations will not cause the system to hang or crash during either the reinitialization of the system by BIOS or the boot process). | ||
|- | |- | ||
|{{Code|1Ah}} | |{{Code|1Ah}} | ||
| Line 487: | Line 487: | ||
=={{anchor|INT 18h}}{{Code|INT 18h}}: बेसिक == निष्पादित करें | =={{anchor|INT 18h}}{{Code|INT 18h}}: बेसिक == निष्पादित करें | ||
{{Code|INT 18h}} परंपरागत रूप से [[विकल्प रोम]] में संग्रहीत कैसेट बेसिक (माइक्रोसॉफ्ट द्वारा प्रदान) के कार्यान्वयन के लिए कूद गया। यदि BIOS स्टार्टअप पर बूट करने योग्य डिस्क वॉल्यूम की पहचान करने में असमर्थ था तो यह कॉल | {{Code|INT 18h}} परंपरागत रूप से [[विकल्प रोम]] में संग्रहीत कैसेट बेसिक (माइक्रोसॉफ्ट द्वारा प्रदान) के कार्यान्वयन के लिए कूद गया। यदि BIOS स्टार्टअप पर बूट करने योग्य डिस्क वॉल्यूम की पहचान करने में असमर्थ था तो यह कॉल सामान्यतः लागू की जाएगी। | ||
1981 में जब मूल IBM PC (IBM मशीन प्रकार 5150) जारी किया गया था, उस समय ROM में BASIC | 1981 में जब मूल IBM PC (IBM मशीन प्रकार 5150) जारी किया गया था, उस समय ROM में BASIC प्रमुख विशेषता थी। कमोडोर 64 और ऐप्पल II लाइन जैसे समकालीन लोकप्रिय व्यक्तिगत कंप्यूटरों में भी रोम में माइक्रोसॉफ्ट कैसेट बेसिक था (चूंकि कमोडोर ने अपने लाइसेंस प्राप्त संस्करण कमोडोर बेसिक का नाम बदल दिया), इसलिए अपने इच्छित बाजार के बड़े हिस्से में, आईबीएम पीसी को प्रतिस्पर्धा करने के लिए बेसिक की आवश्यकता थी। उन अन्य प्रणालियों की तरह, IBM PC के ROM BASIC ने आदिम डिस्क रहित ऑपरेटिंग सिस्टम के रूप में कार्य किया, जिससे उपयोगकर्ता प्रोग्राम को लोड करने, सहेजने और चलाने के साथ-साथ उन्हें लिखने और परिष्कृत करने की अनुमति देता है। (मूल आईबीएम पीसी भी आईबीएम का एकमात्र पीसी मॉडल था, जो अपने पूर्वोक्त दो प्रतिस्पर्धियों की तरह, कैसेट इंटरफ़ेस हार्डवेयर सम्मिलित था। बेस मॉडल आईबीएम पीसी में केवल 16 कीबी रैम और कोई डिस्क ड्राइव [किसी भी प्रकार का] नहीं था, इसलिए कैसेट बेस मॉडल को प्रयोग करने योग्य बनाने के लिए ROM में इंटरफ़ेस और बेसिक आवश्यक थे। 32 KiB से कम रैम वाला IBM PC डिस्क से बूट करने में असमर्थ है। मूल IBM PC में पाँच 8 KiB ROM चिप्स में से, कुल 40 KiB, चार में होते हैं BASIC और केवल में BIOS होता है; जब केवल 16 KiB RAM स्थापित की जाती है, तो ROM BASIC कुल सिस्टम मेमोरी के आधे से अधिक [4/7, त्रुटिहीन होने के लिए] खाता है।) | ||
जैसे-जैसे समय बीतता गया और बेसिक को सभी पीसी पर शिप नहीं किया गया, यह व्यवधान केवल | जैसे-जैसे समय बीतता गया और बेसिक को सभी पीसी पर शिप नहीं किया गया, यह व्यवधान केवल त्रुटि संदेश प्रदर्शित करेगा जो यह दर्शाता है कि कोई बूट करने योग्य वॉल्यूम नहीं मिला (प्रसिद्ध, नो रॉम बेसिक, या बाद के BIOS संस्करणों में अधिक व्याख्यात्मक संदेश); अन्य BIOS संस्करणों में यह उपयोगकर्ता को बूट करने योग्य वॉल्यूम डालने और कुंजी दबाने के लिए संकेत देगा, और फिर उपयोगकर्ता द्वारा कुंजी दबाए जाने के बाद यह बूटस्ट्रैप लोडर (INT 19h) पर फिर से बूट करने का प्रयास करेगा। | ||
डिजिटल का [[ इंद्रधनुष 100 ]]बी | डिजिटल का [[ इंद्रधनुष 100 |इंद्रधनुष 100]] बी उपयोग किया गया {{Code|INT 18h}} इसके BIOS को कॉल करने के लिए, जो IBM BIOS के साथ असंगत था। मेमोरी आवंटन और पेजिंग के लिए [[टर्बो पास्कल]], [[टर्बो सी]] और [[टर्बो सी ++]] ने आईएनटी 18 का पुन: उपयोग किया। अन्य कार्यक्रमों ने भी इस वेक्टर का अपने उद्देश्यों के लिए पुन: उपयोग किया। | ||
[[Category:Articles with hatnote templates targeting a nonexistent page]] | [[Category:Articles with hatnote templates targeting a nonexistent page]] | ||
| Line 513: | Line 513: | ||
== बायपास BIOS == | == बायपास BIOS == | ||
कई आधुनिक ऑपरेटिंग सिस्टम (जैसे [[लिनक्स]] और [[ खिड़कियाँ ]]) स्टार्टअप के बाद किसी भी BIOS इंटरप्ट कॉल का उपयोग नहीं करते हैं, इसके | कई आधुनिक ऑपरेटिंग सिस्टम (जैसे [[लिनक्स]] और [[ खिड़कियाँ |खिड़कियाँ]] ) स्टार्टअप के बाद किसी भी BIOS इंटरप्ट कॉल का उपयोग नहीं करते हैं, इसके अतिरिक्त हार्डवेयर के साथ सीधे इंटरफेस का चयन करते हैं। ऐसा करने के लिए, वे [[डिवाइस ड्राइवर]]ों पर भरोसा करते हैं जो या तो [[ओएस कर्नेल]] का हिस्सा हैं, ओएस के साथ शिप करते हैं, या हार्डवेयर विक्रेताओं द्वारा प्रदान किए जाते हैं। | ||
इस प्रथा के कई कारण हैं। सबसे महत्वपूर्ण यह है कि आधुनिक ऑपरेटिंग सिस्टम प्रोसेसर के साथ संरक्षित मोड (या लंबे मोड) मोड में चलते हैं, जबकि BIOS कोड केवल वास्तविक मोड में निष्पादित होगा। इसका अर्थ यह है कि यदि संरक्षित मोड में चल रहा कोई OS BIOS कॉल करना चाहता है, तो उसे पहले वास्तविक मोड में स्विच करना होगा, फिर कॉल को निष्पादित करना होगा और उसके वापस आने की प्रतीक्षा करनी होगी, और अंत में वापस सुरक्षित मोड में स्विच करना होगा। यह बेहद धीमा और अक्षम होगा। कोड जो वास्तविक मोड में चलता है (BIOS सहित) 16-बिट X86_memory_segmentation का उपयोग करने के कारण केवल 1 [[मेगाबाइट]] मेमोरी तक ही सीमित है। इसके अतिरिक्त, BIOS | इस प्रथा के कई कारण हैं। सबसे महत्वपूर्ण यह है कि आधुनिक ऑपरेटिंग सिस्टम प्रोसेसर के साथ संरक्षित मोड (या लंबे मोड) मोड में चलते हैं, जबकि BIOS कोड केवल वास्तविक मोड में निष्पादित होगा। इसका अर्थ यह है कि यदि संरक्षित मोड में चल रहा कोई OS BIOS कॉल करना चाहता है, तो उसे पहले वास्तविक मोड में स्विच करना होगा, फिर कॉल को निष्पादित करना होगा और उसके वापस आने की प्रतीक्षा करनी होगी, और अंत में वापस सुरक्षित मोड में स्विच करना होगा। यह बेहद धीमा और अक्षम होगा। कोड जो वास्तविक मोड में चलता है (BIOS सहित) 16-बिट X86_memory_segmentation का उपयोग करने के कारण केवल 1 [[मेगाबाइट]] मेमोरी तक ही सीमित है। इसके अतिरिक्त, BIOS सामान्यतः किसी विशेष कार्य को करने का सबसे तेज़ विधि नहीं है। वास्तव में, BIOS की गति सीमाओं ने इसे DOS युग में भी कार्यक्रमों के लिए सामान्य बना दिया जिससे कि इसकी प्रदर्शन सीमाओं से बचा जा सके, विशेष रूप से वीडियो ग्राफिक्स डिस्प्ले और तेज़ सीरियल संचार के लिए। | ||
उपरोक्त कारकों से परे, BIOS कार्यक्षमता के साथ समस्याओं में परिभाषित कार्यों की सीमा में सीमाएं, विभिन्न कंप्यूटरों पर समर्थित उन कार्यों के सबसेट में असंगतता, और BIOS की गुणवत्ता में भिन्नताएं | उपरोक्त कारकों से परे, BIOS कार्यक्षमता के साथ समस्याओं में परिभाषित कार्यों की सीमा में सीमाएं, विभिन्न कंप्यूटरों पर समर्थित उन कार्यों के सबसेट में असंगतता, और BIOS की गुणवत्ता में भिन्नताएं सम्मिलित हैं (अर्थात कुछ BIOS पूर्ण और विश्वसनीय हैं, अन्य संक्षिप्त हैं और छोटी गाड़ी)। स्थितियों को अपने हाथों में लेने और BIOS पर निर्भरता से बचने के द्वारा, ऑपरेटिंग सिस्टम डेवलपर्स कुछ जोखिमों और जटिलताओं को समाप्त कर सकते हैं जो वे सिस्टम सॉफ़्टवेयर को लिखने और समर्थन करने में सामना करते हैं। दूसरी ओर, ऐसा करने से वे डेवलपर हर अलग सिस्टम या पेरिफेरल डिवाइस के लिए बेयर-मेटल ड्राइवर सॉफ़्टवेयर प्रदान करने के लिए ज़िम्मेदार हो जाते हैं, जिसके लिए वे अपने ऑपरेटिंग सिस्टम के साथ काम करना चाहते हैं (या उन ड्राइवरों को प्रदान करने के लिए हार्डवेयर उत्पादकों को प्रेरित करने के लिए)। | ||
इस प्रकार यह स्पष्ट होना चाहिए कि छोटे बजट पर विकसित कॉम्पैक्ट ऑपरेटिंग सिस्टम भारी मात्रा में BIOS का उपयोग करते हैं, जबकि बड़े बजट वाले सॉफ्टवेयर इंजीनियरों के विशाल समूहों द्वारा निर्मित बड़े ऑपरेटिंग सिस्टम | इस प्रकार यह स्पष्ट होना चाहिए कि छोटे बजट पर विकसित कॉम्पैक्ट ऑपरेटिंग सिस्टम भारी मात्रा में BIOS का उपयोग करते हैं, जबकि बड़े बजट वाले सॉफ्टवेयर इंजीनियरों के विशाल समूहों द्वारा निर्मित बड़े ऑपरेटिंग सिस्टम अधिकांशतः BIOS का उपयोग करने के अतिरिक्त अपने स्वयं के ड्राइवर लिखने का विकल्प चुनते हैं- अर्थात BIOS और संरक्षित मोड की संगतता समस्याओं पर विचार किए बिना भी। | ||
== यह भी देखें == | == यह भी देखें == | ||
Revision as of 17:07, 11 March 2023
This article needs additional citations for verification. (April 2012) (Learn how and when to remove this template message) |
BIOS बाधा डालना कॉल सुविधा है जो ऑपरेटिंग सिस्टम और एप्लिकेशन प्रोग्राम BIOS की सुविधाओं को लागू करने के लिए उपयोग करते हैं। आईबीएम पीसी संगत कंप्यूटरों पर बेसिक इनपुट/आउटपुट सिस्टम फर्मवेयर। परंपरागत रूप से, BIOS कॉल मुख्य रूप से डॉस प्रोग्राम और बूट लोडर जैसे कुछ अन्य सॉफ़्टवेयर द्वारा उपयोग किए जाते हैं (जिनमें ज्यादातर ऐतिहासिक रूप से अपेक्षाकृत सरल एप्लिकेशन सॉफ़्टवेयर सम्मिलित हैं जो सीधे बूट होते हैं और ऑपरेटिंग सिस्टम के बिना चलते हैं - विशेष रूप से गेम सॉफ़्टवेयर)। BIOS वास्तविक मोड में चलता है। x86 CPU का वास्तविक पता मोड (वास्तविक मोड), इसलिए BIOS को कॉल करने वाले प्रोग्राम को या तो वास्तविक मोड में चलना चाहिए या BIOS को कॉल करने से पहले संरक्षित मोड से वास्तविक मोड में स्विच करना चाहिए और फिर से वापस स्विच करना चाहिए। इस कारण से, आधुनिक ऑपरेटिंग सिस्टम जो सीपीयू को संरक्षित मोड या लॉन्ग मोड में उपयोग करते हैं, सामान्यतः सिस्टम फ़ंक्शंस का समर्थन करने के लिए BIOS इंटरप्ट कॉल का उपयोग नहीं करते हैं, चूंकि वे बूटिंग के समय हार्डवेयर की जांच और आरंभ करने के लिए BIOS इंटरप्ट कॉल का उपयोग करते हैं।[1] वास्तविक मोड में 1 एमबी मेमोरी सीमा है, आधुनिक बूट लोडर (जैसे GRUB2, विंडोज़ बूट प्रबंधक ) अवास्तविक मोड या संरक्षित मोड का उपयोग करते हैं (और वर्चुअल 8086 मोड में BIOS इंटरप्ट कॉल निष्पादित करते हैं, किन्तु केवल ओएस बूटिंग के लिए) 4 जीबी तक पहुंच के लिए याद।[2] सभी कंप्यूटरों में, सॉफ्टवेयर निर्देश बिजली चालू होने के क्षण से भौतिक हार्डवेयर (स्क्रीन, डिस्क, कीबोर्ड, आदि) को नियंत्रित करते हैं। पीसी में, BIOS, मदरबोर्ड पर ROM में प्री-लोडेड, CPU के रीसेट होने के तुरंत बाद नियंत्रण कर लेता है, जिसमें पावर-अप के समय, जब हार्डवेयर रीसेट बटन दबाया जाता है, या जब महत्वपूर्ण सॉफ़्टवेयर विफलता (ट्रिपल दोष ) होती है हार्डवेयर रीसेट को स्वचालित रूप से ट्रिगर करने के लिए मेनबोर्ड सर्किट्री का कारण बनता है। BIOS हार्डवेयर का परीक्षण करता है और इसकी स्थिति को आरंभ करता है; बूट प्रोग्राम ढूँढता है, लोड करता है और चलाता है (सामान्यतः, OS बूट लोडर, और ऐतिहासिक ROM BASIC); और मशीन पर चलने वाले सॉफ़्टवेयर को बुनियादी हार्डवेयर नियंत्रण प्रदान करता है, जो सामान्यतः ऑपरेटिंग सिस्टम (एप्लिकेशन प्रोग्राम के साथ) होता है, किन्तु यह सीधे बूटिंग एकल सॉफ़्टवेयर एप्लिकेशन हो सकता है।
आईबीएम के हिस्से के लिए, उन्होंने प्रारंभिक आईबीएम पीसी मॉडल (पीएस / 2 से पहले) प्रोग्रामिंग करते समय, अपने BIOS को पूरी तरह से उपयोग करने या सीधे हार्डवेयर का उपयोग करने और BIOS से पूरी तरह से बचने के लिए आवश्यक सभी जानकारी प्रदान की। प्रारंभ से ही, प्रोग्रामर के पास प्रति-हार्डवेयर-परिधीय आधार पर BIOS का उपयोग करने या न करने का विकल्प था। आईबीएम ने अच्छी तरह से व्यवहार किए गए कार्यक्रमों के लेखन को दृढ़ता से प्रोत्साहित किया जो केवल BIOS INT कॉल (और DOS सेवा कॉल) के माध्यम से हार्डवेयर तक पहुंचे, उपस्तिथा और भविष्य के पीसी मॉडल के साथ सॉफ्टवेयर की अनुकूलता का समर्थन करने के लिए असमान परिधीय हार्डवेयर वाले, किन्तु आईबीएम ने समझा कि कुछ सॉफ्टवेयर डेवलपर्स के लिए और हार्डवेयर ग्राहक, हार्डवेयर को सीधे नियंत्रित करने के लिए उपयोगकर्ता सॉफ़्टवेयर की क्षमता आवश्यकता थी। आंशिक रूप से, यह इसलिए था क्योंकि BIOS सेवाओं द्वारा सभी हार्डवेयर सुविधाओं और कार्यों का महत्वपूर्ण उपसमुच्चय उजागर नहीं किया गया था। दो उदाहरणों के लिए (कई के बीच), एमडीए और सीजीए एडेप्टर हार्डवेयर स्क्रॉल करने में सक्षम हैं, और पीसी सीरियल एडेप्टर बाधित-संचालित डेटा ट्रांसफर में सक्षम है, किन्तु आईबीएम BIOS इनमें से किसी भी उपयोगी तकनीकी सुविधा का समर्थन नहीं करता है।
आज, नए पीसी में BIOS अभी भी आईबीएम पर्सनल कंप्यूटर/एटी (1984 में प्रारंभ) के लिए आईबीएम द्वारा परिभाषित BIOS इंटरप्ट फ़ंक्शन कॉल्स का सबसे अधिक समर्थन करता है, यदि सभी नहीं, तो कई और नए लोगों के साथ, इनमें से कुछ के लिए एक्सटेंशन विभिन्न अन्य संगठनों और सहयोगी उद्योग समूहों द्वारा प्रख्यापित मूल (जैसे विस्तारित पैरामीटर रेंज)। यह, हार्डवेयर संगतता की समान डिग्री के साथ मिलकर, इसका मतलब है कि आईबीएम एटी के लिए लिखे गए अधिकांश प्रोग्राम आज भी नए पीसी पर सही ढंग से चल सकते हैं, यह मानते हुए कि निष्पादन की तेज गति स्वीकार्य है (जो सामान्यतः सभी खेलों के लिए है जो उपयोग करते हैं सीपीयू-आधारित समय)। BIOS इंटरप्ट्स के माध्यम से एक्सेस की जाने वाली सेवाओं की अधिक सीमाओं के बावजूद, वे तकनीकी परिवर्तन के लिए बेहद उपयोगी और टिकाऊ सिद्ध करना हुए हैं।
BIOS कॉल का उद्देश्य
BIOS इंटरप्ट कॉल प्रोग्राम द्वारा अनुरोधित हार्डवेयर नियंत्रण या I/O फ़ंक्शन करता है, प्रोग्राम को सिस्टम की जानकारी लौटाता है, या दोनों करता है। BIOS कॉल के उद्देश्य का प्रमुख तत्व अमूर्त है - BIOS कॉल सामान्यतः परिभाषित कार्य करता है, और सिस्टम के विशेष हार्डवेयर पर उन कार्यों को कैसे निष्पादित किया जाता है, इसका विशिष्ट विवरण BIOS में एनकैप्सुलेट किया जाता है और प्रोग्राम से छिपा होता है। इसलिए, उदाहरण के लिए, प्रोग्राम जो हार्ड डिस्क से पढ़ना चाहता है, उसे यह जानने की आवश्यकता नहीं है कि हार्ड डिस्क समानांतर ATA, SCSI, या SATA ड्राइव है (या पहले के दिनों में, बढ़ी हुई छोटी डिस्क इंटरफ़ेस ड्राइव, या संशोधित आवृत्ति मॉड्यूलेशन या रन लेंथ लिमिटेड ड्राइव संभवतः सीगेट ST-506 नियंत्रक के साथ, संभवतः कई पश्चिमी डिजिटल # 1980 के नियंत्रक प्रकारों में से एक, या किसी अन्य ब्रांड के अलग मालिकाना नियंत्रक के साथ)। प्रोग्राम को केवल उस ड्राइव की BIOS-परिभाषित संख्या की पहचान करने की आवश्यकता है जिसे वह एक्सेस करना चाहता है और उस क्षेत्र के पते को पढ़ने या लिखने की आवश्यकता है, और BIOS इस सामान्य अनुरोध को प्राथमिक संचालन के विशिष्ट अनुक्रम में अनुवाद करने का ध्यान रखेगा। उस ड्राइव से जुड़े विशेष डिस्क नियंत्रक हार्डवेयर के माध्यम से कार्य को पूरा करने के लिए। प्रोग्राम को हर प्रकार की हार्ड डिस्क (या डिस्प्ले एडॉप्टर, या पोर्ट इंटरफ़ेस, या रीयल-टाइम क्लॉक पेरिफेरल) को निम्न स्तर पर नियंत्रित करने के बारे में जानने की आवश्यकता से मुक्त किया गया है, जिसे एक्सेस करने की आवश्यकता हो सकती है। यह प्रोग्रामिंग ऑपरेटिंग सिस्टम और एप्लिकेशन दोनों को आसान बनाता है और प्रोग्राम को छोटा बनाता है, प्रोग्राम कोड के दोहराव को कम करता है, क्योंकि BIOS में सम्मिलित कार्यक्षमता को हर उस प्रोग्राम में सम्मिलित करने की आवश्यकता नहीं होती है जिसकी उसे आवश्यकता होती है; इसके अतिरिक्त BIOS में अपेक्षाकृत कम कॉल को प्रोग्राम में सम्मिलित किया जाता है। (ऑपरेटिंग सिस्टम में जहां BIOS का उपयोग नहीं किया जाता है, ऑपरेटिंग सिस्टम द्वारा प्रदान की जाने वाली सर्विस कॉल सामान्यतः समान कार्य और उद्देश्य को पूरा करती हैं।)
उपस्तिथा सॉफ़्टवेयर के साथ अनुकूलता बनाए रखने के लिए, नए सिस्टम को डिज़ाइन करते समय पुराने सिस्टम के साथ त्रुटिहीन हार्डवेयर संगतता बनाए रखने के लिए BIOS कंप्यूटर हार्डवेयर डिजाइनरों (इस हद तक कि प्रोग्राम विशेष रूप से BIOS का उपयोग करने के लिए लिखे गए हैं) को मुक्त करता है। उदाहरण के लिए, IBM PCjr पर कीबोर्ड हार्डवेयर पहले के IBM PC मॉडल के कीबोर्ड हार्डवेयर की तुलना में बहुत अलग तरीके से काम करता है, किन्तु उन प्रोग्रामों के लिए जो केवल BIOS के माध्यम से कीबोर्ड का उपयोग करते हैं, यह अंतर लगभग अदृश्य है। (इस मुद्दे के दूसरे पक्ष के अच्छे उदाहरण के रूप में, पीसीजेआर प्रस्तुत किए जाने के समय उपयोग में आने वाले पीसी प्रोग्रामों का महत्वपूर्ण हिस्सा विशेष रूप से BIOS के माध्यम से कीबोर्ड का उपयोग नहीं करता था, इसलिए आईबीएम ने पीसीजेआर में हार्डवेयर सुविधाओं को भी सम्मिलित किया जिससे कि इसका अनुकरण किया जा सके। जिस तरह IBM पर्सनल कंप्यूटर और IBM पर्सनल कंप्यूटर XT कीबोर्ड हार्डवेयर काम करता है। हार्डवेयर अनुकरण त्रुटिहीन नहीं है, इसलिए सभी प्रोग्राम जो सीधे कीबोर्ड हार्डवेयर का उपयोग करने का प्रयास करते हैं, PCjr पर सही ढंग से काम करेंगे, किन्तु सभी प्रोग्राम जो केवल BIOS कीबोर्ड सेवाओं का उपयोग करते हैं इच्छा।)
हार्डवेयर सुविधाओं तक पहुंच प्रदान करने के अतिरिक्त, BIOS अतिरिक्त सुविधाएं प्रदान करता है जो कि BIOS सॉफ़्टवेयर में कार्यान्वित की जाती हैं। उदाहरण के लिए, BIOS आठ टेक्स्ट डिस्प्ले पेजों के लिए अलग-अलग कर्सर की स्थिति रखता है और स्वचालित लाइन रैप के साथ कंप्यूटर टर्मिनल जैसा आउटपुट प्रदान करता है और कैरिज रिटर्न और लाइन फीड जैसे बुनियादी नियंत्रण वर्णों की व्याख्या करता है, जबकि सीजीए-संगत टेक्स्ट डिस्प्ले हार्डवेयर केवल वैश्विक प्रदर्शन कर्सर है और स्वचालित रूप से कर्सर को आगे नहीं बढ़ा सकता है, प्रदर्शन मेमोरी को संबोधित करने के लिए कर्सर की स्थिति का उपयोग करें (जिससे कि यह निर्धारित किया जा सके कि कौन सा वर्ण सेल बदला या जांचा जाएगा), या नियंत्रण वर्णों की व्याख्या करें। अन्य उदाहरण के लिए, BIOS कीबोर्ड इंटरफ़ेस विभिन्न शिफ्ट स्टेट्स (बाएं और दाएं Shift, Ctrl, और Alt) का ट्रैक रखने के लिए कई कीस्ट्रोक्स और कुंजी संयोजनों की व्याख्या करता है, Shift+PrtScrn के पूर्व होने पर प्रिंट-स्क्रीन सेवा को कॉल करने के लिएssed, सिस्टम को रिबूट करने के लिए जब Ctrl+Alt+Del दबाया जाता है, लॉक स्टेट्स (कैप्स लॉक, न्यूम लॉक और स्क्रॉल लॉक) का ट्रैक रखने के लिए और एटी-क्लास मशीनों में, संबंधित लॉक-स्टेट इंडिकेटर लाइट्स को नियंत्रित करें कीबोर्ड, और कीबोर्ड के लिए अन्य समान व्याख्यात्मक और प्रबंधन कार्य करने के लिए। इसके विपरीत, मानक पीसी और पीसी-एटी कीबोर्ड हार्डवेयर की सामान्य क्षमताएं सिस्टम को रिपोर्ट करने तक सीमित होती हैं, जिसमें व्यक्तिगत कुंजी को दबाने या जारी करने की प्रत्येक आदिम घटना होती है (अर्थात जारी स्थिति से उदास स्थिति या इसके विपरीत संक्रमण करना) ), कीबोर्ड यूनिट का कमांड्ड रीसेट और सेल्फ-टेस्ट करना, और एटी-क्लास कीबोर्ड के लिए, लॉक-स्टेट इंडिकेटर्स (एलईडी) की पूर्ण स्थिति सेट करने के लिए होस्ट सिस्टम से कमांड निष्पादित करना।
कॉलिंग BIOS: BIOS सॉफ़्टवेयर बाधित होता है
ऑपरेटिंग सिस्टम और अन्य सॉफ़्टवेयर, स्थापित हार्डवेयर को नियंत्रित करने के लिए, सॉफ़्टवेयर इंटरप्ट के माध्यम से, BIOS सॉफ़्टवेयर के साथ संचार करते हैं। सॉफ्टवेयर इंटरप्ट इंटरप्ट की सामान्य अवधारणा की विशिष्ट विविधता है। इंटरप्ट ऐसा मैकेनिज्म है जिसके द्वारा सीपीयू हो सकता है मेन-लाइन प्रोग्राम को निष्पादित करना बंद करने और इसके अतिरिक्त इंटरप्ट सर्विस रूटीन (ISR) नामक विशेष प्रोग्राम को तुरंत निष्पादित करने का निर्देश दिया। ISR समाप्त होने के बाद, CPU मुख्य प्रोग्राम के साथ जारी रहता है। X86 CPUs पर, जब कोई व्यवधान उत्पन्न होता है, तो कॉल करने के लिए ISR को स्मृति में ISR प्रारंभ-बिंदु पतों (इंटरप्ट वैक्टर कहा जाता है) की तालिका में देखकर पाया जाता है: व्यवधान सदिश तालिका (आईवीटी)। इसके टाइप नंबर द्वारा 0 से 255 तक इंटरप्ट का आह्वान किया जाता है, और टाइप नंबर को इंटरप्ट वेक्टर टेबल में इंडेक्स के रूप में उपयोग किया जाता है, और उस इंडेक्स में टेबल में ISR का पता पाया जाता है जो प्रतिक्रिया में चलाया जाएगा रुकावट। सॉफ्टवेयर इंटरप्ट केवल इंटरप्ट है जो सॉफ्टवेयर कमांड द्वारा ट्रिगर किया जाता है; इसलिए, सॉफ्टवेयर सबरूटीन्स जैसे कार्य को बाधित करता है, मुख्य अंतर यह है कि सॉफ्टवेयर इंटरप्ट कॉल करने वाले प्रोग्राम को ISR का पता जानने की जरूरत नहीं है, केवल इसकी इंटरप्ट संख्या। सिस्टम कॉन्फ़िगरेशन में प्रतिरूपकता, अनुकूलता और लचीलेपन के लिए इसके फायदे हैं।
BIOS इंटरप्ट कॉल को ऑपरेटिंग सिस्टम जैसे BIOS और BIOS क्लाइंट सॉफ़्टवेयर के बीच संदेश भेजने के लिए तंत्र के रूप में माना जा सकता है। संदेश BIOS से डेटा या कार्रवाई का अनुरोध करते हैं और अनुरोधित डेटा, स्थिति की जानकारी, और/या अनुरोधित कार्रवाई के उत्पाद को कॉलर को लौटाते हैं। संदेशों को श्रेणियों में बांटा गया है, जिनमें से प्रत्येक की अपनी रुकावट संख्या है, और अधिकांश श्रेणियों में उप-श्रेणियां होती हैं, जिन्हें फ़ंक्शन कहा जाता है और फ़ंक्शन संख्याओं द्वारा पहचाना जाता है। BIOS क्लाइंट अधिकांश सूचनाओं को CPU रजिस्टरों में BIOS को पास करता है, और उसी तरह से अधिकांश जानकारी वापस प्राप्त करता है, किन्तु रजिस्टरों में फिट होने के लिए बहुत बड़ा डेटा, जैसे नियंत्रण मापदंडों की तालिका या डिस्क ट्रांसफर के लिए डिस्क सेक्टर डेटा, बफर आवंटित करके पारित किया जाता है। (अर्थात कुछ जगह) स्मृति में और रजिस्टरों में बफर के पते को पास करना। (कभी-कभी मेमोरी में डेटा आइटम्स के एकाधिक पते मेमोरी में डेटा संरचना में पास किए जा सकते हैं, उस संरचना के पते रजिस्टरों में BIOS को पास किए जाते हैं।) इंटरप्ट नंबर को सॉफ्टवेयर इंटरप्ट इंस्ट्रक्शन (इंटेल असेंबली लैंग्वेज में) के पैरामीटर के रूप में निर्दिष्ट किया जाता है। , INT निर्देश), और फ़ंक्शन संख्या AH रजिस्टर में निर्दिष्ट है; अर्थात्, कॉलर एएच रजिस्टर को वांछित फ़ंक्शन की संख्या पर सेट करता है। सामान्यतः, प्रत्येक इंटरप्ट संख्या से संबंधित BIOS सेवाएं दूसरे से स्वतंत्र रूप से संचालित होती हैं, किन्तु इंटरप्ट सेवा के भीतर कार्य ही BIOS प्रोग्राम द्वारा नियंत्रित किए जाते हैं और स्वतंत्र नहीं होते हैं। (यह अंतिम बिंदु Reentrancy (कंप्यूटिंग) के लिए प्रासंगिक है।)
BIOS सॉफ़्टवेयर सामान्यतः कॉल करने वाले के पास त्रुटि कोड के साथ वापस आता है यदि सफल नहीं होता है, या स्थिति कोड और/या सफल होने पर अनुरोधित डेटा के साथ। डेटा स्वयं बिट जितना छोटा या पूरे कच्चे डिस्क क्षेत्रों के 65,536 बाइट्स जितना बड़ा हो सकता है (अधिकतम जो वास्तविक-मोड मेमोरी सेगमेंट में फिट होगा)। कई अलग-अलग कॉरपोरेट संस्थाओं द्वारा BIOS को कई वर्षों में कई बार विस्तारित और बढ़ाया गया है, और दुर्भाग्य से इस विकास का परिणाम यह है कि सभी BIOS फ़ंक्शंस जिन्हें डेटा को प्रारूपित करने और संचार करने या परिणामों की रिपोर्ट करने के लिए सुसंगत सम्मेलनों का उपयोग नहीं कहा जा सकता है। कुछ BIOS फ़ंक्शन विस्तृत स्थिति जानकारी की रिपोर्ट करते हैं, जबकि अन्य सफलता या विफलता की रिपोर्ट भी नहीं कर सकते हैं, किन्तु कॉल करने वाले को सफलता मानने के लिए (या किसी अन्य तरीके से परिणाम का परीक्षण करने के लिए) चुपचाप वापस लौटते हैं। कभी-कभी यह निर्धारित करना भी कठिनाई हो सकता है कि निश्चित कंप्यूटर पर BIOS द्वारा निश्चित BIOS फ़ंक्शन कॉल समर्थित है या नहीं, या कॉल के पैरामीटर की सीमा क्या हैउस कंप्यूटर पर फिर से। (कुछ अमान्य फ़ंक्शन नंबरों के लिए, या प्रमुख मापदंडों के अमान्य मानों के साथ मान्य फ़ंक्शन नंबर - विशेष रूप से प्रारंभिक IBM BIOS संस्करण के साथ - BIOS कुछ भी नहीं कर सकता है और बिना किसी त्रुटि कोड के वापस आ सकता है; तो यह [असुविधाजनक किन्तु अपरिहार्य] जिम्मेदारी है कॉलर या तो ऐसी कॉल न करके इस स्थितिसे बचने के लिए, या कॉल के प्रभावी होने के अतिरिक्त कॉल के अपेक्षित प्रभाव के लिए सकारात्मक रूप से परीक्षण करने के लिए। क्योंकि BIOS अपने इतिहास में कई चरणों में बड़े पैमाने पर विकसित हुआ है, फ़ंक्शन जो मान्य है कुछ निश्चित विक्रेता से BIOS संस्करण उसी विक्रेता से या किसी अन्य विक्रेता से किसी भी संबंधित आयु के BIOS संस्करण में पहले या अलग-अलग BIOS संस्करण में मान्य नहीं हो सकता है।)
क्योंकि BIOS इंटरप्ट कॉल सीपीयू रजिस्टर-आधारित पैरामीटर पासिंग का उपयोग करते हैं, कॉल असेंबली लैंग्वेज से किए जाने के लिए उन्मुख होते हैं और सीधे उच्च-स्तरीय उच्च स्तरीय प्रोग्रामिंग भाषा| हाई-लेवल लैंग्वेज (HLL) से नहीं किए जा सकते हैं। चूँकि, उच्च स्तरीय भाषा रैपर रूटीन की लाइब्रेरी प्रदान कर सकती है जो उच्च-स्तरीय भाषा द्वारा उपयोग किए जाने वाले फॉर्म (सामान्यतः स्टैक-आधारित) से मापदंडों का अनुवाद BIOS द्वारा आवश्यक रजिस्टर-आधारित फॉर्म में करती है, फिर एचएलएल कॉलिंग कन्वेंशन के बाद BIOS रिटर्न। सी के कुछ रूपों में, सी मॉड्यूल के भीतर इनलाइन असेंबली भाषा का उपयोग करके BIOS कॉल किए जा सकते हैं। (इनलाइन असेंबली भाषा के लिए समर्थन एएनएसआई सी मानक का हिस्सा नहीं है, किन्तु भाषा विस्तार है, इसलिए, इनलाइन असेंबली भाषा का उपयोग करने वाले सी मॉड्यूल शुद्ध एएनएसआई मानक सी मॉड्यूल से कम पोर्टेबल हैं।)
रुकावट का आह्वान
[[आईएनटी (x86 निर्देश)]] x86 असेंबली भाषा निर्देश का उपयोग करके बाधा उत्पन्न की जा सकती है। उदाहरण के लिए, BIOS इंटरप्ट 0x10 का उपयोग कर स्क्रीन पर वर्ण को प्रिंट करने के लिए, निम्नलिखित x86 असेंबली भाषा निर्देशों को निष्पादित किया जा सकता है:
mov ah, 0x0e ; function number = 0Eh : Display Character
mov al, '!' ; AL = code of character to display
int 0x10 ; call INT 10h, BIOS video service
Interrupt table
सामान्य BIOS इंटरप्ट क्लासेस की सूची नीचे पाई जा सकती है। ध्यान दें कि कुछ BIOS (विशेष रूप से पुराने वाले) इन सभी इंटरप्ट कक्षाओं को लागू नहीं करते हैं।
BIOS उन प्रोग्रामों में हार्डवेयर ईवेंट इंटरप्ट्स को रिले करने के लिए कुछ इंटरप्ट्स का भी उपयोग करता है जो उन्हें प्राप्त करना चुनते हैं या संदेशों को अपने स्वयं के उपयोग के लिए रूट करते हैं। नीचे दी गई तालिका में केवल वे BIOS इंटरप्ट सम्मिलित हैं जो सेवाओं या जानकारी का अनुरोध करने के लिए प्रोग्राम (INT असेंबली-लैंग्वेज सॉफ़्टवेयर इंटरप्ट इंस्ट्रक्शन का उपयोग करके) द्वारा बुलाए जाने के लिए अभिप्रेत हैं।
| Interrupt vector | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
05h
|
Executed when Shift-Print screen is pressed, as well as when the BOUND instruction detects a bound failure.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
08h
|
This is the real time clock interrupt. It fires 18.2 times/second. The BIOS increments the time-of-day counter during this interrupt. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
09h
|
This is the Keyboard interrupt. This is generally triggered when a key on a keyboard is pressed. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
10h
|
Video Services
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
11h
|
Returns equipment list | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
12h
|
Return conventional memory size | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
13h
|
Low Level Disk Services
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
14h
|
Serial port services
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
15h
|
Miscellaneous system services
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
16h
|
Keyboard services
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
17h
|
Printer services
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
18h
|
Execute Cassette BASIC: On IBM machines up to the early PS/2 line, this interrupt would start the ROM Cassette BASIC. Clones did not have this feature and different machines/BIOSes would perform a variety of different actions if INT 18h was executed, most commonly an error message stating that no bootable disk was present. Modern machines would attempt to boot from a network through this interrupt. On modern machines this interrupt will be treated by the BIOS as a signal from the bootloader that it failed to complete its task. The BIOS can then take appropriate next steps.[3] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
19h
|
After POST this interrupt is used by the BIOS to load the operating system. A program can call this interrupt to reboot the computer (but must ensure that hardware interrupts or DMA operations will not cause the system to hang or crash during either the reinitialization of the system by BIOS or the boot process). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1Ah
|
Real Time Clock Services
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1Ah
|
PCI Services - implemented by BIOSes supporting PCI 2.0 or later
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1Bh
|
Ctrl-Break handler - called by INT 09 when Ctrl-Break has been pressed
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1Ch
|
Timer tick handler - called by INT 08
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1Dh
|
Not to be called; simply a pointer to the VPT (Video Parameter Table), which contains data on video modes | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1Eh
|
Not to be called; simply a pointer to the DPT (Diskette Parameter Table), containing a variety of information concerning the diskette drives | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1Fh
|
Not to be called; simply a pointer to the VGCT (Video Graphics Character Table), which contains the data for ASCII characters 80h to FFh
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
41h
|
Address pointer: FDPT = Fixed Disk Parameter Table (1st hard drive) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
46h
|
Address pointer: FDPT = Fixed Disk Parameter Table (2nd hard drive) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4Ah
|
Called by RTC for alarm |
==INT 18h: बेसिक == निष्पादित करें
INT 18h परंपरागत रूप से विकल्प रोम में संग्रहीत कैसेट बेसिक (माइक्रोसॉफ्ट द्वारा प्रदान) के कार्यान्वयन के लिए कूद गया। यदि BIOS स्टार्टअप पर बूट करने योग्य डिस्क वॉल्यूम की पहचान करने में असमर्थ था तो यह कॉल सामान्यतः लागू की जाएगी।
1981 में जब मूल IBM PC (IBM मशीन प्रकार 5150) जारी किया गया था, उस समय ROM में BASIC प्रमुख विशेषता थी। कमोडोर 64 और ऐप्पल II लाइन जैसे समकालीन लोकप्रिय व्यक्तिगत कंप्यूटरों में भी रोम में माइक्रोसॉफ्ट कैसेट बेसिक था (चूंकि कमोडोर ने अपने लाइसेंस प्राप्त संस्करण कमोडोर बेसिक का नाम बदल दिया), इसलिए अपने इच्छित बाजार के बड़े हिस्से में, आईबीएम पीसी को प्रतिस्पर्धा करने के लिए बेसिक की आवश्यकता थी। उन अन्य प्रणालियों की तरह, IBM PC के ROM BASIC ने आदिम डिस्क रहित ऑपरेटिंग सिस्टम के रूप में कार्य किया, जिससे उपयोगकर्ता प्रोग्राम को लोड करने, सहेजने और चलाने के साथ-साथ उन्हें लिखने और परिष्कृत करने की अनुमति देता है। (मूल आईबीएम पीसी भी आईबीएम का एकमात्र पीसी मॉडल था, जो अपने पूर्वोक्त दो प्रतिस्पर्धियों की तरह, कैसेट इंटरफ़ेस हार्डवेयर सम्मिलित था। बेस मॉडल आईबीएम पीसी में केवल 16 कीबी रैम और कोई डिस्क ड्राइव [किसी भी प्रकार का] नहीं था, इसलिए कैसेट बेस मॉडल को प्रयोग करने योग्य बनाने के लिए ROM में इंटरफ़ेस और बेसिक आवश्यक थे। 32 KiB से कम रैम वाला IBM PC डिस्क से बूट करने में असमर्थ है। मूल IBM PC में पाँच 8 KiB ROM चिप्स में से, कुल 40 KiB, चार में होते हैं BASIC और केवल में BIOS होता है; जब केवल 16 KiB RAM स्थापित की जाती है, तो ROM BASIC कुल सिस्टम मेमोरी के आधे से अधिक [4/7, त्रुटिहीन होने के लिए] खाता है।)
जैसे-जैसे समय बीतता गया और बेसिक को सभी पीसी पर शिप नहीं किया गया, यह व्यवधान केवल त्रुटि संदेश प्रदर्शित करेगा जो यह दर्शाता है कि कोई बूट करने योग्य वॉल्यूम नहीं मिला (प्रसिद्ध, नो रॉम बेसिक, या बाद के BIOS संस्करणों में अधिक व्याख्यात्मक संदेश); अन्य BIOS संस्करणों में यह उपयोगकर्ता को बूट करने योग्य वॉल्यूम डालने और कुंजी दबाने के लिए संकेत देगा, और फिर उपयोगकर्ता द्वारा कुंजी दबाए जाने के बाद यह बूटस्ट्रैप लोडर (INT 19h) पर फिर से बूट करने का प्रयास करेगा।
डिजिटल का इंद्रधनुष 100 बी उपयोग किया गया INT 18h इसके BIOS को कॉल करने के लिए, जो IBM BIOS के साथ असंगत था। मेमोरी आवंटन और पेजिंग के लिए टर्बो पास्कल, टर्बो सी और टर्बो सी ++ ने आईएनटी 18 का पुन: उपयोग किया। अन्य कार्यक्रमों ने भी इस वेक्टर का अपने उद्देश्यों के लिए पुन: उपयोग किया।
BIOS हुक
डॉस
DOS सिस्टम पर, IO.SYS या IBMBIO.COM फ़्लॉपी डिस्क परिवर्तन का पता लगाने, फ़ॉर्मेटिंग कॉल को ट्रैक करने, DMA सीमा त्रुटियों को ठीक करने और पहली कॉल से पहले मॉडल कोड 0xFC के साथ IBM के ROM BIOS 01/10/84 में समस्याओं के समाधान के लिए INT 13 को हुक करता है। .
बायपास BIOS
कई आधुनिक ऑपरेटिंग सिस्टम (जैसे लिनक्स और खिड़कियाँ ) स्टार्टअप के बाद किसी भी BIOS इंटरप्ट कॉल का उपयोग नहीं करते हैं, इसके अतिरिक्त हार्डवेयर के साथ सीधे इंटरफेस का चयन करते हैं। ऐसा करने के लिए, वे डिवाइस ड्राइवरों पर भरोसा करते हैं जो या तो ओएस कर्नेल का हिस्सा हैं, ओएस के साथ शिप करते हैं, या हार्डवेयर विक्रेताओं द्वारा प्रदान किए जाते हैं।
इस प्रथा के कई कारण हैं। सबसे महत्वपूर्ण यह है कि आधुनिक ऑपरेटिंग सिस्टम प्रोसेसर के साथ संरक्षित मोड (या लंबे मोड) मोड में चलते हैं, जबकि BIOS कोड केवल वास्तविक मोड में निष्पादित होगा। इसका अर्थ यह है कि यदि संरक्षित मोड में चल रहा कोई OS BIOS कॉल करना चाहता है, तो उसे पहले वास्तविक मोड में स्विच करना होगा, फिर कॉल को निष्पादित करना होगा और उसके वापस आने की प्रतीक्षा करनी होगी, और अंत में वापस सुरक्षित मोड में स्विच करना होगा। यह बेहद धीमा और अक्षम होगा। कोड जो वास्तविक मोड में चलता है (BIOS सहित) 16-बिट X86_memory_segmentation का उपयोग करने के कारण केवल 1 मेगाबाइट मेमोरी तक ही सीमित है। इसके अतिरिक्त, BIOS सामान्यतः किसी विशेष कार्य को करने का सबसे तेज़ विधि नहीं है। वास्तव में, BIOS की गति सीमाओं ने इसे DOS युग में भी कार्यक्रमों के लिए सामान्य बना दिया जिससे कि इसकी प्रदर्शन सीमाओं से बचा जा सके, विशेष रूप से वीडियो ग्राफिक्स डिस्प्ले और तेज़ सीरियल संचार के लिए।
उपरोक्त कारकों से परे, BIOS कार्यक्षमता के साथ समस्याओं में परिभाषित कार्यों की सीमा में सीमाएं, विभिन्न कंप्यूटरों पर समर्थित उन कार्यों के सबसेट में असंगतता, और BIOS की गुणवत्ता में भिन्नताएं सम्मिलित हैं (अर्थात कुछ BIOS पूर्ण और विश्वसनीय हैं, अन्य संक्षिप्त हैं और छोटी गाड़ी)। स्थितियों को अपने हाथों में लेने और BIOS पर निर्भरता से बचने के द्वारा, ऑपरेटिंग सिस्टम डेवलपर्स कुछ जोखिमों और जटिलताओं को समाप्त कर सकते हैं जो वे सिस्टम सॉफ़्टवेयर को लिखने और समर्थन करने में सामना करते हैं। दूसरी ओर, ऐसा करने से वे डेवलपर हर अलग सिस्टम या पेरिफेरल डिवाइस के लिए बेयर-मेटल ड्राइवर सॉफ़्टवेयर प्रदान करने के लिए ज़िम्मेदार हो जाते हैं, जिसके लिए वे अपने ऑपरेटिंग सिस्टम के साथ काम करना चाहते हैं (या उन ड्राइवरों को प्रदान करने के लिए हार्डवेयर उत्पादकों को प्रेरित करने के लिए)।
इस प्रकार यह स्पष्ट होना चाहिए कि छोटे बजट पर विकसित कॉम्पैक्ट ऑपरेटिंग सिस्टम भारी मात्रा में BIOS का उपयोग करते हैं, जबकि बड़े बजट वाले सॉफ्टवेयर इंजीनियरों के विशाल समूहों द्वारा निर्मित बड़े ऑपरेटिंग सिस्टम अधिकांशतः BIOS का उपयोग करने के अतिरिक्त अपने स्वयं के ड्राइवर लिखने का विकल्प चुनते हैं- अर्थात BIOS और संरक्षित मोड की संगतता समस्याओं पर विचार किए बिना भी।
यह भी देखें
- डॉस इंटरप्ट कॉल
- इंटरप्ट डिस्क्रिप्टर टेबल
- इनपुट/आउटपुट आधार पता
- राल्फ ब्राउन की इंटरप्ट लिस्ट
संदर्भ
- ↑ "Booting · Linux Inside". 0xax.gitbooks.io. Retrieved 2020-11-10.
- ↑ "Grub2 Booting Process". 21 June 2016.
- ↑ * BIOS Boot Specification Version 1.01 January 11 1996 Appendix D
- The x86 Interrupt List (a.k.a. RBIL, Ralf Brown's Interrupt List)
- Embedded BIOS User's Manual
- PhoenixBIOS 4.0 User's Manual
- IBM Personal System/2 and Personal Computer BIOS Interface Technical Reference, IBM, 1988, OCLC 20737442
- System BIOS for IBM PCs, Compatibles, and EISA Computers, Phoenix Technologies, 1991, ISBN 0201577607
- Programmer's Guide to the AMIBIOS, American Megatrends, 1993, ISBN 0070015619
- The Programmer's PC Sourcebook by Thom Hogan, Microsoft Press, 1991 ISBN 155615321X