बेर मशीन

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

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

हानि
किसी दिए गए एप्लिकेशन के लिए बेयर-मेटल प्रोग्रामिंग को ठीक से काम करने के लिए अधिक प्रयास की आवश्यकता होती है और यह अधिक जटिल है क्योंकि ऑपरेटिंग सिस्टम द्वारा प्रदान की जाने वाली सेवाओं और एप्लिकेशन द्वारा उपयोग की जाने वाली सेवाओं को आवश्यकताओं के संबंध में फिर से प्रयुक्त करना पड़ता है। ये सेवाएं हो सकती हैं:
 * सिस्टम बूट (अनिवार्य)
 * मेमोरी प्रबंधन: हार्डवेयर संसाधनों और बाह्य उपकरणों (अनिवार्य) के संबंध में कोड और डेटा का संचयन स्थान
 * व्यवधान प्रबंधन (यदि कोई हो)
 * टास्क शेड्यूलिंग यदि एप्लिकेशन एक से अधिक कार्य कर सकता है
 * बाह्य उपकरणों का प्रबंधन (यदि कोई हो)
 * त्रुटि प्रबंधन यदि वांछित या आवश्यक हो

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

बेयर-मेटल प्रोग्रामिंग सामान्यतः जंग (प्रोग्रामिंग भाषा), C++, C (प्रोग्रामिंग भाषा), सभा की भाषा या यहां तक ​​​​कि कोड की थोड़ी मात्रा या बहुत नए प्रोसेसर मशीन कोड के लिए क्लोज-टू-हार्डवेयर भाषा का उपयोग करके की जाती है। पिछले सभी उद्देश्यों का अनिवार्य रूप से अर्थ है कि बेर धातु कार्यक्रम बहुत ही कम सॉफ्टवेयर पोर्टेबिलिटी हैं।

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

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

विकास
बेर मशीनों का उपयोग करने के दृष्टिकोण ने नए विचारों का मार्ग प्रशस्त किया जिसने ऑपरेटिंग सिस्टम के विकास के विकास को गति दी।

इस दृष्टिकोण ने निम्नलिखित की आवश्यकता पर प्रकाश डाला:


 * इनपुट/आउटपुट (I/O) उपकरण कोड और डेटा दोनों को आसानी से दर्ज करने के लिए:
 * इनपुट डिवाइस, जैसे कंप्यूटर कीबोर्ड, बनाए गए। ये आवश्यक थे क्योंकि पहले के कंप्यूटरों में अधिकांशतः अद्वितीय कुंद और जटिल इनपुट उपकरण होते थे।

उदाहरण के लिए उपकरण के सामने का भाग पर टॉगल स्विच की एक श्रृंखला का उपयोग करके प्रोग्राम को पीडीपी-11 में हाथ से लोड किया गया था। कीबोर्ड इन पुराने इनपुट उपकरणों से कहीं उत्तम हैं क्योंकि यह मशीन में इनपुट करने के लिए टॉगल स्विच का उपयोग करने की तुलना में कोड या डेटा टाइप करने के लिए बहुत तेज़ होगा। ब्रांड या कीमत की परवाह किए बिना कीबोर्ड बाद में लगभग हर कंप्यूटर में मानक बन गए।


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

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


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

यह भी देखें

 * बेयर मशीन कंप्यूटिंग
 * बेयरबोन कंप्यूटर
 * स्टैंडअलोन कार्यक्रम