माइक्रो-कंट्रोलर ऑपरेटिंग सिस्टम

माइक्रो-कंट्रोलर ऑपरेटिंग सिस्टम (MicroC/OS, जिसे μC/OS, या माइक्रीम OS के रूप में शैलीबद्ध किया गया है) एक रीयल-टाइम ऑपरेटिंग सिस्टम (RTOS) है जिसे 1991 में जीन जे. लेब्रोस द्वारा डिज़ाइन किया गया था। यह एक प्राथमिकता-आधारित प्रीमेशन (कंप्यूटिंग) रियल है। रीयल-टाइम कंप्यूटिंग | माइक्रोप्रोसेसरों के लिए रीयल-टाइम कर्नेल, ज्यादातर प्रोग्रामिंग भाषा सी (प्रोग्रामिंग भाषा) में लिखा गया है। यह अंतः स्थापित प्रणाली  में उपयोग के लिए अभिप्रेत है।

माइक्रोसी/ओएस सी में कई कार्यों को परिभाषित करने की अनुमति देता है, जिनमें से प्रत्येक एक स्वतंत्र थ्रेड या कार्य के रूप में निष्पादित हो सकता है। प्रत्येक कार्य एक अलग प्राथमिकता पर चलता है, और चलता है जैसे कि वह सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) का स्वामी है। कम प्राथमिकता वाले कार्यों को किसी भी समय उच्च प्राथमिकता वाले कार्यों से छूट दी जा सकती है। उच्च प्राथमिकता वाले कार्य निम्न प्राथमिकता वाले कार्यों को निष्पादित करने की अनुमति देने के लिए ऑपरेटिंग सिस्टम (OS) सेवाओं (जैसे विलंब या घटना) का उपयोग करते हैं। ओएस सेवाएं कार्यों और मेमोरी के प्रबंधन, कार्यों के बीच संचार और समय के लिए प्रदान की जाती हैं।

इतिहास
MicroC/OS कर्नेल मूल रूप से एंबेडेड सिस्टम्स प्रोग्रामिंग पत्रिका में तीन-भाग के लेख और Labrosse द्वारा μC/OS द रियल-टाइम कर्नेल में प्रकाशित किया गया था। उन्होंने पहले अपने स्वयं के उपयोग के लिए विकसित एक सॉफ्टवेयर पोर्टेबिलिटी ओएस के इंटर्नल का वर्णन करने का इरादा किया था, लेकिन बाद में इसे संस्करण II और III में अपनी कंपनी माइक्रियम, इंक में एक वाणिज्यिक उत्पाद के रूप में विकसित किया।

2016 में सिलिकॉन प्रयोगशालाओं द्वारा माइक्रीम, इंक। का अधिग्रहण किया गया था और इसे बाद में अपाचे लाइसेंस के तहत ओपन-सोर्स के रूप में जारी किया गया।

सिलिकॉन लैब्स अपने स्वयं के सिलिकॉन पर उपयोग के लिए माइक्रीम ओएस नामक ओपन-सोर्स उत्पाद को बनाए रखना जारी रखती है और माइक्रीम, इंक. के पूर्व कर्मचारियों का एक समूह (लैब्रोस सहित) μC/OS और सीज़ियम आरटीओएस दोनों के लिए परामर्श और समर्थन प्रदान करता है, ओपन-सोर्स रिलीज के ठीक बाद बनाया गया एक मालिकाना फोर्क।

μC/OS-II
μC/OS के लिए लिखे गए स्रोत कोड के आधार पर, और 1998 में एक वाणिज्यिक उत्पाद के रूप में पेश किया गया, μC/OS-II एक सॉफ्टवेयर पोर्टेबिलिटी, रोम-सक्षम, मापनीय, प्रीमेप्टिव, रियल-टाइम, नियतात्मक, मल्टीटास्किंग कर्नेल (ऑपरेटिंग सिस्टम) है। माइक्रोप्रोसेसरों और डिजिटल सिग्नल प्रोसेसर (डीएसपी) के लिए। यह 64 कार्यों तक का प्रबंधन करता है। इसका आकार बढ़ाया जा सकता है (5 और 24 किलोबाइट्स के बीच) केवल किसी दिए गए उपयोग के लिए आवश्यक सुविधाओं को शामिल करने के लिए।

अधिकांश μC/OS-II अत्यधिक पोर्टेबल ANSI C में लिखे गए हैं, जिसमें लक्ष्य माइक्रोप्रोसेसर-विशिष्ट कोड असेंबली भाषा में लिखा गया है। दूसरे प्रोसेसर में में porting  को आसान बनाने के लिए बाद वाले का उपयोग कम से कम किया जाता है।

एम्बेडेड सिस्टम में उपयोग
μC/OS-II एम्बेडेड उपयोगों के लिए डिज़ाइन किया गया था। यदि निर्माता के पास उचित टूल चेन (यानी, सी कंपाइलर, असेंबलर और लिंकर-लोकेटर) है, तो μC/OS-II को उत्पाद के हिस्से के रूप में एम्बेड किया जा सकता है।

μC/OS-II का उपयोग कई एम्बेडेड सिस्टम में किया जाता है, जिनमें निम्न शामिल हैं:
 * वैमानिकी
 * चिकित्सा उपकरण और उपकरण
 * डेटा संचार उपकरण
 * सफेद सामान (घरेलू उपकरण)
 * चल दूरभाष, व्यक्तिगत डिजिटल सहायक (पीडीए), एमआईडी
 * औद्योगिक नियंत्रण
 * उपभोक्ता इलेक्ट्रॉनिक्स
 * ऑटोमोटिव

टास्क स्टेट्स
μC/OS-II एक कंप्यूटर मल्टीटास्किंग ऑपरेटिंग सिस्टम है। प्रत्येक कार्य एक अनंत लूप है और निम्नलिखित पांच राज्यों में से किसी एक में हो सकता है (नीचे चित्र देखें) इसके अलावा, यह 64 कार्यों तक का प्रबंधन कर सकता है। हालाँकि, यह अनुशंसा की जाती है कि इनमें से आठ कार्यों को μC/OS-II के लिए आरक्षित किया जाए, एक आवेदन को 56 कार्यों तक छोड़ दिया जाए।
 * प्रसुप्त
 * तैयार
 * दौड़ना
 * प्रतीक्षा (एक घटना के लिए)
 * बाधित (इंटरप्ट हैंडलर (ISR))

गुठली
कर्नेल (ऑपरेटिंग सिस्टम) उस प्रोग्राम को दिया गया नाम है जो ऑपरेटिंग सिस्टम के अधिकांश हाउसकीपिंग कार्य करता है। बूट लोडर कर्नेल को नियंत्रित करता है, जो विभिन्न उपकरणों को एक ज्ञात अवस्था में प्रारंभ करता है और कंप्यूटर को सामान्य संचालन के लिए तैयार करता है। कर्नेल कार्यों के प्रबंधन (यानी, CPU के समय के प्रबंधन के लिए) और कार्यों के बीच संचार करने के लिए जिम्मेदार है। कर्नेल द्वारा प्रदान की जाने वाली मूलभूत सेवा संदर्भ स्विचिंग है।

अनुसूचक कर्नेल का वह हिस्सा है जो यह निर्धारित करने के लिए जिम्मेदार है कि कौन सा कार्य आगे चलता है। अधिकांश रीयल-टाइम कर्नेल प्राथमिकता आधारित होते हैं। प्राथमिकता-आधारित कर्नेल में, CPU का नियंत्रण हमेशा चलने के लिए तैयार सर्वोच्च प्राथमिकता वाले कार्य को दिया जाता है। दो प्रकार की प्राथमिकता-आधारित गुठली मौजूद हैं: कंप्यूटर मल्टीटास्किंग # सहकारी मल्टीटास्किंग | गैर-प्रीमेप्टिव और प्रीमेशन (कंप्यूटिंग)। अप्रतिबंधित गुठली की आवश्यकता है कि प्रत्येक कार्य सीपीयू के नियंत्रण को स्पष्ट रूप से छोड़ने के लिए कुछ करे। प्रीमेप्टिव कर्नेल का उपयोग तब किया जाता है जब सिस्टम की जवाबदेही अधिक महत्वपूर्ण होती है। इस प्रकार, μC/OS-II और अधिकांश व्यावसायिक रीयल-टाइम कर्नेल प्रीमेप्टिव हैं। चलाने के लिए तैयार सर्वोच्च प्राथमिकता वाले कार्य को हमेशा CPU का नियंत्रण दिया जाता है।

कार्य सौंपना
निष्पादन की उच्चतम दर वाले कार्यों को दर-मोनोटोनिक शेड्यूलिंग का उपयोग करके सर्वोच्च प्राथमिकता दी जाती है। यह शेड्यूलिंग एल्गोरिदम रीयल-टाइम ऑपरेटिंग सिस्टम (आरटीओएस) में स्थिर-प्राथमिकता शेड्यूलिंग वर्ग के साथ उपयोग किया जाता है।

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

स्मृति प्रबंधन
विखंडन (कंप्यूटिंग) से बचने के लिए, μC/OS-II अनुप्रयोगों को एक मेमोरी प्रबंधन (ऑपरेटिंग सिस्टम) से निश्चित आकार के मेमोरी ब्लॉक प्राप्त करने की अनुमति देता है #एक सन्निहित मेमोरी क्षेत्र से बना विभाजन आवंटन। सभी मेमोरी ब्लॉक एक ही आकार के होते हैं, और विभाजन में ब्लॉकों की एक अभिन्न संख्या होती है। इन मेमोरी ब्लॉकों का आवंटन और विलोपन निरंतर समय में किया जाता है और यह एक नियतात्मक प्रणाली है।

समय प्रबंधन
μC/OS-II के लिए आवश्यक है कि समय की देरी और टाइमआउट का ट्रैक रखने के लिए एक आवधिक समय स्रोत प्रदान किया जाए। एक टिक 10 से 1000 बार प्रति सेकंड या हेटर्स ़ के बीच होना चाहिए। तेज़ टिक दर, अधिक ओवरहेड (कंप्यूटिंग) μC/OS-II सिस्टम पर लगाता है। क्लॉक टिक की आवृत्ति किसी एप्लिकेशन के वांछित टिक रिज़ॉल्यूशन पर निर्भर करती है। टिक स्रोत एक हार्डवेयर टाइमर समर्पित करके, या एक प्रत्यावर्ती धारा (AC) पावर लाइन (50 या 60 Hz) सिग्नल से व्यवधान उत्पन्न करके प्राप्त किया जा सकता है। इस आवधिक समय स्रोत को क्लॉक टिक कहा जाता है। घड़ी की टिक निर्धारित होने के बाद, कार्य निम्न हो सकते हैं:
 * किसी काम में देरी करना
 * रुके हुए कार्य को फिर से शुरू करें

कार्यों के बीच संचार
μC/OS-II में इंटरटास्क या इंटरप्रोसेस संचार होता है: सेमाफोर (प्रोग्रामिंग), संदेश मेलबॉक्स, संदेश कतार, कार्य और इंटरप्ट हैंडलर (आईएसआर)। वे एक दूसरे के साथ बातचीत कर सकते हैं जब कोई कार्य या आईएसआर एक ईवेंट कंट्रोल ब्लॉक (ईसीबी) नामक कर्नेल ऑब्जेक्ट के माध्यम से कार्य को संकेत देता है। संकेत को एक घटना माना जाता है।

μC/OS-III
μC/OS-III माइक्रो-कंट्रोलर ऑपरेटिंग सिस्टम वर्जन 3 का संक्षिप्त रूप है, जिसे 2009 में पेश किया गया था और μC/OS-II RTOS में कार्यक्षमता जोड़ता है।

μC/OS-III μC/OS-II की सभी विशेषताएं और कार्य प्रदान करता है। सबसे बड़ा अंतर समर्थित कार्यों की संख्या है। μC/OS-II अधिकतम 255 कार्यों के लिए 255 प्राथमिकता स्तरों में से प्रत्येक पर केवल 1 कार्य की अनुमति देता है। μC/OS-III किसी भी संख्या में एप्लिकेशन कार्यों, प्राथमिकता स्तरों और प्रति स्तर कार्यों की अनुमति देता है, केवल मेमोरी तक प्रोसेसर पहुंच द्वारा सीमित। μC/OS-II और μC/OS-III वर्तमान में सिलिकॉन लैब्स की सहायक कंपनी माइक्रियम, इंक द्वारा बनाए रखा जाता है, और प्रति उत्पाद या प्रति उत्पाद लाइन लाइसेंस प्राप्त किया जा सकता है।

एम्बेडेड सिस्टम्स में उपयोग
उपयोग μC/OS-II के समान हैं

टास्क स्टेट्स
μC/OS-III एक कंप्यूटर मल्टीटास्किंग ऑपरेटिंग सिस्टम है। प्रत्येक कार्य एक अनंत लूप है और पांच राज्यों में से किसी एक में हो सकता है (निष्क्रिय, तैयार, चल रहा है, बाधित, या लंबित)। टास्क प्राथमिकताएं 0 (सर्वोच्च प्राथमिकता) से लेकर अधिकतम 255 (न्यूनतम संभव प्राथमिकता) तक हो सकती हैं।

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

गुठली
μC/OS-III के लिए कर्नेल कार्यक्षमता μC/OS-II के समान है।

कार्यों का प्रबंधन
कार्य प्रबंधन भी μC/OS-II के समान कार्य करता है। हालाँकि, μC/OS-III मल्टीटास्किंग का समर्थन करता है और किसी एप्लिकेशन को किसी भी संख्या में कार्य करने की अनुमति देता है। प्रोसेसर के लिए उपलब्ध कंप्यूटर मेमोरी (कोड और डेटा स्पेस दोनों) की मात्रा से ही कार्यों की अधिकतम संख्या सीमित है।

एक कार्य को निर्धारित पूर्णता तक चलने के माध्यम से कार्यान्वित किया जा सकता है, जिसमें कार्य समाप्त होने पर स्वयं को हटा देता है, या अधिक विशिष्ट रूप से एक अनंत लूप के रूप में, घटनाओं के होने की प्रतीक्षा में और उन घटनाओं को संसाधित करता है।

स्मृति प्रबंधन
मेमोरी प्रबंधन उसी तरह से किया जाता है जैसे μC/OS-II में।

समय प्रबंधन
μC/OS-III μC/OS-II के समान समय प्रबंधन सुविधाएँ प्रदान करता है। यह एप्लिकेशन को सेवाएं भी प्रदान करता है ताकि कार्य उपयोगकर्ता द्वारा परिभाषित समय विलंब के लिए उनके निष्पादन को निलंबित कर सकें। देरी या तो घड़ी की टिक, या घंटे, मिनट, सेकंड और मिलीसेकंड की संख्या से निर्दिष्ट होती है।

कार्यों के बीच संचार
कभी-कभी, एक कार्य या ISR को दूसरे कार्य के लिए सूचना का संचार करना चाहिए, क्योंकि एक ही विशिष्ट डेटा या हार्डवेयर संसाधन को एक साथ एक्सेस करना दो कार्यों के लिए असुरक्षित है। इसे एक सूचना हस्तांतरण के माध्यम से हल किया जा सकता है, जिसे अंतर-कार्य संचार कहा जाता है। सूचनाओं को कार्यों के बीच दो तरीकों से संप्रेषित किया जा सकता है: वैश्विक डेटा के माध्यम से, या संदेश भेजकर।

वैश्विक चर का उपयोग करते समय, प्रत्येक कार्य या ISR को यह सुनिश्चित करना चाहिए कि उसके पास चरों तक विशेष पहुंच हो। यदि कोई ISR शामिल है, तो सामान्य चरों के लिए अनन्य पहुँच सुनिश्चित करने का एकमात्र तरीका व्यवधानों को अक्षम करना है। यदि दो कार्य डेटा साझा करते हैं, तो प्रत्येक इंटरप्ट्स को अक्षम करके, शेड्यूलर को लॉक करके, एक सेमाफोर (प्रोग्रामिंग) का उपयोग करके, या अधिमानतः, पारस्परिक बहिष्करण सेमाफोर का उपयोग करके चर के लिए विशेष पहुंच प्राप्त कर सकता है। संदेश या तो एक मध्यवर्ती वस्तु को भेजा जा सकता है जिसे संदेश कतार कहा जाता है, या सीधे एक कार्य के लिए, चूंकि μC/OS-III में, प्रत्येक कार्य की अपनी अंतर्निहित संदेश कतार होती है। यदि संदेशों के लिए प्रतीक्षा करने के लिए एकाधिक कार्य हैं तो बाहरी संदेश कतार का उपयोग करें। यदि केवल एक कार्य प्राप्त डेटा को संसाधित करेगा, तो सीधे कार्य को संदेश भेजें। जबकि कार्य किसी संदेश के आने की प्रतीक्षा करता है, यह CPU समय का उपयोग नहीं करता है।

पोर्ट्स
एक पोर्ट में तीन पहलू शामिल होते हैं: CPU, OS और बोर्ड विशिष्ट (BSP) कोड। μC/OS-II और μC/OS-III के पास बाजार में सबसे लोकप्रिय प्रोसेसर और बोर्ड के लिए बंदरगाह हैं और सुरक्षा महत्वपूर्ण एम्बेडेड सिस्टम जैसे विमानन, चिकित्सा प्रणाली और परमाणु प्रतिष्ठानों में उपयोग के लिए उपयुक्त हैं। एक μC/OS-III पोर्ट में तीन कर्नेल विशिष्ट फाइलों की सामग्री को लिखना या बदलना शामिल है:,  , और. अंत में उपयोग किए जा रहे मूल्यांकन बोर्ड या लक्ष्य बोर्ड के लिए एक बोर्ड सपोर्ट पैकेज (बीएसपी) बनाएं या बदलें। एक μC/OS-III पोर्ट एक μC/OS-II पोर्ट के समान है। यहाँ सूचीबद्ध की तुलना में काफी अधिक बंदरगाह हैं, और बंदरगाह निरंतर विकास के अधीन हैं। μC/OS-II और μC/OS-III दोनों ही लोकप्रिय ट्रांसपोर्ट लेयर सिक्योरिटी|SSL/TLS लाइब्रेरी जैसे wolfSSL द्वारा समर्थित हैं, जो सभी कनेक्शनों में सुरक्षा सुनिश्चित करते हैं।

लाइसेंसिंग परिवर्तन
सिलिकॉन लैब्स द्वारा अधिग्रहण के बाद, 2020 में माइक्रीम फरवरी 2020 में ओपन-सोर्स मॉडल लाइसेंसिंग में बदल गया। इसमें यूसी/ओएस III, सभी पूर्व संस्करण, सभी घटक शामिल हैं: यूएसबी, फाइल सिस्टम, जीयूआई, टीसीपी/आईपी, आदि।

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

स्रोत

 * फ्यूजन एंबेडेड से μC/OS-II के लिए प्रोटोकॉल सपोर्ट
 * Micrium-uCOS-III-UsersManual पहला संस्करण
 * uC/OS-III: Renesas RX62N के लिए रीयल-टाइम कर्नेल

बाहरी संबंध

 * Summary of Commonly Used uC/OS-II Functions and Data Structures
 * NiosII GCC with MicroC/OS
 * μC/OS-II Reference Manual
 * How to Get a μC/OS-II Application Running
 * μC/OS-II Reference Manual
 * How to Get a μC/OS-II Application Running