अंगूठे का मेरा नियम है कि आपको एक ऑपरेटिंग सिस्टम पर विचार करना चाहिए, यदि उत्पाद को निम्न में से एक या अधिक की आवश्यकता होती है: एक टीसीपी / आईपी स्टैक (या अन्य जटिल नेटवर्किंग स्टैक), एक जटिल जीयूआई (शायद जीयूआई ऑब्जेक्ट जैसे कि विंडोज़ और ईवेंट के साथ एक)। ), या एक फाइल सिस्टम।
यदि आपने कुछ नंगे धातु कोडिंग किए हैं तो आप शायद सुपर-लूप प्रोग्राम आर्किटेक्चर से परिचित हैं । यदि उत्पाद की फ़र्मवेयर आवश्यकताएँ एक सुपर-लूप के साथ कार्यान्वित होने के लिए सरल हैं जो कि अनुरक्षण योग्य है (और उम्मीद है कि कुछ हद तक एक्स्टेंसिबल है) तो आपको शायद ऑपरेटिंग सिस्टम की आवश्यकता नहीं है।
जैसे-जैसे सॉफ़्टवेयर आवश्यकताओं में वृद्धि होती है, सुपर-लूप अधिक जटिल हो जाता है। जब सॉफ्टवेयर आवश्यकताएं इतनी अधिक होती हैं कि सुपर-लूप बहुत जटिल हो जाता है या सिस्टम की वास्तविक समय की आवश्यकताओं को पूरा नहीं कर सकता है, तो यह समय एक और वास्तुकला पर विचार करने का है।
RTOS आर्किटेक्चर आपको सॉफ़्टवेयर आवश्यकताओं को कार्यों में विभाजित करने की अनुमति देता है। यदि ठीक से किया जाता है, तो यह प्रत्येक कार्य के कार्यान्वयन को सरल करता है। और कार्य प्राथमिकता के साथ एक आरटीओएस वास्तविक समय की आवश्यकताओं को पूरा करना आसान बना सकता है। एक RTOS एक रामबाण नहीं है, हालांकि। RTOS समग्र प्रणाली जटिलता को बढ़ाता है और आपको नए प्रकार के बग (जैसे गतिरोध) के लिए खोलता है। RTOS के विकल्प के रूप में आप विचार कर सकते हैं और इवेंट-आधारित स्टेट मशीन आर्किटेक्चर (जैसे QP )।
यदि आपके उत्पाद में नेटवर्किंग, एक जटिल GUI और एक फ़ाइल-सिस्टम है, तो आप उस बिंदु पर हो सकते हैं जहाँ आपको पूर्ण विशेषताओं वाले ऑपरेटिंग सिस्टम जैसे VxWorks, Windows या Linux पर विचार करना चाहिए। पूर्ण विशेषताओं वाले ऑपरेटिंग सिस्टम में निम्न-स्तरीय विवरण के लिए ड्राइवर शामिल होंगे और आपको अपने एप्लिकेशन पर ध्यान केंद्रित करने की अनुमति देगा।