बेर मशीन

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

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

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

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

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

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

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

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

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


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

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


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

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


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

यह भी देखें

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