BIOS इंटरप्ट कॉल

From Vigyanwiki

BIOS इंटरप्ट कॉल वह सुविधा है जो ऑपरेटिंग सिस्टम और एप्लिकेशन प्रोग्राम आईबीएम पीसी संगत कंप्यूटरों पर बेसिक इनपुट/आउटपुट सिस्टम फर्मवेयर की सुविधाओं को प्रयुक्त करने के लिए उपयोग करते हैं। परंपरागत रूप से, BIOS कॉल मुख्य रूप से डॉस प्रोग्राम और बूट लोडर जैसे कुछ अन्य सॉफ़्टवेयर द्वारा उपयोग किए जाते हैं (जिनमें ज्यादातर ऐतिहासिक रूप से अपेक्षाकृत सरल एप्लिकेशन सॉफ़्टवेयर सम्मिलित हैं। जो सीधे बूट होते हैं और ऑपरेटिंग सिस्टम के बिना चलते हैं - विशेष रूप से गेम सॉफ़्टवेयर)। BIOS एक्स86 सीपीयू का वास्तविक पता मोड (वास्तविक मोड) में चलता है। इस कारण BIOS को कॉल करने वाले प्रोग्राम को या तो वास्तविक मोड में चलना चाहिए या BIOS को कॉल करने से पूर्व संरक्षित मोड से वास्तविक मोड में स्विच करना चाहिए और फिर से वापस स्विच करना चाहिए। इस कारण से, आधुनिक ऑपरेटिंग सिस्टम जो सीपीयू को संरक्षित मोड या लॉन्ग मोड में उपयोग करते हैं, सामान्यतः सिस्टम फ़ंक्शंस का समर्थन करने के लिए BIOS इंटरप्ट कॉल का उपयोग नहीं करते हैं, चूंकि वे बूटिंग के समय हार्डवेयर की जांच और आरंभ करने के लिए BIOS इंटरप्ट कॉल का उपयोग करते हैं।[1] वास्तविक मोड में 1 एमबी मेमोरी सीमा है। आधुनिक बूट लोडर (जैसे GRUB2, विंडोज़ बूट प्रबंधक ) अवास्तविक मोड या संरक्षित मोड का उपयोग करते हैं (और वर्चुअल 8086 मोड में BIOS इंटरप्ट कॉल निष्पादित करते हैं, किन्तु केवल ओएस बूटिंग के लिए) 4 जीबी तक पहुंच के लिए मेमोरी है।[2]

सभी कंप्यूटरों में, सॉफ्टवेयर निर्देश विधुत प्रवाह होने के क्षण से भौतिक हार्डवेयर (स्क्रीन, डिस्क, कीबोर्ड, आदि) को नियंत्रित करते हैं। पीसी में, BIOS, मदरबोर्ड पर रोम में पहले से लोड, सीपीयू के रीसेट होने के पश्चात् नियंत्रण कर लेता है, जिसमें पावर-अप के समय, जब हार्डवेयर रीसेट बटन दबाया जाता है, या जब महत्वपूर्ण सॉफ़्टवेयर विफलता ( ट्रिपल दोष ) होती है हार्डवेयर रीसेट को स्वचालित रूप से ट्रिगर करने के लिए मेनबोर्ड सर्किट्री का कारण बनता है। BIOS हार्डवेयर का परीक्षण करता है और इसकी स्थिति को आरंभ करता है। बूट प्रोग्राम खोजता है, लोड करता है और चलाता है (सामान्यतः ओएस बूट लोडर, और ऐतिहासिक रोम बेसिक) और मशीन पर चलने वाले सॉफ़्टवेयर को प्रारंभिक हार्डवेयर नियंत्रण प्रदान करता है। जो सामान्यतः ऑपरेटिंग सिस्टम (एप्लिकेशन प्रोग्राम के साथ) होता है, किन्तु यह सीधे बूटिंग एकल सॉफ़्टवेयर एप्लिकेशन हो सकता है।

आईबीएम के भाग के लिए, उन्होंने प्रारंभिक आईबीएम पीसी मॉडल (पीएस / 2 से पहले) प्रोग्रामिंग करते समय अपने BIOS को पूर्ण प्रकार से उपयोग करने या सीधे हार्डवेयर का उपयोग करने और BIOS से पूर्ण प्रकार से बचने के लिए आवश्यक सभी जानकारी प्रदान की जाती है। चूँकि प्रारंभ से ही, प्रोग्रामर के पास प्रति-हार्डवेयर-परिधीय आधार पर BIOS का उपयोग करने या न करने का विकल्प था। अतः आईबीएम ने अच्छी प्रकार से व्यवहार किए गए कार्यक्रमों के लेखन को दृढ़ता से प्रोत्साहित किया था। जो केवल BIOS इंटरप्ट कॉल (और डॉस सेवा कॉल) के माध्यम से हार्डवेयर तक पहुंचे थे। जो उपस्तिथा और भविष्य के पीसी मॉडल के साथ सॉफ्टवेयर की अनुकूलता का समर्थन करने के लिए असमान परिधीय हार्डवेयर वाले थे। किन्तु आईबीएम ने समझा कि कुछ सॉफ्टवेयर डेवलपर्स के लिए और हार्डवेयर ग्राहक, हार्डवेयर को सीधे नियंत्रित करने के लिए उपयोगकर्ता सॉफ़्टवेयर की क्षमता आवश्यकता थी। आंशिक रूप से, यह जिससे की था। जिससे की BIOS सेवाओं द्वारा सभी हार्डवेयर सुविधाओं और कार्यों का महत्वपूर्ण उपसमुच्चय उजागर नहीं किया गया था। दो उदाहरणों के लिए (अनेक के मध्य), एमडीए और सीजीए एडेप्टर हार्डवेयर स्क्रॉल करने में सक्षम हैं और पीसी सीरियल एडेप्टर बाधित-संचालित डेटा ट्रांसफर में सक्षम है। किन्तु आईबीएम BIOS इनमें से किसी भी उपयोगी तकनीकी सुविधा का समर्थन नहीं करता है।

आज, नए पीसी में BIOS अभी भी आईबीएम पर्सनल कंप्यूटर/एटी (सन्न 1984 में प्रारंभ) के लिए आईबीएम द्वारा परिभाषित BIOS इंटरप्ट फ़ंक्शन कॉल्स का सबसे अधिक समर्थन करता है। यदि सभी नहीं, तब अनेक और नए लोगों के साथ इनमें से कुछ के लिए प्रारूप विभिन्न अन्य संगठनों और सहयोगी उद्योग समूहों द्वारा प्रख्यापित मूल (जैसे विस्तारित पैरामीटर रेंज) है। यह हार्डवेयर संगतता की समान डिग्री के साथ मिलकर कार्य करता है। इसका तात्पर्य है कि आईबीएम एटी के लिए लिखे गए अधिकांश प्रोग्राम आज भी नए पीसी पर सही प्रकार से चल सकते हैं। अतः यह मानते हुए कि निष्पादन की तेज गति स्वीकार्य है (जो सामान्यतः सभी खेलों के लिए है जो उपयोग करते हैं सीपीयू-आधारित समय)। BIOS इंटरप्ट्स के माध्यम से एक्सेस की जाने वाली सेवाओं की अधिक सीमाओं के अतिरिक्त, वे तकनीकी परिवर्तन के लिए अधिक उपयोगी और स्थायी सिद्ध करना हुए हैं।

BIOS कॉल का उद्देश्य

BIOS इंटरप्ट कॉल प्रोग्राम द्वारा अनुरोधित हार्डवेयर नियंत्रण या आई/ओ फ़ंक्शन करता है। प्रोग्राम को सिस्टम की जानकारी लौटाता है, या दोनों करता है। BIOS कॉल के उद्देश्य का प्रमुख तत्व अमूर्त है - BIOS कॉल सामान्यतः परिभाषित कार्य करता है, और सिस्टम के विशेष हार्डवेयर पर उन कार्यों को कैसे निष्पादित किया जाता है। इसका विशिष्ट विवरण BIOS में एनकैप्सुलेट किया जाता है और प्रोग्राम से अप्रत्यक्ष होता है। जिससे की उदाहरण के लिए, प्रोग्राम जो हार्ड डिस्क से पढ़ना चाहता है। उसे यह जानने की आवश्यकता नहीं है कि हार्ड डिस्क समानांतर ATA, SCSI, या SATA ड्राइव है। (या पूर्व के दिनों में, बढ़ी हुई छोटी डिस्क इंटरफ़ेस ड्राइव, या संशोधित आवृत्ति मापांकेशन या रन लेंथ लिमिटेड ड्राइव संभवतः सीगेट ST-506 नियंत्रक के साथ, संभवतः अनेक पश्चिमी डिजिटल सन्न 1980 के नियंत्रक प्रकारों में से एक, या किसी अन्य ब्रांड के भिन्न अधिकार-संबंधी नियंत्रक के साथ)। प्रोग्राम को केवल उस ड्राइव की BIOS-परिभाषित संख्या की पहचान करने की आवश्यकता है। जिसे वह एक्सेस करना चाहता है और उस क्षेत्र के पते को पढ़ने या लिखने की आवश्यकता है और BIOS इस सामान्य अनुरोध को प्राथमिक संचालन के विशिष्ट अनुक्रम में अनुवाद करने का ध्यान रखता है। उस ड्राइव से जुड़े विशेष डिस्क नियंत्रक हार्डवेयर के माध्यम से कार्य को पूर्ण करने के लिए प्रोग्राम को प्रत्येक प्रकार की हार्ड डिस्क (या डिस्प्ले एडॉप्टर, या पोर्ट इंटरफ़ेस, या वास्तविक समय घड़ी परिधीय) को निम्न स्तर पर नियंत्रित करने के बारे में जानने की आवश्यकता से मुक्त किया गया है। जिसे एक्सेस करने की आवश्यकता हो सकती है। यह प्रोग्रामिंग ऑपरेटिंग सिस्टम और एप्लिकेशन दोनों को सरल बनाता है और प्रोग्राम को छोटा बनाता है। प्रोग्राम कोड के दोहराव को कम करता है, जिस कारण BIOS में सम्मिलित कार्यक्षमता को प्रत्येक प्रोग्राम में सम्मिलित करने की आवश्यकता नहीं होती है। जिसकी उसे आवश्यकता होती है, उसे इसके अतिरिक्त BIOS में अपेक्षाकृत कम कॉल को प्रोग्राम में सम्मिलित किया जाता है। (ऑपरेटिंग सिस्टम में जहां BIOS का उपयोग नहीं किया जाता है। वहा ऑपरेटिंग सिस्टम द्वारा प्रदान की जाने वाली सर्विस कॉल सामान्यतः समान कार्य और उद्देश्य को पूर्ण करती हैं।)

सामान्यतः उपस्तिथा सॉफ़्टवेयर के साथ अनुकूलता बनाए रखने के लिए नए सिस्टम को डिज़ाइन करते समय पुराने सिस्टम के साथ त्रुटिहीन हार्डवेयर संगतता बनाए रखने के लिए BIOS कंप्यूटर हार्डवेयर डिजाइनरों (इस तक कि प्रोग्राम विशेष रूप से BIOS का उपयोग करने के लिए लिखे गए हैं) को मुक्त करता है। उदाहरण के लिए, आईबीएम पीसीजेआर पर कीबोर्ड हार्डवेयर पहले के आईबीएम पीसी मॉडल के कीबोर्ड हार्डवेयर की तुलना में बहुत भिन्न विधि से कार्य करता है। किन्तु उन प्रोग्रामों के लिए जो केवल BIOS के माध्यम से कीबोर्ड का उपयोग करते हैं, यह अंतर लगभग अदृश्य है। (इस विवाद के दूसरे पक्ष के अच्छे उदाहरण के रूप में, पीसीजेआर प्रस्तुत किए जाने के समय उपयोग में आने वाले पीसी प्रोग्रामों का महत्वपूर्ण भाग विशेष रूप से BIOS के माध्यम से कीबोर्ड का उपयोग नहीं करता था, जिससे की आईबीएम ने पीसीजेआर में हार्डवेयर सुविधाओं को भी सम्मिलित किया जिससे कि इसका अनुकरण किया जा सकता है। जिस प्रकार आईबीएम पर्सनल कंप्यूटर और आईबीएम पर्सनल कंप्यूटर एक्सटी कीबोर्ड हार्डवेयर कार्य करता है। हार्डवेयर अनुकरण त्रुटिहीन नहीं है, जिससे की सभी प्रोग्राम जो सीधे कीबोर्ड हार्डवेयर का उपयोग करने का प्रयास करते हैं, पीसीजेआर पर सही प्रकार से कार्य करते है, किन्तु सभी प्रोग्राम जो केवल BIOS कीबोर्ड सेवाओं का उपयोग करते हैं।)

हार्डवेयर सुविधाओं तक पहुंच प्रदान करने के अतिरिक्त, BIOS अतिरिक्त सुविधाएं प्रदान करता है। जो कि BIOS सॉफ़्टवेयर में कार्यान्वित की जाती हैं। उदाहरण के लिए, BIOS आठ टेक्स्ट डिस्प्ले पेजों के लिए भिन्न-भिन्न कर्सर की स्थिति रखता है और स्वचालित लाइन रैप के साथ कंप्यूटर टर्मिनल जैसा आउटपुट प्रदान करता है और कैरिज रिटर्न और रेखा भरण जैसे बुनियादी नियंत्रण वर्णों की व्याख्या करता है। जबकि सीजीए-संगत टेक्स्ट डिस्प्ले हार्डवेयर केवल वैश्विक प्रदर्शन कर्सर है और स्वचालित रूप से कर्सर को आगे नहीं बढ़ा सकता है। अतः प्रदर्शन मेमोरी को संबोधित करने के लिए कर्सर की स्थिति का उपयोग करते है (जिससे कि यह निर्धारित किया जा सकता है कि कौन सा वर्ण सेल परिवर्तित या जांचा जा सकता है।), जो नियंत्रण वर्णों की व्याख्या करता है। अन्य उदाहरण के लिए, BIOS कीबोर्ड इंटरफ़ेस विभिन्न शिफ्ट स्टेट्स (बाएं और दाएं Shift, Ctrl, और Alt) का ट्रैक रखने के लिए अनेक कीस्ट्रोक्स और कुंजी संयोजनों की व्याख्या करता है। Shift+PrtScrn के पूर्व होने पर प्रिंट-स्क्रीन सेवा को कॉल करने के लिए, सिस्टम को रिबूट करने के लिए जब Ctrl+Alt+Del दबाया जाता है। लॉक स्टेट्स (कैप्स लॉक, न्यूम लॉक और स्क्रॉल लॉक) का ट्रैक रखने के लिए और एटी-क्लास मशीनों में, संबंधित लॉक-स्टेट इंडिकेटर लाइट्स को नियंत्रित करते है। कीबोर्ड, और कीबोर्ड के लिए अन्य समान व्याख्यात्मक और प्रबंधन कार्य करने के लिए। इसके विपरीत, मानक पीसी और पीसी-एटी कीबोर्ड हार्डवेयर की सामान्य क्षमताएं सिस्टम को गणना करने तक सीमित होती हैं। जिसमें व्यक्तिगत कुंजी को दबाने या जारी करने की प्रत्येक आदिम घटना होती है। (अर्थात जारी स्थिति से उदास स्थिति या इसके विपरीत संक्रमण करना) ), कीबोर्ड इकाई का कमांड्ड रीसेट और आत्म परीक्षण करना, और एटी-क्लास कीबोर्ड के लिए, लॉक-स्टेट इंडिकेटर्स (एलईडी) की पूर्ण स्थिति सेट करने के लिए होस्ट सिस्टम से कमांड निष्पादित करना होता है।

कॉलिंग BIOS: BIOS सॉफ़्टवेयर बाधित होता है

ऑपरेटिंग सिस्टम और अन्य सॉफ़्टवेयर, स्थापित हार्डवेयर को नियंत्रित करने के लिए सॉफ़्टवेयर इंटरप्ट के माध्यम से, BIOS सॉफ़्टवेयर के साथ संचार करते हैं। सॉफ्टवेयर इंटरप्ट की सामान्य अवधारणा की विशिष्ट विविधता है। इंटरप्ट ऐसी क्रियाविधि है जिसके द्वारा सीपीयू हो सकता है।

मुख्य-लाइन प्रोग्राम को निष्पादित करना बंद करने और इसके अतिरिक्त इंटरप्ट सर्विस रूटीन (आईएसआर) नामक विशेष प्रोग्राम को तुरंत निष्पादित करने का निर्देश दिया गया था। चूँकि आईएसआर समाप्त होने के पश्चात्, सीपीयू मुख्य प्रोग्राम के साथ जारी रहता है। अतः एक्स86 सीपीयू पर जब कोई व्यवधान उत्पन्न होता है, तब कॉल करने के लिए आईएसआर को स्मृति में आईएसआर प्रारंभ-बिंदु पतों (इंटरप्ट सदिश कहा जाता है) की तालिका में देखकर पाया जाता है कि व्यवधान सदिश तालिका (आईवीटी) में इसके टाइप नंबर द्वारा 0 से 255 तक इंटरप्ट का आह्वान किया जाता है और टाइप नंबर को इंटरप्ट सदिश तालिका में इंडेक्स के रूप में उपयोग किया जाता है और उस इंडेक्स में तालिका में आईएसआर का पता पाया जाता है। जो प्रतिक्रिया में चलाया जाता है। अतः रुकावट सॉफ्टवेयर इंटरप्ट केवल इंटरप्ट है। जो सॉफ्टवेयर कमांड द्वारा ट्रिगर किया जाता है। जिससे की, सॉफ्टवेयर सबरूटीन्स जैसे कार्य को बाधित करता है, मुख्य अंतर यह है कि सॉफ्टवेयर इंटरप्ट कॉल करने वाले प्रोग्राम को आईएसआर का पता जानने की जरूरत नहीं है, केवल इसकी इंटरप्ट संख्या सिस्टम व्यवस्था के प्रारूप में प्रतिरूपकता, अनुकूलता और लचीलेपन के लिए इसके लाभ हैं।

BIOS इंटरप्ट कॉल को ऑपरेटिंग सिस्टम जैसे BIOS और BIOS क्लाइंट सॉफ़्टवेयर के मध्य संदेश भेजने के लिए तंत्र के रूप में माना जा सकता है। संदेश BIOS से डेटा या कार्रवाई का अनुरोध करते हैं और अनुरोधित डेटा, स्थिति की जानकारी या अनुरोधित कार्रवाई के उत्पाद को कॉलर को वापस करते हैं। संदेशों को श्रेणियों में बांटा गया है। जिनमें से प्रत्येक की अपनी रुकावट संख्या है और अधिकांश श्रेणियों में उप-श्रेणियां होती हैं। जिन्हें फ़ंक्शन कहा जाता है और फ़ंक्शन संख्याओं द्वारा पहचाना जाता है। BIOS क्लाइंट अधिकांश सूचनाओं को सीपीयू रजिस्टरों में BIOS को पास करता है और उसी प्रकार से अधिकांश जानकारी वापस प्राप्त करता है। किन्तु रजिस्टरों में फिट होने के लिए बहुत बड़ा डेटा, जैसे नियंत्रण मापदंडों की तालिका या डिस्क ट्रांसफर के लिए डिस्क सेक्टर डेटा, बफर आवंटित करके पारित किया जाता है। (अर्थात कुछ स्थान) स्मृति में और रजिस्टरों में बफर के पते को पास करना होता है। (कभी-कभी मेमोरी में डेटा वस्तु के एकाधिक पते मेमोरी में डेटा संरचना में पास किए जा सकते हैं। उस संरचना के पते रजिस्टरों में BIOS को पास किए जाते हैं।) इंटरप्ट नंबर को सॉफ्टवेयर इंटरप्ट निर्देश (इंटेल असेंबली भाषा में) के पैरामीटर के रूप में निर्दिष्ट किया जाता है। इंटरप्ट निर्देश और फ़ंक्शन संख्या एएच रजिस्टर में निर्दिष्ट है अर्थात्, कॉलर एएच रजिस्टर को वांछित फ़ंक्शन की संख्या पर सेट करता है। सामान्यतः, प्रत्येक इंटरप्ट संख्या से संबंधित BIOS सेवाएं दूसरे से स्वतंत्र रूप से संचालित होती हैं। किन्तु इंटरप्ट सेवा के अंदर कार्य ही BIOS प्रोग्राम द्वारा नियंत्रित किए जाते हैं और स्वतंत्र नहीं होते हैं। (यह अंतिम बिंदु पुनर्वित्त (कंप्यूटिंग) के लिए प्रासंगिक है।)

BIOS सॉफ़्टवेयर सामान्यतः कॉल करने वाले के पास त्रुटि कोड के साथ वापस आता है। यदि सफल नहीं होता है या स्थिति कोड और/या सफल होने पर अनुरोधित डेटा के साथ डेटा स्वयं बिट जितना छोटा या पूरे कच्चे डिस्क क्षेत्रों के 65,536 बाइट्स जितना बड़ा हो सकता है। (अधिकतम जो वास्तविक-मोड मेमोरी सेगमेंट में फिट होता है।) चूँकि अनेक भिन्न-भिन्न कॉरपोरेट संस्थाओं द्वारा BIOS को अनेक वर्षों में अनेक बार विस्तारित और बढ़ाया गया है और दुर्भाग्य से इस विकास का परिणाम यह है कि सभी BIOS फ़ंक्शंस जिन्हें डेटा को प्रारूपित करने और संचार करने या परिणामों की गणना करने के लिए सुसंगत सम्मेलनों का उपयोग नहीं कहा जा सकता है। कुछ BIOS फ़ंक्शन विस्तृत स्थिति जानकारी की गणना करते हैं। चूँकि अन्य सफलता या विफलता की गणना भी नहीं कर सकते हैं। किन्तु कॉल करने वाले को सफलता मानने के लिए (या किसी अन्य विधि से परिणाम का परीक्षण करने के लिए) शांतिपूर्वक वापस लौटते हैं। कभी-कभी यह निर्धारित करने में कठिनाई हो सकती है कि निश्चित कंप्यूटर पर BIOS द्वारा निश्चित BIOS फ़ंक्शन कॉल समर्थित है या नहीं, या उस कंप्यूटर पर कॉल के पैरामीटर की सीमा क्या है। (कुछ अमान्य फ़ंक्शन नंबरों के लिए, या प्रमुख मापदंडों के अमान्य मानों के साथ मान्य फ़ंक्शन नंबर - विशेष रूप से प्रारंभिक आईबीएम BIOS संस्करण के साथ - BIOS कुछ भी नहीं कर सकता है और बिना किसी त्रुटि कोड के वापस आ सकता है। तो यह [असुविधाजनक किन्तु अपरिहार्य] जिम्मेदारी है कॉलर या तो ऐसी कॉल न करके इस स्थिति से बचने के लिए या कॉल के प्रभावी होने के अतिरिक्त कॉल के अपेक्षित प्रभाव के लिए सकारात्मक रूप से परीक्षण करने के लिए होता है। जिससे कि BIOS अपने इतिहास में अनेक चरणों में बड़े मापक पर विकसित हुआ है। अतः फ़ंक्शन जो मान्य है। वह कुछ निश्चित विक्रेता से BIOS संस्करण उसी विक्रेता से या किसी अन्य विक्रेता से किसी भी संबंधित आयु के BIOS संस्करण में पहले या भिन्न-भिन्न BIOS संस्करण में मान्य नहीं हो सकता है।)

जिससे कि BIOS इंटरप्ट कॉल सीपीयू रजिस्टर-आधारित पैरामीटर पासिंग का उपयोग करते हैं। कॉल असेंबली भाषा से किए जाने के लिए उन्मुख होते हैं और अधिकांश उच्च स्तरीय प्रोग्रामिंग भाषा उच्च स्तरीय भाषा (एचएलएल) से नहीं किए जा सकते हैं। चूँकि उच्च स्तरीय भाषा रैपर रूटीन में पुस्तकालय प्रदान कर सकती है। जो उच्च-स्तरीय भाषा द्वारा उपयोग किए जाने वाले फॉर्म (सामान्यतः स्टैक-आधारित) से मापदंडों का अनुवाद BIOS द्वारा आवश्यक रजिस्टर-आधारित फॉर्म में करती है। फिर एचएलएल कॉलिंग कन्वेंशन के बाद BIOS रिटर्न सी के कुछ रूपों में सी मापांक के अंदर इनलाइन असेंबली भाषा का उपयोग करके BIOS कॉल किए जा सकते हैं। (इनलाइन असेंबली भाषा के लिए समर्थन एएनएसआई सी मानक का भाग नहीं है किन्तु भाषा विस्तार है। जिससे की इनलाइन असेंबली भाषा का उपयोग करने वाले सी मापांक शुद्ध एएनएसआई मानक सी मापांक से कम पोर्तालिका हैं।)

रुकावट का आह्वान

इंटरप्ट एक्स86 असेंबली भाषा निर्देश का उपयोग करके रुकावट का आह्वान किया जा सकता है। उदाहरण के लिए, BIOS इंटरप्ट 0x10 का उपयोग कर स्क्रीन पर वर्ण को प्रिंट करने के लिए निम्नलिखित एक्स86 असेंबली भाषा निर्देशों को निष्पादित किया जा सकता है।

 mov ah, 0x0e    ; function number = 0Eh : Display Character
 mov al, '!'     ; AL = code of character to display
 int 0x10        ; call INT 10h, BIOS video service

इंटरप्ट तालिका

सामान्य BIOS इंटरप्ट क्लासेस की सूची नीचे पाई जा सकती है। ध्यान दें कि कुछ BIOS (विशेष रूप से पुराने वाले) इन सभी इंटरप्ट कक्षाओं को प्रयुक्त नहीं करते हैं।

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

इंटरप्ट सदिश विवरण
05h जब Shift-Printerpt स्क्रीन को दबाया जाता हैऔर इसके साथ ही जब बाउंड निर्देश बाउंड विफलता का पता लगाता है, तब इसे निष्पादित किया जाता है।
08h यह वास्तविक समय घड़ी इंटरप्ट है। यह 18.2 बार/सेकंड फायर करता है। इस इंटरप्ट के समय BIOS समय-समय पर काउंटर बढ़ाता है।
09h यह कीबोर्ड इंटरप्ट है। यह समान्यतः तब ट्रिगर होता है जब कीबोर्ड पर कोई कुंजी दबाई जाती है।
10h वीडियो सेवाएं
एएच विवरण
00h वीडियो मोड सेट करें।
01h कर्सर का आकार सेट करें।
02h कर्सर की स्थिति निर्धारित करें।
03h कर्सर की स्थिति और आकार प्राप्त करें।
04h लाइट पेन स्थिति प्राप्त करें।
05h प्रदर्शन पृष्ठ सेट करें।
06h स्पष्ट / स्क्रॉल स्क्रीन ऊपर।
07h स्पष्ट / स्क्रॉल स्क्रीन नीचे।
08h कर्सर पर चरित्र और गुण पढ़ें।
09h कर्सर पर कैरेक्टर और एट्रिब्यूट लिखें।
0Ah कर्सर पर कैरेक्टर लिखें।
0Bh बॉर्डर कलर सेट करें।
0Ch ग्राफिक्स पिक्सेल लिखें।
0Dh ग्राफिक्स पिक्सेल पढ़ें।
0Eh टीटीवाई मोड में कैरेक्टर लिखें।
0Fh वीडियो मोड प्राप्त करें।
10h पैलेट रजिस्टर सेट करें (ईजीए, वीजीए, एसवीजीए)।
11h कैरेक्टर जेनरेटर (ईजीए, वीजीए, एसवीजीए)।
12h वैकल्पिक चयन कार्य (ईजीए, वीजीए, एसवीजीए)।
13h स्ट्रिंग लिखें।
1Ah प्रदर्शन संयोजन कोड प्राप्त करें या सेट करें (वीजीए, एसवीजीए)।
1Bh कार्यक्षमता जानकारी प्राप्त करें (वीजीए, एसवीजीए)।
1Ch वीडियो स्थिति प्राप्त करे या पुनर्स्थापित करें (VGA, SVGA)।
4Fh VESA BIOS विस्तार कार्य (SVGA)।
11h उपकरण सूची वापस करता है।
12h पारंपरिक स्मृति आकार वापस करे।
13h निम्न स्तर की डिस्क सेवाएँ
एएच विवरण
00h डिस्क ड्राइव को रीसेट करें।
01h ड्राइव स्थिति खोज करता है।
02h सेक्टर्स पढ़ें।
03h सेक्टर लिखें।
04h सेक्टरों को सत्यापित करें।
05h प्रारूप ट्रैक।
08h ड्राइव पैरामीटर प्राप्त करें।
09h इनिट फिक्स्ड ड्राइव पैरामीटर्स।
0Ch निर्दिष्ट ट्रैक की खोज करें।
0Dh फ़िक्स्ड डिस्क नियंत्रक को रीसेट करें।
15h ड्राइव प्रकार प्राप्त करें।
16h फ्लॉपी ड्राइव मीडिया परिवर्तन स्थिति प्राप्त करें।
17h डिस्क प्रकार सेट करें।
18h फ़्लॉपी ड्राइव मीडिया प्रकार सेट करें।
41h विस्तारित डिस्क ड्राइव (ईडीडी) स्थापना जांच।
42h एक्सटेंडेड रीड सेक्टर्स।
43h विस्तारित लेखन क्षेत्र।
44h विस्तारित सत्यापित क्षेत्र।
45h लॉक/अनलॉक ड्राइव।
46h मीडिया को बाहर करो।
47h एक्सटेंडेड सीक।
48h एक्सटेंडेड गेट ड्राइव पैरामीटर्स।
49h एक्सटेंडेड मीडिया परिवर्तन स्थिति प्राप्त करें।
4Eh विस्तारित सेट हार्डवेयर कॉन्फ़िगरेशन।
14h सीरियल पोर्ट सेवाएं
एएच विवरण
00h सीरियल पोर्ट आरंभीकरण।
01h संचारित चरित्र।
02h कैरेक्टर प्राप्त करें।
03h स्थति।
15h Miscellaneous system services
एएच एएल विवरण
00h कैसेट ड्राइव मोटर प्रारंभ करें (एजिएम पीसी/पीसीजेआर केवल)।
01h कैसेट ड्राइव मोटर बंद करें (आईबीएम पीसी/पीसीजेआर केवल)।
02h कैसेट से डेटा ब्लॉक पढ़ें (आईबीएम पीसी/पीसीजेआर केवल)।
03h कैसेट में डेटा ब्लॉक लिखें (आईबीएम पीसी/पीसीजेआर केवल)।
4Fh कीबोर्ड इंटरसेप्टर।
83h प्रतीक्षा घटना।
84h जॉयस्टिक पढ़ें (1986 से BIOS)।
85h Sysreq कुंजी कॉलआउट।
86h प्रतीक्षा।
87h मूव ब्लॉक।
88h विस्तारित मेमोरी आकार प्राप्त करें।
89h संरक्षित मोड पर स्विच करें।
C0h सिस्टम पैरामीटर प्राप्त करें।
C1h विस्तृत BIOS डेटा क्षेत्र खंड प्राप्त करें।
C2h डिवाइस के कार्यों को इंटरप्ट करना।
C3h वॉचडॉग टाइमर फ़ंक्शंस - केवल पीएस/2 सिस्टम।
C4h प्रोग्राम करने योग्य विकल्प चुनें - केवल एमसीए बस पीएस/2 सिस्टम।
D8h EISA सिस्टम फ़ंक्शंस - केवल EISA बस सिस्टम
E8h 01h एक्सटेंडेड मेमोरी साइज प्राप्त करें (नया फंक्शन, 1994 से)। 64 एमबी से अधिक मेमोरी आकार के लिए परिणाम देता है।
E8h 20h क्वेरी सिस्टम एड्रेस मैप E820 से दी गई जानकारी पुराने AX=E801h और AH=88h इंटरप्टरफेस से दी गई जानकारी का स्थान लेती है।
16h कीबोर्ड सेवाएं
एएच विवरण
00h कैरेक्टर पढ़ें।
01h इनपुट स्थिति पढ़ें।
02h कीबोर्ड शिफ्ट स्थिति पढ़ें।
05h कीस्ट्रोक को कीबोर्ड बफर में स्टोर करें।
10h कैरेक्टर एक्सटेंडेड पढ़ें।
11h इनपुट स्थिति विस्तारित पढ़ें।
12h कीबोर्ड शिफ्ट स्थिति विस्तारित पढ़ें।
17h Prइंटरप्टer services
एएच विवरण
00h प्रइंट्राप्ट कैरेक्टर टू प्रइंट्राप्टर।
01h प्रांप्टर को इनिशियलाइज़ करें।
02h प्रिंटर स्थिति की जाँच करें।
18h कैसेट बेसिक निष्पादित करता है आईबीएम मशीनों पर शुरुआती पीएस/2 लाइन तक यह इंटरप्ट रोम कैसेट बेसिक प्रारंभ करता है। चूँकि क्लोन में यह सुविधा नहीं थी और यदि इंटरप्ट 18h को निष्पादित किया गया था। अतः तब विभिन्न मशीनें / BIOS विभिन्न प्रकार की विभिन्न क्रियाएं करती है। समान्यतः त्रुटि संदेश बताता है कि कोई बूट करने योग्य डिस्क उपस्थित नहीं थी। आधुनिक मशीनें इस इंटरप्ट के माध्यम से नेटवर्क से बूट करने का प्रयास करता है। आधुनिक मशीनों पर इस इंटरप्ट को BIOS द्वारा बूटलोडर से संकेत के रूप में माना जाता है कि यह अपना कार्य पूर्ण करने में विफल रहता है। तब BIOS उपयुक्त अगला कदम उठा सकता है।
19h डाक के पश्चात् ऑपरेटिंग सिस्टम को लोड करने के लिए BIOS द्वारा इस इंटरप्ट का उपयोग किया जाता है। प्रोग्राम कंप्यूटर को रिबूट करने के लिए इस इंटरप्ट को कॉल कर सकता है (चूँकि यह सुनिश्चित करना चाहिए कि हार्डवेयर इंटरप्ट या डीएमए संचालन सिस्टम को BIOS या बूट प्रक्रिया द्वारा सिस्टम के पुनर्संरचना के समय हैंग या क्रैश नहीं करता है)।
1Ah वास्तविक समय घड़ी सेवाएं
एएच विवरण
00h आरटीसी पढ़ें।
01h आरटीसी सेट करें।
02h आरटीसी समय पढ़ें।
03h आरटीसी समय निर्धारित करें।
04h आरटीसी तिथि पढ़ें।
05h आरटीसी तिथि निर्धारित करें।
06h आरटीसी अलार्म सेट करें।
07h आरटीसी अलार्म रीसेट करें।
1Ah पीसीआई सेवाएं - पीसीआई 2.0 या पश्चात् के संस्करण का समर्थन करने वाले BIOS द्वारा कार्यान्वित
एएक्स विवरण
B101h पीसीआई स्थापना जांच।
B102h पीसीआई स्थापना जांच।
B103h पीसीआई कक्षा कोड खोजें।
B106h पीसीआई बस-विशिष्ट संचालन।
B108h कॉन्फ़िगरेशन बाइट पढ़ें।
B109h कॉन्फ़िगरेशन शब्द पढ़ें।
B10Ah कॉन्फ़िगरेशन डॉवॉर्ड पढ़ें।
B10Bh कॉन्फ़िगरेशन बाइट लिखें।
B10Ch कॉन्फ़िगरेशन शब्द लिखें।
B10Dh कॉन्फ़िगरेशन डॉवर्ड लिखें।
B10Eh आईआरक्यू नियमित जानकारी प्राप्त करें।
B10Fh पीसीआई आईआरक्यू सेट करें।
1Bh Ctrl-Break हैंडलर - INT 09 द्वारा कॉल किया जाता है जब Ctrl-Break दबाया जाता है।
1Ch टाइमर टिक हैंडलर - INT 08 द्वारा कॉल किया गया।
1Dh नहीं बुलाया जाना, वीपीटी (वीडियो पैरामीटर तालिका) के लिए सिर्फ एक संकेतक, जिसमें वीडियो मोड पर डेटा होता है।
1Eh नहीं बुलाया जाना, डीपीटी (डिस्केट पैरामीटर तालिका) के लिए बस एक पॉइंटर, जिसमें डिस्केट ड्राइव से संबंधित विभिन्न प्रकार की जानकारी होती है।
1Fh नहीं बुलाया जाना, वीजीसीटी (वीडियो ग्राफिक्स कैरेक्टर तालिका) के लिए बस एक पॉइंटरप्टर, जिसमें 80एच से एफएफएच के लिए एएससीआईआई वर्णों के लिए डेटा सम्मिलित है।
41h एड्रेस पोइंटरप्टर, एफडीपीटी = फिक्स्ड डिस्क पैरामीटर तालिका (पहली हार्ड ड्राइव)।
46h एड्रेस पोइंटर, एफडीपीटी = फिक्स्ड डिस्क पैरामीटर तालिका (दूसरा हार्ड ड्राइव)।
4Ah अलार्म के लिए आरटीसी द्वारा कॉल किया गया।

INT 18h: बेसिकनिष्पादित करें

INT 18h परंपरागत रूप से विकल्प रोम में संग्रहीत कैसेट बेसिक (माइक्रोसॉफ्ट द्वारा प्रदान) के कार्यान्वयन के लिए कूद गया था। यदि BIOS स्टार्टअप पर बूट करने योग्य डिस्क वॉल्यूम की पहचान करने में असमर्थ था तो यह कॉल सामान्यतः प्रयुक्त की जाती थी।

सन्न 1981 में जब मूल आईबीएम पीसी (आईबीएम मशीन प्रकार 5150) जारी किया गया था। उस समय रोम में बेसिक प्रमुख विशेषता थी। कमोडोर 64 और ऐप्पल II लाइन जैसे समकालीन लोकप्रिय व्यक्तिगत कंप्यूटरों में भी रोम में माइक्रोसॉफ्ट कैसेट बेसिक था। (चूंकि कमोडोर ने अपने लाइसेंस प्राप्त संस्करण कमोडोर बेसिक का नाम परिवर्तित कर दिया था)। जिससे की अपने इच्छित बाजार के बड़े भाग में, आईबीएम पीसी को प्रतिस्पर्धा करने के लिए बेसिक की आवश्यकता थी। उन अन्य प्रणालियों की प्रकार, आईबीएम पीसी के रोम बेसिक ने आदिम डिस्क रहित ऑपरेटिंग सिस्टम के रूप में कार्य किया था। जिससे उपयोगकर्ता प्रोग्राम को लोड करने, सहेजने और चलाने के साथ-साथ उन्हें लिखने और परिष्कृत करने की अनुमति देता है। (मूल आईबीएम पीसी भी आईबीएम का एकमात्र पीसी मॉडल था। जो अपने पूर्वोक्त दो प्रतिस्पर्धियों की प्रकार, कैसेट इंटरफ़ेस हार्डवेयर सम्मिलित था। बेस मॉडल आईबीएम पीसी में केवल 16 कीबी रैम और कोई डिस्क ड्राइव [किसी भी प्रकार का] नहीं था। जिससे की कैसेट बेस मॉडल को प्रयोग करने योग्य बनाने के लिए रोम में इंटरफ़ेस और बेसिक आवश्यक थे। 32 कीबी से कम रैम वाला आईबीएम पीसी डिस्क से बूट करने में असमर्थ है। मूल आईबीएम पीसी में पाँच 8 कीबी रोम चिप्स में से, कुल 40 कीबी, चार में होते हैं। बेसिक और केवल में BIOS होता है। जब केवल 16 कीबी रैम स्थापित की जाती है। तब रोम बेसिक कुल सिस्टम मेमोरी के आधे से अधिक [4/7, त्रुटिहीन होने के लिए] खाता है।)

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

डिजिटल का इंद्रधनुष 100 बी ने इसके BIOS को कॉल करने के लिए INT 18h उपयोग किया गया था। जो आईबीएम BIOS के साथ असंगत था। मेमोरी आवंटन और पेजिंग के लिए टर्बो पास्कल, टर्बो सी और टर्बो सी ++ ने आईएनटी 18 का पुन: उपयोग किया था। अतः अन्य कार्यक्रमों ने भी इस सदिश का अपने उद्देश्यों के लिए पुन: उपयोग किया था।







BIOS हुक

डॉस

डॉस सिस्टम पर, IO.SYS या IBMBIO.COM फ़्लॉपी डिस्क परिवर्तन का पता लगाने में, फ़ॉर्मेटिंग कॉल को ट्रैक करने में, डीएमए सीमा त्रुटियों को ठीक करने और आईबीएम के रोम BIOS "01/10/84" में मॉडल कोड 0xFC के साथ में समस्याओं के समाधान के लिए इंटरप्ट 13 को हुक करता है।

बायपास BIOS

अनेक आधुनिक ऑपरेटिंग सिस्टम (जैसे लिनक्स और विंडोज ) स्टार्टअप के पश्चात् किसी भी BIOS इंटरप्ट कॉल का उपयोग नहीं करते हैं। इसके अतिरिक्त हार्डवेयर के साथ सीधे इंटरफेस का चयन करते हैं। ऐसा करने के लिए वह उन डिवाइस ड्राइवर पर विश्वास करते हैं। जो या तो ओएस कर्नेल का भाग हैं। अतः यह ओएस के साथ शिप करते हैं या हार्डवेयर विक्रेताओं द्वारा प्रदान किए जाते हैं।

इस प्रथा के अनेक कारण हैं। सबसे महत्वपूर्ण यह है कि आधुनिक ऑपरेटिंग सिस्टम प्रोसेसर के साथ संरक्षित मोड (या लंबे मोड) में चलते हैं। जिससे कि BIOS कोड केवल वास्तविक मोड में निष्पादित होता है। इसका अर्थ यह है कि यदि संरक्षित मोड में चल रहा कोई ओएस BIOS कॉल करना चाहता है, तब उसे पहले वास्तविक मोड में स्विच करना होता है। इसके पश्चात् कॉल को निष्पादित करना होता है और उसके वापस आने की प्रतीक्षा करनी होती है और अंत में वापस सुरक्षित मोड में स्विच करना होता है। यह बेहद धीमा और अक्षम होता है। कोड जो वास्तविक मोड में चलता है। (BIOS सहित) 16-बिट एक्स86 खंडित मेमोरी एड्रेसिंग का उपयोग करने के कारण केवल 1 मेगाबाइट मेमोरी तक ही सीमित है। इसके अतिरिक्त, BIOS सामान्यतः किसी विशेष कार्य को करने का सबसे तेज़ विधि नहीं है। वास्तव में, BIOS की गति सीमाओं ने इसे डॉस युग में भी कार्यक्रमों के लिए सामान्य बना दिया है। जिससे कि इसकी प्रदर्शन सीमाओं से बचा जा सकता है और विशेष रूप से वीडियो ग्राफिक्स डिस्प्ले और तेज़ सीरियल संचार के लिए उपयोग किया जाता है।

उपरोक्त कारकों से ऊपर, BIOS कार्यक्षमता के साथ समस्याओं में परिभाषित कार्यों की सीमा में सीमाएं, विभिन्न कंप्यूटरों पर समर्थित उन कार्यों के सबसेट में असंगतता और BIOS की गुणवत्ता में भिन्नताएं सम्मिलित हैं। (अर्थात कुछ BIOS पूर्ण और विश्वसनीय हैं, अन्य संक्षिप्त हैं और छोटी गाड़ी)। इन स्थितियों को अपने हाथों में लेने और BIOS पर निर्भरता से बचने के द्वारा ऑपरेटिंग सिस्टम डेवलपर्स कुछ विपत्ति और जटिलताओं को समाप्त कर सकते हैं। जिससे कि वे सिस्टम सॉफ़्टवेयर को लिखने और समर्थन करने में सामना करते हैं। दूसरी ओर, ऐसा करने से वे डेवलपर हर भिन्न सिस्टम या पेरिफेरल डिवाइस के लिए बेयर-मेटल ड्राइवर सॉफ़्टवेयर प्रदान करने के लिए ज़िम्मेदार हो जाते हैं। जिसके लिए वे अपने ऑपरेटिंग सिस्टम के साथ कार्य करना चाहते हैं। (या उन ड्राइवरों को प्रदान करने के लिए हार्डवेयर उत्पादकों को प्रेरित करने के लिए)।

इस प्रकार यह स्पष्ट होना है कि छोटे बजट पर विकसित कॉम्पैक्ट ऑपरेटिंग सिस्टम भारी मात्रा में BIOS का उपयोग करते हैं। चूँकि बड़े बजट वाले सॉफ्टवेयर इंजीनियरों के विशाल समूहों द्वारा निर्मित बड़े ऑपरेटिंग सिस्टम अधिकांशतः BIOS का उपयोग करने के अतिरिक्त अपने स्वयं के ड्राइवर लिखने का विकल्प चुनते हैं- अर्थात BIOS और संरक्षित मोड की संगतता समस्याओं पर विचार किए बिना भी उपयोग किया जाता है।

यह भी देखें

संदर्भ

  1. "Booting · Linux Inside". 0xax.gitbooks.io. Retrieved 2020-11-10.
  2. "Grub2 Booting Process". 21 June 2016.