
श्रृंखला के शेष "आरटीओएस के बारे में पूरी सच्चाई" में, हम विस्तार से जांच करेंगे कि आरटीओएस कैसे लागू और तैनात किया जाता है। ऐसा करने के लिए, हम एक विशिष्ट आरटीओएस: न्यूक्लियस एसई पर विचार करेंगे। यहां तक कि अगर आप इस विशेष कोर या इससे संबंधित अन्य गुठली का उपयोग नहीं करने जा रहे हैं, तो यह समझना कि यह कैसे काम करता है किसी भी आरटीओएस के साथ काम करने के लिए एक अच्छी नींव प्रदान करेगा।
यह समझने के लिए कि न्यूक्लियस एसई को इस तरह से क्यों बनाया गया था, इस परियोजना की शुरुआत में मेरे द्वारा पालन किए गए मुख्य कार्यों और लक्ष्यों को उजागर करना महत्वपूर्ण है।
श्रृंखला में पिछले लेख:
अनुच्छेद # 6 अन्य RTOS सेवाएंअनुच्छेद # ५ कार्य सहभागिता और सिंक्रनाइज़ेशनअनुच्छेद # 4 कार्य, संदर्भ स्विचिंग, और व्यवधानअनुच्छेद # ३ कार्य और योजनाअनुच्छेद # 2 आरटीओएस: संरचना और वास्तविक समय मोड
अनुच्छेद # 1। आरटीओएस: परिचय।
आरामकर्नेल कोड सरल, सीधा, अच्छी टिप्पणी और दस्तावेज होना चाहिए। न्यूक्लियस एसई मुख्य रूप से शैक्षिक उपयोग के लिए है।
आकारयह एक छोटा, अच्छी तरह से स्केलेबल कर्नेल होना चाहिए (चूंकि मेमोरी, विशेष रूप से परिचालन मेमोरी (रैम), कम आपूर्ति में हो सकती है)।
कार्यक्षमताकर्नेल में उच्च स्तर की कार्यक्षमता होनी चाहिए जो मानक RTOS सेवाओं का समर्थन करती है।
8/16 बिट सपोर्टइसे 8- और 16-बिट आर्किटेक्चर का समर्थन करना चाहिए: संभव हद तक, बाइट के आकार का डेटा का उपयोग करें; डेटा संरचनाओं को विदेशी पते के तरीकों की आवश्यकता नहीं होनी चाहिए; निरंतर डेटा को अनावश्यक रूप से रैम में कॉपी नहीं किया जाना चाहिए।
भविष्यन्यूक्लियस एसई से न्यूक्लियस आरटीओएस तक एक विकास पथ होना चाहिए। उपयोगकर्ता कोर के बीच कोड को आसानी से स्थानांतरित करने में सक्षम होना चाहिए। इससे भी महत्वपूर्ण बात यह है कि उनका ज्ञान भी स्थानांतरित किया जाना चाहिए। न्यूक्लियस एसई एपीआई प्रभावी रूप से न्यूक्लियस आरटीओएस एपीआई के सबसेट को लागू करता है।
की लागतव्यवसाय मॉडल सभी संभावित उपयोगकर्ताओं के लिए आकर्षक होना चाहिए: 8/16-बिट डिवाइस के डेवलपर्स, जो पहले RTOS का उपयोग करते हैं और जो केवल तकनीक का अध्ययन कर रहे हैं। इस प्रकार, न्यूक्लियस एसई स्वतंत्र रूप से उपलब्ध है, वाणिज्यिक और शैक्षिक उद्देश्यों के लिए उपयोग करने के लिए बिल्कुल मुफ्त है; कोड का उपयोग और संशोधित किया जा सकता है।
लक्ष्य श्रोता नाभिक एसईइस दृष्टिकोण का परिणाम एक कर्नेल है जो तीन प्रकार के डेवलपर्स के लिए उपयोगी हो सकता है:
- 8/16-बिट डिवाइस प्रोग्रामर जिन्हें एक सरल कर्नेल या कार्य शेड्यूलर की आवश्यकता होती है। यह विशेष रूप से आकर्षक है अगर डेवलपर्स आरटीओएस का उपयोग करने के लिए कुछ कौशल प्राप्त करने में रुचि रखते हैं या एक ऐसी प्रणाली विकसित करने में जो अन्य 32-बिट उपकरणों का उपयोग करते हैं जहां न्यूक्लियस आरटीओएस एक अच्छा विकल्प हो सकता है।
- 32-बिट उपकरणों का उपयोग करते हुए एंबेडेड एप्लिकेशन डेवलपर्स जहां सॉफ्टवेयर जटिलता पारंपरिक वाणिज्यिक आरटीओएस की लागत के लायक नहीं है। नाभिक एसई का उपयोग करना उपयोगी हो सकता है और विकास (न्यूक्लियस आरटीओएस तक) की अनुमति देगा यदि आवेदन की जटिलता बढ़ जाती है।
- सीखने की प्रक्रिया में छात्र RTOS सीखने के लिए आधार के रूप में न्यूक्लियस एसई का उपयोग कर सकते हैं। एक्वायर्ड स्किल्स बाद में काम आएंगे जब वे काम करना शुरू करेंगे।
डिजाइन निर्णय और व्यापार-नापसंदउपरोक्त लक्ष्यों को प्राप्त करने के लिए, कई सोच-समझकर डिजाइन निर्णय लेने पड़े। विवरण का वर्णन बाद में किया जाएगा जब हम विशिष्ट कार्यों पर विचार करते हैं, लेकिन यहां प्रमुख बिंदुओं का एक संक्षिप्त सारांश है।
स्थैतिक विन्यासन्यूक्लियस एसई एक स्थिर आरटीओएस है, जिसका अर्थ है कि सभी कॉन्फ़िगरेशन निर्णय बिल्ड टाइम पर किए जाते हैं, न कि गतिशील रूप से रन टाइम पर। इसमें डेटा संरचना को सरल बनाने और कोड के आकार को कम करने सहित कई फायदे हैं, इसलिए एपीआई कार्यों को बनाने और हटाने के लिए कॉल करने की आवश्यकता नहीं है। अधिकांश अनुप्रयोगों के लिए, गतिशील ऑब्जेक्ट निर्माण की आवश्यकता नहीं है।
वस्तुओं की संख्यान्यूक्लियस एसई-आधारित एप्लिकेशन में प्रत्येक प्रकार की वस्तुओं की संख्या सीमित है। यह एक से सोलह कार्य और शून्य से सोलह विभिन्न प्रकार की कर्नेल वस्तु से हो सकता है। यह वस्तुओं के संबोधन को सरल करता है (नीचे देखें)। यह प्रतिबंध छोटे अनुप्रयोगों के लिए मुश्किल नहीं है, जिसके लिए कर्नेल का इरादा है।
वस्तुओं को संबोधित करनावस्तुओं को एक "सूचकांक" का उपयोग करके संबोधित किया जाता है, जो शून्य से पंद्रह तक हो सकता है। पॉइंटर्स के सामान्य उपयोग की तुलना में, यह छोटे प्रोसेसर पर अधिक कुशल हो सकता है और कम मेमोरी की अनुमति देता है: इंडेक्स में केवल 4 बिट मेमोरी की आवश्यकता होती है; पता 16-32 बिट्स का है।
योजनाकारअनुसूचक कर्नेल वास्तुकला के क्षेत्र से संबंधित था जिसे सरल बनाया गया था। विभिन्न शेड्यूलिंग नीतियों के साथ एक लचीला तंत्र प्रदान करने के बजाय, कर्नेल में चार अलग-अलग शेड्यूलर प्रकार उपलब्ध हैं; विन्यास के दौरान आवेदन के लिए विशिष्ट अनुसूचक का चयन किया जाता है।
सीमित कार्यक्षमतान्यूक्लियस आरटीओएस में उपलब्ध कुछ विशेषताओं को न्यूक्लियस एसई में लागू नहीं किया जाता है। कुछ मामलों में, यह सरलता के लिए किया जाता है। अन्य मामलों में, एक क्षेत्र में कार्यक्षमता का मामूली नुकसान अन्य कार्यक्षमता को लागू करना आसान बनाता है। श्रृंखला में प्रासंगिक लेखों में इन असंगतताओं को उजागर किया गया है।
मेमोरी का उपयोगचूंकि न्यूक्लियस एसई को सीमित मेमोरी अनुप्रयोगों का समर्थन करना चाहिए, इसलिए मेमोरी उपयोग पर विशेष ध्यान दिया गया है। यह "क्लासिक" रोम और रैम का उपयोग करना चाहिए था: रोम का उपयोग कोड और लगातार डेटा के लिए किया गया था; RAM - स्टोरेज वैरिएबल, स्टैक आदि के लिए, हालांकि एक विशिष्ट लक्ष्य के पास एक अलग योजना हो सकती है, न्यूक्लियस एसई कोड काफी लचीला है; ROM और RAM की परिभाषा (#defines) का उपयोग चर और डेटा की सभी संरचनाओं को उपसर्ग करने के लिए किया जाता है ताकि उनके स्थान को इंगित किया जा सके। यह उपकरण का उपयोग करके प्राप्त किया जा सकता है।
ROM से RAM तक डेटा की अनावश्यक नकल से बचने के लिए महत्वपूर्ण आवश्यकता थी, क्योंकि RAM पर्याप्त नहीं हो सकती है। इसके द्वारा प्राप्त किया गया तंत्र अगले लेख के डेटा स्ट्रक्चर्स सेक्शन में वर्णित है।
एपीआई कार्यान्वयनन्यूक्लियस एसई के लिए एपीआई पारंपरिक तरीके से कार्यान्वित किया जाता है: सी भाषा फ़ंक्शन हर एपीआई कॉल को लागू करता है। ये कॉल तार्किक रूप से समूहीकृत हैं। हालांकि न्यूक्लियस एसई में एपीआई कॉल काफी नहीं है, क्योंकि न्यूक्लियस आरटीओएस में समग्र कार्यक्षमता नकली है, और एपीआई के बीच मैपिंग आसान है। न्यूक्लियस आरटीओएस एपीआई का विवरण शामिल किया जाएगा।
महत्वपूर्ण खंडकई एपीआई फ़ंक्शन कॉल के कोड में कर्नेल डेटा में हेरफेर करने वाले निर्देशों के अनुक्रम शामिल हैं। आमतौर पर, डेटा इन निर्देशों के निष्पादन के दौरान एक अमान्य स्थिति में हो सकता है, इसलिए रुकावट से बचने के लिए देखभाल की जानी चाहिए। या, किसी अन्य कार्य से कोड चलाने या हैंडलर को बाधित करने से मना किया जा सकता है यदि वह इस (वर्तमान में अमान्य) डेटा तक पहुंच सकता है। ऐसे निर्देश अनुक्रम को महत्वपूर्ण खंड कहा जाता है।
मैक्रोज़ की एक जोड़ी को NUSE_CS_Enter () और NUSE_CS_Exit () कहा जाता है। न्यूक्लियस एसई एपीआई फ़ंक्शंस कोड के सभी महत्वपूर्ण खंड का विस्तार करने के लिए उनका उपयोग करते हैं, इस प्रकार:
NUSE_CS_Enter ();
<गैर-रुकावट कोड>
NUSE_CS_Exit ();
आमतौर पर, इन मैक्रो को बीच-बीच में अनुदेशों में अक्षम कर दिया जाता है और क्रमशः निर्देशों को बाधित किया जाता है। अगर न्यूक्लियस एसई को एक अलग प्रोसेसर आर्किटेक्चर पर लागू किया जाता है, तो इसे जांचना होगा। न्यूक्लियस एसई को पोर्ट करने के बारे में अधिक जानकारी अगले लेख में बताई जाएगी।
scalabilityसभी आधुनिक आरटीओएस की तरह, न्यूक्लियस एसई स्केलेबल है। यह सुनिश्चित करने के लिए कि केवल उपयोग किए गए आरटीओएस घटक शामिल हैं, सभी एपीआई कार्यों को एक पुस्तकालय के रूप में प्रस्तुत किया जाता है। इस प्रकार, लिंक करने के दौरान, संदर्भित कार्यों को निकाला जाता है और आवेदन की अंतिम छवि में शामिल किया जाता है। न्यूक्लियस आरटीओएस कर्नेल और अन्य सभी ओएस घटकों के लिए इस दृष्टिकोण का उपयोग करता है। न्यूक्लियस एसई एक अलग तकनीक का उपयोग करता है।
चयनित टूलबॉक्स में लाइब्रेरी पर निर्भर होने के बजाय, न्यूक्लियस एसई वितरण में सभी स्रोत फ़ाइलों में सशर्त संकलन निर्देश होते हैं। कार्यक्रम के लिए न्यूक्लियस एसई को कॉन्फ़िगर करने के लिए, डेवलपर को कई #define वर्ण (अगले लेख में इस पर अधिक) स्थापित करने की आवश्यकता है। यह निर्धारित करता है कि कौन से एपीआई फ़ंक्शन संकलित किए गए हैं और इसलिए कार्यक्रम में शामिल हैं।
न्यूक्लियस एसई इस दृष्टिकोण को बढ़ाता है एक वस्तु की पेशकश करके जिसे मैं "चरम स्केलेबिलिटी" कहता हूं। कर्नेल कार्यक्षमता के कई पहलुओं को समान #define वर्णों का उपयोग करके चालू या बंद या अन्य तरीकों से कॉन्फ़िगर किया जा सकता है। इस प्रकार, डेवलपर के पास मेमोरी के उपयोग पर एक बिंदु नियंत्रण है।
कौन सी एपीआई?न्यूक्लियस एसई का अपना एपीआई है, जिसे भविष्य के लेखों में विस्तार से वर्णित किया जाएगा। कई उपयोगकर्ताओं के लिए, कोड में एपीआई कार्यों के लिए इन कॉलों को शामिल करना पर्याप्त होगा।
कुछ उपयोगकर्ता एक अलग एपीआई का उपयोग करना पसंद कर सकते हैं: या तो मानक या एक वे परिचित हैं। न्यूक्लियस एसई एपीआई काफी लचीला है और आपको एक रैपर बनाने की अनुमति देता है जो एक इंटरफ़ेस को दूसरे एपीआई में बदल देता है।
न्यूक्लियस एसई विकास के मुख्य लक्ष्यों में से एक न्यूक्लियस आरटीओएस के साथ उपयोगकर्ता-स्तरीय संगतता का एक उच्च स्तर है। हालांकि एपीआई अलग हैं, उन्हें मैच के लिए आसान बनाया गया है। न्यूक्लियस एसई पर न्यूक्लियस आरटीओएस एपीआई के उपयोग की सुविधा के लिए एक आवरण उपलब्ध होगा।
अगले लेख में, हम न्यूक्लियस एसई की समीक्षा करते रहेंगे और आरटीओएस की आंतरिक संरचना और तैनाती पर ध्यान केंद्रित करेंगे।