2012-10-25 39 views
30

मुझे एक एम्बेड करने योग्य ओएस के बारे में सुनना याद है जो अनिवार्य रूप से केवल libc है (शायद इसे सी ++ के लिए समर्थन था)। इसमें एक कर्नेल, पाइप या अन्य सामानों में से कोई भी नहीं था जिसे आप ओएस से उम्मीद करते हैं। मैंने इसे in wikipedia की तलाश करने की कोशिश की लेकिन मैंने इसे सूचीबद्ध नहीं देखा।क्या एक लिबसी मौजूद है?

क्या ऐसा ओएस मौजूद है? क्या कोई ओएस है जो वीएम के बाहर संवाद करने के लिए केवल टर्मिनल या सी/सी ++ + (टीसीपी) सॉकेट का समर्थन करता है? यह खिलौना के रूप में मेरे लिए उपयोगी होगा।

+0

मुझे पूरा यकीन नहीं है कि आपका क्या मतलब है। आप किस ओएस के लिए ओएस ढूंढने की कोशिश कर रहे हैं? मुझे [यूसी/ओएस] (http://en.wikipedia.org/wiki/MicroC/OS-II) पता है जो सी में लिखा गया है और माइक्रोकंट्रोलर पर चलता है, लेकिन इसके बावजूद, यह विशेषताएं काफी अच्छी हैं। – ppeterka

+0

यदि आप केवल एक छोटे पदचिह्न के साथ कुछ ढूंढ रहे हैं, तो लिनक्स आपके और libc को छोड़कर किसी भी उपयोगकर्ता स्पेस प्रोग्राम के बिना बिल को आसानी से फिट कर सकता है। यद्यपि डिफ़ॉल्ट ग्लिबैक में एक बड़ा पदचिह्न है, लेकिन बहुत सारे छोटे-पदचिह्न libc परियोजनाएं हैं। – Linuxios

उत्तर

37

कारण यह है कि आप इस के लिए एक नाम नहीं मिल रहे हैं कि यह एक ऑपरेटिंग सिस्टम नहीं है - यह एक ऑपरेटिंग सिस्टम के अभाव है। अक्सर इसे "नंगे-धातु" प्रोग्रामिंग जैसे कुछ कहा जाता है।

नंगे धातु प्रोग्रामिंग का सामान्य विचार यह है कि सामान्य उद्देश्य कोड - "bootloader" - जो मेमोरी कंट्रोलर और बोर्ड पर अन्य हार्डवेयर चीजें सेट करता है, और उसके बाद नियंत्रण को स्थानांतरित करता है आपका कार्यक्रम Uboot एक बहुत ही आम खुला स्रोत बूटलोडर है ताकि एक अच्छी जगह जानकारी के लिए देख शुरू करने के लिए हो सकता है (ऑपरेटिंग सिस्टम भी bootloaders, तो उस अर्थ में अपने कार्यक्रम ऑपरेटिंग सिस्टम की जगह है।),।

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

इस बीच, सी पुस्तकालय ही वास्तव में नहीं बल्कि बूटलोडर से, अपने संकलक द्वारा प्रदान किया जा रहा है।

(मुझे एक नाम नोट के रूप में भी जोड़ना चाहिए: जिस कंपनी के लिए मैं काम करता हूं वह नंगे धातु और लिनक्स कंपाइलर्स की श्रृंखला बनाता है, जिसे Sourcery CodeBench के नाम से जाना जाता है।कोडबेंच के लिए, आम तौर पर एबीआई विनिर्देश के बाद नंगे धातु संस्करणों का नाम दिया जाता है, जो वे प्रोग्राम जोड़ने के लिए उपयोग करते हैं, इसलिए "ईएलएफ" या "ईएबीआई" संस्करण सभी नंगे धातु के कंपाइलर हैं, और मुझे लगता है कि यह संदर्भ देने का एक बहुत ही आम तरीका है चीज की तरह, तो आप उस प्रकार के नाम को भी देखेंगे।)

+1

ग्रेट पोस्ट। [यहां] (http://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html) आपके तीसरे पैराग्राफ का एक उदाहरण है। पृष्ठ को नीचे स्क्रॉल करना, एक कोड नमूना है, जो एक कस्टम यूर्ट आईओ फ़ंक्शन को stdin, stdout और stderr पर बाध्यकारी दिखाता है। इसके बाद, printf() और scanf() का अर्थ है। – Vorac

6

मुझे लगता है कि आपकी कुछ धारणाओं में कोई समस्या है। आप यह कहकर सही हैं कि आपको ओएस के लिए कर्नेल की आवश्यकता नहीं है, लेकिन कुछ भी जो अनुप्रयोग चला सकते हैं, libc में स्थिर रूप से संकलित कर सकते हैं।

देखें: http://www.superfrink.net/athenaeum/OS-FAQ/os-faq-libc.html

उदाहरण के लिए, यह printf रूप में लंबे समय का उपयोग करने के रूप में आप अपने ओएस के लिए कि समारोह संकलन संभव है। इसलिए, जब तक आप इसके लिए libc बनाते हैं तब तक आप मेनेटोस का उपयोग कर सकते हैं।

अब http://pdclib.rootdirectory.de/ पर libc का एक छोटा संस्करण मौजूद है जो कुछ एम्बेडेड सिस्टम उपयोग कर सकते हैं।

इस तरह किसी भी छोटे ओएस को libc चलाने के लिए ओएस माना जा सकता है।

6

मूल रूप से एक कर्नेल की जरूरत नहीं है, लेकिन http://wiki.osdev.org/Projects अगर आप एक कम से कम ओएस के लिए खोज रहे हैं एक बिंदु शुरू करने के लिए हो सकता है। वहां बहुत सारी शौक और अर्ध पेशेवर परियोजनाएं हैं जो मूलभूत चीजों का समर्थन करती हैं और उनके पास एक छोटा पदचिह्न होता है। इसके अलावा इसे लिखने के लिए कुछ अच्छे ट्यूटोरियल भी हैं। आपको यह भी विचार करना होगा कि ड्राइवरों आदि को नेटवर्क या सीरियल I/O जैसी साधारण चीज़ों की आवश्यकता है।

इसके अलावा लिनक्स कर्नेल हमेशा एक अच्छी शुरुआत है

3

Libcc एक ऑपरेटिंग सिस्टम नहीं है (कुछ समय पहले वहाँ एक linux distro कि सिर्फ 20MB के बारे में था) था। हालांकि ओएस की परिभाषा कुछ हद तक अस्पष्ट है, इसमें एपीआई से अधिक शामिल है। इसके लिए स्मृति प्रबंधन, प्रक्रिया शेड्यूलिंग, ect की आवश्यकता होती है।

5

उनमें से बहुत सारे हैं।

अधिकांश पेशेवर वास्तविक समय ऑपरेटिंग सिस्टम (RTOS) सी पुस्तकालय के एक कम या ज्यादा पूरा कार्यान्वयन के साथ आते हैं, और अक्सर भी सी के लिए ++ (उदाहरण के लिए Keil MDK, μItron)। हालांकि व्यवहार में आप अक्सर इससे बचते हैं, क्योंकि यह उपलब्ध संसाधनों का अधिक उपयोग करता है।

एक आरटीओएस आमतौर पर फाइलों या पाइपों के समर्थन के बिना एक बहुत छोटा कर्नेल होता है। इसके बजाए वे बहुत कम ओवरहेड के साथ कार्यों, टाइमर, कतार और घटना झंडे का समर्थन करते हैं।