BIOS इंटरप्ट कॉल: Difference between revisions

From Vigyanwiki
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 वास्तविक मोड में चलता है। 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 [[ बाधा डालना |बाधा डालना]] कॉल सुविधा है जो [[ऑपरेटिंग सिस्टम]] और एप्लिकेशन प्रोग्राम 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]]); और मशीन पर चलने वाले सॉफ़्टवेयर को बुनियादी हार्डवेयर नियंत्रण प्रदान करता है, जो आमतौर पर एक ऑपरेटिंग सिस्टम (एप्लिकेशन प्रोग्राम के साथ) होता है, लेकिन यह सीधे बूटिंग एकल सॉफ़्टवेयर एप्लिकेशन हो सकता है।
सभी कंप्यूटरों में, सॉफ्टवेयर निर्देश बिजली चालू होने के क्षण से भौतिक हार्डवेयर (स्क्रीन, डिस्क, कीबोर्ड, आदि) को नियंत्रित करते हैं। पीसी में, BIOS, मदरबोर्ड पर ROM में प्री-लोडेड, CPU के रीसेट होने के तुरंत बाद नियंत्रण कर लेता है, जिसमें पावर-अप के समय, जब हार्डवेयर रीसेट बटन दबाया जाता है, या जब महत्वपूर्ण सॉफ़्टवेयर विफलता ([[ ट्रिपल दोष ]]) होती है हार्डवेयर रीसेट को स्वचालित रूप से ट्रिगर करने के लिए मेनबोर्ड सर्किट्री का कारण बनता है। BIOS हार्डवेयर का परीक्षण करता है और इसकी स्थिति को आरंभ करता है; बूट प्रोग्राम ढूँढता है, लोड करता है और चलाता है (सामान्यतः, OS बूट लोडर, और ऐतिहासिक [[ROM BASIC]]); और मशीन पर चलने वाले सॉफ़्टवेयर को बुनियादी हार्डवेयर नियंत्रण प्रदान करता है, जो सामान्यतः ऑपरेटिंग सिस्टम (एप्लिकेशन प्रोग्राम के साथ) होता है, किन्तु यह सीधे बूटिंग एकल सॉफ़्टवेयर एप्लिकेशन हो सकता है।


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


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


== BIOS कॉल का उद्देश्य ==
== BIOS कॉल का उद्देश्य ==
BIOS इंटरप्ट कॉल एक प्रोग्राम द्वारा अनुरोधित हार्डवेयर नियंत्रण या I/O फ़ंक्शन करता है, प्रोग्राम को सिस्टम की जानकारी लौटाता है, या दोनों करता है। BIOS कॉल के उद्देश्य का एक प्रमुख तत्व अमूर्त है - BIOS कॉल आम तौर पर परिभाषित कार्य करता है, और सिस्टम के विशेष हार्डवेयर पर उन कार्यों को कैसे निष्पादित किया जाता है, इसका विशिष्ट विवरण BIOS में एनकैप्सुलेट किया जाता है और प्रोग्राम से छिपा होता है। इसलिए, उदाहरण के लिए, एक प्रोग्राम जो हार्ड डिस्क से पढ़ना चाहता है, उसे यह जानने की आवश्यकता नहीं है कि हार्ड डिस्क एक समानांतर ATA, [[SCSI]], या [[SATA]] ड्राइव है (या पहले के दिनों में, एक बढ़ी हुई छोटी डिस्क इंटरफ़ेस ड्राइव, या एक [[संशोधित आवृत्ति मॉड्यूलेशन]] या [[रन लेंथ लिमिटेड]] ड्राइव शायद सीगेट [[ST-506]] नियंत्रक के साथ, शायद कई पश्चिमी डिजिटल # 1980 के नियंत्रक प्रकारों में से एक, या किसी अन्य ब्रांड के एक अलग मालिकाना नियंत्रक के साथ)। प्रोग्राम को केवल उस ड्राइव की 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 का उपयोग करने के लिए लिखे गए हैं) को मुक्त करता है। उदाहरण के लिए, [[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 कीबोर्ड इंटरफ़ेस विभिन्न शिफ्ट स्टेट्स (बाएं और दाएं 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 का पता जानने की जरूरत नहीं है, केवल इसकी इंटरप्ट संख्या। सिस्टम कॉन्फ़िगरेशन में प्रतिरूपकता, अनुकूलता और लचीलेपन के लिए इसके फायदे हैं।
मेन-लाइन प्रोग्राम को निष्पादित करना बंद करने और इसके अतिरिक्त इंटरप्ट सर्विस रूटीन (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 इंटरप्ट कॉल को ऑपरेटिंग सिस्टम जैसे 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 सॉफ़्टवेयर सामान्यतः कॉल करने वाले के पास त्रुटि कोड के साथ वापस आता है यदि सफल नहीं होता है, या स्थिति कोड और/या सफल होने पर अनुरोधित डेटा के साथ। डेटा स्वयं बिट जितना छोटा या पूरे कच्चे डिस्क क्षेत्रों के 65,536 बाइट्स जितना बड़ा हो सकता है (अधिकतम जो वास्तविक-मोड मेमोरी सेगमेंट में फिट होगा)। कई अलग-अलग कॉरपोरेट संस्थाओं द्वारा BIOS को कई वर्षों में कई बार विस्तारित और बढ़ाया गया है, और दुर्भाग्य से इस विकास का परिणाम यह है कि सभी BIOS फ़ंक्शंस जिन्हें डेटा को प्रारूपित करने और संचार करने या परिणामों की रिपोर्ट करने के लिए सुसंगत सम्मेलनों का उपयोग नहीं कहा जा सकता है। कुछ BIOS फ़ंक्शन विस्तृत स्थिति जानकारी की रिपोर्ट करते हैं, जबकि अन्य सफलता या विफलता की रिपोर्ट भी नहीं कर सकते हैं, किन्तु कॉल करने वाले को सफलता मानने के लिए (या किसी अन्य तरीके से परिणाम का परीक्षण करने के लिए) चुपचाप वापस लौटते हैं। कभी-कभी यह निर्धारित करना भी कठिनाई हो सकता है कि निश्चित कंप्यूटर पर BIOS द्वारा निश्चित BIOS फ़ंक्शन कॉल समर्थित है या नहीं, या कॉल के पैरामीटर की सीमा क्या हैउस कंप्यूटर पर फिर से। (कुछ अमान्य फ़ंक्शन नंबरों के लिए, या प्रमुख मापदंडों के अमान्य मानों के साथ मान्य फ़ंक्शन नंबर - विशेष रूप से प्रारंभिक IBM BIOS संस्करण के साथ - BIOS कुछ भी नहीं कर सकता है और बिना किसी त्रुटि कोड के वापस आ सकता है; तो यह [असुविधाजनक किन्तु अपरिहार्य] जिम्मेदारी है कॉलर या तो ऐसी कॉल न करके इस स्थितिसे बचने के लिए, या कॉल के प्रभावी होने के अतिरिक्त कॉल के अपेक्षित प्रभाव के लिए सकारात्मक रूप से परीक्षण करने के लिए। क्योंकि BIOS अपने इतिहास में कई चरणों में बड़े पैमाने पर विकसित हुआ है, फ़ंक्शन जो मान्य है कुछ निश्चित विक्रेता से BIOS संस्करण उसी विक्रेता से या किसी अन्य विक्रेता से किसी भी संबंधित आयु के BIOS संस्करण में पहले या अलग-अलग BIOS संस्करण में मान्य नहीं हो सकता है।)


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


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


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


<syntaxhighlight lang="nasm">
<syntaxhighlight lang="nasm">
Line 42: Line 42:
सामान्य BIOS इंटरप्ट क्लासेस की सूची नीचे पाई जा सकती है। ध्यान दें कि कुछ BIOS (विशेष रूप से पुराने वाले) इन सभी इंटरप्ट कक्षाओं को लागू नहीं करते हैं।
सामान्य BIOS इंटरप्ट क्लासेस की सूची नीचे पाई जा सकती है। ध्यान दें कि कुछ BIOS (विशेष रूप से पुराने वाले) इन सभी इंटरप्ट कक्षाओं को लागू नहीं करते हैं।


BIOS उन प्रोग्रामों में हार्डवेयर ईवेंट इंटरप्ट्स को रिले करने के लिए कुछ इंटरप्ट्स का भी उपयोग करता है जो उन्हें प्राप्त करना चुनते हैं या संदेशों को अपने स्वयं के उपयोग के लिए रूट करते हैं। नीचे दी गई तालिका में केवल वे BIOS इंटरप्ट शामिल हैं जो सेवाओं या जानकारी का अनुरोध करने के लिए प्रोग्राम (INT असेंबली-लैंग्वेज सॉफ़्टवेयर इंटरप्ट इंस्ट्रक्शन का उपयोग करके) द्वारा बुलाए जाने के लिए अभिप्रेत हैं।
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. It fires 18.2 times/second. The BIOS increments the time-of-day counter during this 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 generally triggered when a key on a keyboard is pressed.  
|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. 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>
|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. 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).
|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 एक प्रमुख विशेषता थी। कमोडोर 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, सटीक होने के लिए] खाता है।)
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) पर फिर से बूट करने का प्रयास करेगा।
जैसे-जैसे समय बीतता गया और बेसिक को सभी पीसी पर शिप नहीं किया गया, यह व्यवधान केवल त्रुटि संदेश प्रदर्शित करेगा जो यह दर्शाता है कि कोई बूट करने योग्य वॉल्यूम नहीं मिला (प्रसिद्ध, नो रॉम बेसिक, या बाद के BIOS संस्करणों में अधिक व्याख्यात्मक संदेश); अन्य BIOS संस्करणों में यह उपयोगकर्ता को बूट करने योग्य वॉल्यूम डालने और कुंजी दबाने के लिए संकेत देगा, और फिर उपयोगकर्ता द्वारा कुंजी दबाए जाने के बाद यह बूटस्ट्रैप लोडर (INT 19h) पर फिर से बूट करने का प्रयास करेगा।


डिजिटल का [[ इंद्रधनुष 100 ]]बी इस्तेमाल किया गया {{Code|INT 18h}} इसके BIOS को कॉल करने के लिए, जो IBM BIOS के साथ असंगत था। मेमोरी आवंटन और पेजिंग के लिए [[टर्बो पास्कल]], [[टर्बो सी]] और [[टर्बो सी ++]] ने आईएनटी 18 का पुन: उपयोग किया। अन्य कार्यक्रमों ने भी इस वेक्टर का अपने उद्देश्यों के लिए पुन: उपयोग किया।
डिजिटल का [[ इंद्रधनुष 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 की गति सीमाओं ने इसे DOS युग में भी कार्यक्रमों के लिए सामान्य बना दिया ताकि इसकी प्रदर्शन सीमाओं से बचा जा सके, विशेष रूप से वीडियो ग्राफिक्स डिस्प्ले और तेज़ सीरियल संचार के लिए।
इस प्रथा के कई कारण हैं। सबसे महत्वपूर्ण यह है कि आधुनिक ऑपरेटिंग सिस्टम प्रोसेसर के साथ संरक्षित मोड (या लंबे मोड) मोड में चलते हैं, जबकि BIOS कोड केवल वास्तविक मोड में निष्पादित होगा। इसका अर्थ यह है कि यदि संरक्षित मोड में चल रहा कोई OS BIOS कॉल करना चाहता है, तो उसे पहले वास्तविक मोड में स्विच करना होगा, फिर कॉल को निष्पादित करना होगा और उसके वापस आने की प्रतीक्षा करनी होगी, और अंत में वापस सुरक्षित मोड में स्विच करना होगा। यह बेहद धीमा और अक्षम होगा। कोड जो वास्तविक मोड में चलता है (BIOS सहित) 16-बिट X86_memory_segmentation का उपयोग करने के कारण केवल 1 [[मेगाबाइट]] मेमोरी तक ही सीमित है। इसके अतिरिक्त, BIOS सामान्यतः किसी विशेष कार्य को करने का सबसे तेज़ विधि नहीं है। वास्तव में, BIOS की गति सीमाओं ने इसे DOS युग में भी कार्यक्रमों के लिए सामान्य बना दिया जिससे कि इसकी प्रदर्शन सीमाओं से बचा जा सके, विशेष रूप से वीडियो ग्राफिक्स डिस्प्ले और तेज़ सीरियल संचार के लिए।


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


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


== यह भी देखें ==
== यह भी देखें ==

Revision as of 17:07, 11 March 2023

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
AH Description
00h Set Video Mode
01h Set Cursor Shape
02h Set Cursor Position
03h Get Cursor Position And Shape
04h Get Light Pen Position
05h Set Display Page
06h Clear/Scroll Screen Up
07h Clear/Scroll Screen Down
08h Read Character and Attribute at Cursor
09h Write Character and Attribute at Cursor
0Ah Write Character at Cursor
0Bh Set Border Color
0Ch Write Graphics Pixel
0Dh Read Graphics Pixel
0Eh Write Character in TTY Mode
0Fh Get Video Mode
10h Set Palette Registers (EGA, VGA, SVGA)
11h Character Generator (EGA, VGA, SVGA)
12h Alternate Select Functions (EGA, VGA, SVGA)
13h Write String
1Ah Get or Set Display Combination Code (VGA, SVGA)
1Bh Get Functionality Information (VGA, SVGA)
1Ch Save or Restore Video State (VGA, SVGA)
4Fh VESA BIOS Extension Functions (SVGA)
11h Returns equipment list
12h Return conventional memory size
13h Low Level Disk Services
AH Description
00h Reset Disk Drives
01h Check Drive Status
02h Read Sectors
03h Write Sectors
04h Verify Sectors
05h Format Track
08h Get Drive Parameters
09h Init Fixed Drive Parameters
0Ch Seek To Specified Track
0Dh Reset Fixed Disk Controller
15h Get Drive Type
16h Get Floppy Drive Media Change Status
17h Set Disk Type
18h Set Floppy Drive Media Type
41h Extended Disk Drive (EDD) Installation Check
42h Extended Read Sectors
43h Extended Write Sectors
44h Extended Verify Sectors
45h Lock/Unlock Drive
46h Eject Media
47h Extended Seek
48h Extended Get Drive Parameters
49h Extended Get Media Change Status
4Eh Extended Set Hardware Configuration
14h Serial port services
AH Description
00h Serial Port Initialization
01h Transmit Character
02h Receive Character
03h Status
15h Miscellaneous system services
AH AL Description
00h Turn on cassette drive motor (IBM PC/PCjr only)
01h Turn off cassette drive motor (IBM PC/PCjr only)
02h Read data blocks from cassette (IBM PC/PCjr only)
03h Write data blocks to cassette (IBM PC/PCjr only)
4Fh Keyboard Intercept
83h Event Wait
84h Read Joystick (BIOSes from 1986 onward)
85h Sysreq Key Callout
86h Wait
87h Move Block
88h Get Extended Memory Size
89h Switch to Protected Mode
C0h Get System Parameters
C1h Get Extended BIOS Data Area Segment
C2h Pointing Device Functions
C3h Watchdog Timer Functions - PS/2 systems only
C4h Programmable Option Select - MCA bus PS/2 systems only
D8h EISA System Functions - EISA bus systems only
E8h 01h Get Extended Memory Size (Newer function, since 1994). Gives results for memory size above 64 Mb.
E8h 20h Query System Address Map. The information returned from E820 supersedes what is returned from the older AX=E801h and AH=88h interfaces.
16h Keyboard services
AH Description
00h Read Character
01h Read Input Status
02h Read Keyboard Shift Status
05h Store Keystroke in Keyboard Buffer
10h Read Character Extended
11h Read Input Status Extended
12h Read Keyboard Shift Status Extended
17h Printer services
AH Description
00h Print Character to Printer
01h Initialize Printer
02h Check Printer Status
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
AH Description
00h Read RTC
01h Set RTC
02h Read RTC Time
03h Set RTC Time
04h Read RTC Date
05h Set RTC Date
06h Set RTC Alarm
07h Reset RTC Alarm
1Ah PCI Services - implemented by BIOSes supporting PCI 2.0 or later
AX Description
B101h PCI Installation Check
B102h Find PCI Device
B103h Find PCI Class Code
B106h PCI Bus-Specific Operations
B108h Read Configuration Byte
B109h Read Configuration Word
B10Ah Read Configuration Dword
B10Bh Write Configuration Byte
B10Ch Write Configuration Word
B10Dh Write Configuration Dword
B10Eh Get IRQ Routine Information
B10Fh Set PCI IRQ
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 और संरक्षित मोड की संगतता समस्याओं पर विचार किए बिना भी।

यह भी देखें

संदर्भ

  1. "Booting · Linux Inside". 0xax.gitbooks.io. Retrieved 2020-11-10.
  2. "Grub2 Booting Process". 21 June 2016.
  3. * BIOS Boot Specification Version 1.01 January 11 1996 Appendix D