एक वर्जित धातु MCU के लिए, बैकग्राउंड लूप और टाइमर इंटरप्ट आर्किटेक्चर के साथ होममेड कोड की तुलना में, गैर-अप्रभावी ओएस के क्या लाभ हैं? पृष्ठभूमि लूप आर्किटेक्चर के साथ होममेड कोड का उपयोग करने के बजाय गैर-प्रीमेप्टिव ओएस को अपनाने के लिए इन लाभों में से कौन सा लाभ पर्याप्त आकर्षक है?
।
प्रश्न का स्पष्टीकरण:
मैं वास्तव में उन सभी की सराहना करता हूं जिन्होंने मेरे प्रश्न का उत्तर दिया है। मुझे लगता है कि उत्तर लगभग वहीं रहा है। मैं यहाँ अपने प्रश्न के लिए इस स्पष्टीकरण को जोड़ता हूँ जो मेरा अपना विचार दिखाता है और प्रश्न को कम करने या इसे अधिक सटीक बनाने में मदद कर सकता है।
जो मैं करने की कोशिश कर रहा हूं वह यह समझना है कि सामान्य रूप से किसी परियोजना के लिए सबसे उपयुक्त आरटीओएस का चयन कैसे करें।
इसे प्राप्त करने के लिए, बुनियादी अवधारणाओं की बेहतर समझ और विभिन्न प्रकार के आरटीओएस से सबसे आकर्षक लाभ और संबंधित मूल्य में मदद मिलेगी, क्योंकि सभी अनुप्रयोगों के लिए सबसे अच्छा आरटीओएस नहीं है।
मैंने कुछ साल पहले ओएस के बारे में किताबें पढ़ी थीं, लेकिन अब मैं उनके साथ नहीं हूं। मैंने अपना प्रश्न यहां पोस्ट करने से पहले इंटरनेट पर खोजा और पाया कि यह जानकारी सबसे अधिक उपयोगी थी: http://www.ustudy.in/node/5456 ।
विभिन्न आरटीओएस की वेबसाइट में परिचय, पूर्व-खाली समय-निर्धारण और गैर-पूर्व-निर्धारण कार्यक्रम और आदि की तुलना करने वाले लेखों की तरह बहुत सी अन्य उपयोगी जानकारी हैं।
लेकिन मुझे ऐसा कोई भी विषय नहीं मिला जो गैर-निवारक आरटीओएस का चयन करने के लिए उल्लेख किया गया हो और जब टाइमर अवरोध और पृष्ठभूमि लूप का उपयोग करके अपना कोड लिखना बेहतर होता है।
मेरे अपने कुछ उत्तर हैं लेकिन मैं उनसे संतुष्ट नहीं हूँ।
मैं वास्तव में अधिक एक्सपायर लोगों से जवाब जानना चाहता हूं या देखना चाहता हूं, खासकर उद्योग अभ्यास में।
मेरी अब तक की समझ है:
कोई बात नहीं या ओएस का उपयोग न करें, कुछ विशेष प्रकार के शेड्यूलिंग कोड हमेशा आवश्यक होते हैं, यहां तक कि यह कोड के रूप में है:
in the timer interrupt which occurs every 10ms
if(it's 10ms)
{
call function A / execute task A;
}
if(it's 50ms)
{
call function B / execute task B;
}
लाभ 1:
एक गैर-निवारक ओएस शेड्यूलिंग कोड के लिए जिस तरह से / प्रोग्रामिंग शैली को डिजाइन करता है, ताकि इंजीनियर उसी दृश्य को साझा कर सकें, भले ही वे पहले एक ही परियोजना में न हों। फिर अवधारणा कार्य के बारे में एक ही दृष्टिकोण के साथ, इंजीनियर विभिन्न कार्यों पर काम कर सकते हैं और उनका परीक्षण कर सकते हैं, उन्हें यथासंभव स्वतंत्र रूप से प्रोफाइल कर सकते हैं।
लेकिन हम वास्तव में इससे कितना लाभ उठा पा रहे हैं? यदि इंजीनियर एक ही परियोजना में काम कर रहे हैं, तो वे गैर-प्रीमेप्टिव ओएस का उपयोग किए बिना उसी दृश्य को साझा करने का तरीका पा सकते हैं।
यदि एक इंजीनियर दूसरे प्रोजेक्ट या कंपनी से है, तो उसे लाभ होगा यदि वह पहले ओएस को जानता था। लेकिन अगर वह नहीं था, तो फिर से, यह उसके लिए एक नया ओएस या कोड का एक नया टुकड़ा सीखने के लिए बड़ा अंतर नहीं है।
लाभ 2:
यदि ओएस कोड का अच्छी तरह से परीक्षण किया गया है, तो यह डिबगिंग से समय बचाता है। यह वास्तव में एक अच्छा लाभ है।
लेकिन अगर आवेदन में केवल 5 कार्य हैं, तो मुझे लगता है कि टाइमर अवरोध और पृष्ठभूमि लूप का उपयोग करके अपना कोड लिखना वास्तव में गड़बड़ नहीं है।
यहां एक गैर-प्रीमेप्टिव ओएस को गैर-प्रीमेप्टिव शेड्यूलर के साथ एक वाणिज्यिक / मुफ्त / विरासत ओएस के लिए संदर्भित किया जाता है।
: जब मैं इस प्रश्न पोस्ट, मैं मुख्य रूप से जैसे कुछ OSes के बारे में सोच
(- अपनी वेबसाइट ने दावा किया है एक छोटे NonPreemptive RTOS) (1) KISS कर्नेल
http://www.frontiernet.net/~rhode/kisskern.html
(2) uSmartX (हल्के RTOS - अपनी वेबसाइट ने दावा किया है)
(3) FreeRTOS (यह एक रिक्तिपूर्व RTOS है, लेकिन के रूप में मैं समझता हूँ, यह अच्छी तरह के रूप में एक गैर रिक्तिपूर्व RTOS के रूप में विन्यस्त किया जा सकता)
(4) uC / ओएस (FreeRTOS के रूप में समान)
(5 ) कुछ कंपनियों में विरासत ओएस / अनुसूचक कोड (आमतौर पर कंपनी द्वारा आंतरिक रूप से बनाया और बनाए रखा जाता है)
(नए स्टैकऑवरफ़्लो खाते से सीमा के कारण अधिक लिंक नहीं जोड़ सकते हैं)
जैसा कि मैं समझता हूं, एक गैर-प्रीमैप्टिव ओएस इन कोडों का एक संग्रह है:
(1) गैर-प्रीमिटिव रणनीति का उपयोग करके एक अनुसूचक।
(2) अंतर-कार्य संचार, म्यूटेक्स, सिंक्रनाइज़ेशन और समय नियंत्रण के लिए सुविधाएं।
(३) स्मृति प्रबंधन।
(4) अन्य उपयोगी सुविधाओं / फाइल सिस्टम, नेटवर्क स्टैक, जीयूआई और आदि जैसे पुस्तकालयों (FreeRTOS और यू सी / ओएस इन प्रदान करता है, लेकिन मुझे यकीन है कि अगर वे अब भी काम जब अनुसूचक गैर रिक्तिपूर्व के रूप में कॉन्फ़िगर किया गया है नहीं कर रहा हूँ)
में से कुछ वे हमेशा वहाँ नहीं हैं। लेकिन अनुसूचक एक चाहिए।