रीयल-टाइम ऑपरेटिंग सिस्टम

रीयल-टाइम ऑपरेटिंग सिस्टम (आरटीओएस) रीयल-टाइम कंप्यूटिंग अनुप्रयोगों के लिए एक ऑपरेटिंग सिस्टम (ओएस) है जो डेटा और घटनाओं को संसाधित करता है जिसमें सूक्षम रूप से परिभाषित समय की कमी होती है। एक आरटीओएस टाइम-शेयरिंग ऑपरेटिंग सिस्टम से अलग है, जैसे कि यूनिक्स, जो एक मल्टीटास्किंग या मल्टीप्रोग्रामिंग परिस्थिति में एक अनुसूचक, डेटा बफ़र्स, या निश्चित कार्य प्राथमिकता के साथ सिस्टम संसाधनों के साझाकरण का प्रबंधन करता है। प्रसंस्करण समय की आवश्यकताओं को न्यूनतम रूप में रखने के अतिरिक्त पूरी तरह से समझने और बाध्य करने की आवश्यकता है। सभी प्रसंस्करण परिभाषित बाध्यताओं के अंतर्गत होने चाहिए। रीयल-टाइम ऑपरेटिंग सिस्टम घटना-संचालित प्रोग्रामिंग हैं। घटना-संचालित और प्रीमेशन (कंप्यूटिंग), जिसका अर्थ है कि ओएस प्रतिस्पर्धी कार्यों की प्रासंगिक प्राथमिकता का पर्यवेक्षण कर सकता है और कार्य प्राथमिकता में परिवर्तन कर सकता है। घटना-संचालित सिस्टम अपनी प्राथमिकताओं के आधार पर कार्यों के बीच परिवर्तन करते हैं, जबकि टाइम-शेयरिंग सिस्टम घड़ी के अवरोध के आधार पर कार्य को परिवर्तन करते हैं।

विशेषताएं
आरटीओएस की एक प्रमुख विशेषता इसकी निरंतरता का स्तर है जो किसी एप्लिकेशन के कार्य (कंप्यूटिंग) को स्वीकार करने और पूरा करने में लगने वाले समय से संबंधित है; परिवर्तनशीलता 'घबराना' है। एक 'हार्ड' रीयल-टाइम ऑपरेटिंग सिस्टम (हार्ड आरटीओएस) में 'सॉफ्ट' रीयल-टाइम ऑपरेटिंग सिस्टम (सॉफ्ट आरटीओएस) की तुलना में कम घबराहट होती है। देर से दिया गया उत्तर हार्ड आरटीओएस में गलत उत्तर होता है जबकि सॉफ्ट आरटीओएस में देर से दिया गया उत्तर स्वीकार्य होता है। मुख्य डिजाइन लक्ष्य उच्च THROUGHPUT नहीं है, बल्कि रीयल-टाइम कंप्यूटिंग प्रदर्शन श्रेणी के लिए रीयल-टाइम कंप्यूटिंग#मानदंड की गारंटी है। एक आरटीओएस जो आमतौर पर या आम तौर पर एक समय सीमा को पूरा कर सकता है, एक सॉफ्ट रीयल-टाइम ओएस है, लेकिन अगर यह निर्धारित समय सीमा को पूरा कर सकता है तो यह एक कठिन रीयल-टाइम ओएस है। आरटीओएस में शेड्यूलिंग (कंप्यूटिंग) के लिए एक उन्नत एल्गोरिदम है। शेड्यूलर लचीलापन प्रक्रिया प्राथमिकताओं के एक व्यापक, कंप्यूटर-सिस्टम ऑर्केस्ट्रेशन को सक्षम करता है, लेकिन एक वास्तविक समय ओएस अधिक बार अनुप्रयोगों के एक संकीर्ण सेट के लिए समर्पित होता है। रीयल-टाइम ओएस में प्रमुख कारक न्यूनतम व्यवधान विलंबता और न्यूनतम थ्रेड स्विचिंग विलंबता हैं; एक रीयल-टाइम ओएस को इस बात के लिए अधिक महत्व दिया जाता है कि यह किसी निश्चित समयावधि में जितना काम कर सकता है, उसकी तुलना में यह कितनी जल्दी या कितनी अनुमानित रूप से प्रतिक्रिया दे सकता है। विस्तृत सूची के लिए रीयल-टाइम ऑपरेटिंग सिस्टम की तुलना देखें। साथ ही, सभी प्रकार के ऑपरेटिंग सिस्टम के लिए ऑपरेटिंग सिस्टम की सूची देखें।

डिजाइन दर्शन
एक आरटीओएस एक ऑपरेटिंग सिस्टम है जिसमें एक इनपुट प्रोत्साहन को संसाधित करने में लगने वाला समय उसी प्रकार के अगले इनपुट प्रोत्साहन तक व्यतीत होने वाले समय से कम होता है।

सबसे आम डिजाइन हैं: समय बताना - नियमित क्लॉक्ड इंटरप्ट और ईवेंट पर कार्यों को स्विच करता है; राउंड-रॉबिन शेड्यूलिंग कहा जाता है।
 * घटना-संचालित - प्रसंग स्विच केवल तभी होता है जब उच्च प्राथमिकता वाली घटना को सर्विसिंग की आवश्यकता होती है; प्रीमेशन (कंप्यूटिंग), या प्राथमिकता शेड्यूलिंग कहा जाता है।

समय साझा करने वाले डिज़ाइन कार्यों को सख्ती से आवश्यकता से अधिक बार स्विच करते हैं, लेकिन कंप्यूटर कंप्यूटर मल्टीटास्किंग आसान बनाते हैं, जिससे यह भ्रम होता है कि एक प्रक्रिया या उपयोगकर्ता के पास मशीन का एकमात्र उपयोग है।

शुरुआती सीपीयू डिजाइनों को कार्यों को बदलने के लिए कई चक्रों की आवश्यकता होती थी, जिसके दौरान सीपीयू कुछ और उपयोगी नहीं कर सकता था। क्योंकि स्विचिंग में इतना समय लगता था, शुरुआती ओएस ने अनावश्यक कार्य स्विचिंग से बचकर CPU समय बर्बाद करने को कम करने की कोशिश की।

निर्धारण
विशिष्ट डिजाइनों में, एक कार्य में तीन अवस्थाएँ होती हैं:
 * 1) चल रहा है (सीपीयू पर अमल);
 * 2) तैयार (निष्पादित होने के लिए तैयार);
 * 3) ब्लॉक किया गया (एक घटना की प्रतीक्षा में, उदाहरण के लिए I/O)।

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

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

यदि तैयार सूची में कभी भी कुछ कार्यों से अधिक नहीं होते हैं, तो तैयार कार्यों की दोगुनी लिंक की गई सूची की संभावना इष्टतम होती है। यदि तैयार सूची में आमतौर पर केवल कुछ कार्य होते हैं लेकिन कभी-कभी अधिक होते हैं, तो सूची को प्राथमिकता के आधार पर क्रमबद्ध किया जाना चाहिए। इस तरह, चलाने के लिए सर्वोच्च प्राथमिकता वाले कार्य को खोजने के लिए पूरी सूची के माध्यम से पुनरावृति की आवश्यकता नहीं होती है। किसी कार्य को सम्मिलित करने के लिए सूची के अंत तक पहुंचने तक या सम्मिलित किए जा रहे कार्य की तुलना में कम प्राथमिकता वाले कार्य तक तैयार सूची को चलने की आवश्यकता होती है।

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

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

अधिक उन्नत प्रणालियों में, वास्तविक समय के कार्य कंप्यूटिंग संसाधनों को कई गैर-वास्तविक समय के कार्यों के साथ साझा करते हैं, और तैयार सूची मनमाने ढंग से लंबी हो सकती है। ऐसी प्रणालियों में, लिंक की गई सूची के रूप में लागू की गई अनुसूचक तैयार सूची अपर्याप्त होगी।

एल्गोरिदम
कुछ सामान्य रूप से उपयोग किए जाने वाले आरटीओएस शेड्यूलिंग एल्गोरिदम हैं:
 * सहकारी निर्धारण
 * पूर्वक्रय (कम्प्यूटिंग)
 * दर-मोनोटोनिक शेड्यूलिंग
 * राउंड-रॉबिन शेड्यूलिंग
 * फिक्स्ड प्राथमिकता प्री-एम्प्टिव शेड्यूलिंग, समय का टुकड़ा  का कार्यान्वयन
 * निश्चित-प्राथमिकता निर्धारण आस्थगित छूट के साथ
 * फिक्स्ड-प्राथमिकता गैर-प्रीमेप्टिव शेड्यूलिंग
 * क्रिटिकल सेक्शन प्रीमेप्टिव शेड्यूलिंग
 * स्टेटिक टाइम शेड्यूलिंग
 * जल्द से जल्द समय सीमा पहले शेड्यूलिंग दृष्टिकोण
 * थ्रेड (कंप्यूटर साइंस) के साथ स्टोकेस्टिक   निर्देशित ग्राफ  | मल्टी-थ्रेडेड ट्री ट्रैवर्सल

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

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

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

म्युटेक्स
जब साझा संसाधन को अन्य सभी कार्यों को अवरुद्ध किए बिना आरक्षित किया जाना चाहिए (जैसे कि फ्लैश मेमोरी के लिखे जाने की प्रतीक्षा करना), सामान्य-उद्देश्य ऑपरेटिंग सिस्टम पर भी उपलब्ध तंत्र का उपयोग करना बेहतर होता है, जैसे म्यूटेक्स और ओएस-पर्यवेक्षित इंटरप्रोसेस मैसेजिंग। इस तरह के तंत्र में सिस्टम कॉल शामिल होते हैं, और आमतौर पर बाहर निकलने पर ओएस के डिस्पैचर कोड को आमंत्रित करते हैं, इसलिए वे आमतौर पर निष्पादित करने के लिए सैकड़ों CPU निर्देश लेते हैं, जबकि मास्किंग इंटरप्ट कुछ प्रोसेसर पर एक निर्देश के रूप में कम हो सकता है।

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

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

गतिरोध में, दो या दो से अधिक कार्य समय समाप्ति के बिना म्यूटेक्स को लॉक कर देते हैं और फिर चक्रीय निर्भरता बनाते हुए दूसरे कार्य के म्यूटेक्स के लिए हमेशा प्रतीक्षा करते हैं। सबसे सरल गतिरोध परिदृश्य तब होता है जब दो कार्य वैकल्पिक रूप से दो म्यूटेक्स को लॉक करते हैं, लेकिन विपरीत क्रम में। गतिरोध को सावधानीपूर्वक डिजाइन द्वारा रोका जाता है।

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

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

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

इसी तरह, x86 संगत हार्डवेयर पर सिस्टम प्रबंधन मोड को ऑपरेटिंग सिस्टम पर नियंत्रण वापस करने से पहले बहुत समय लग सकता है।

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

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

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

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

साधारण मेमोरी_मैनेजमेंट#FIXED-SIZE|फिक्स्ड-साइज-ब्लॉक एल्गोरिथम अपने कम ओवरहेड के कारण सरल अंतः स्थापित प्रणाली  के लिए काफी अच्छी तरह से काम करता है।

यह भी देखें

 * अनुकूली विभाजन अनुसूचक
 * रीयल-टाइम ऑपरेटिंग सिस्टम की तुलना
 * डेटा जनरल आरडीओएस
 * डीओ-178B ी
 * जल्द से जल्द समय सीमा पहले शेड्यूलिंग
 * फर्मवेयर
 * फ्रीआरटीओएस
 * इंटरप्टिबल ऑपरेटिंग सिस्टम
 * कम से कम सुस्त समय निर्धारण
 * ओसेक
 * पॉज़िक्स
 * दर-मोनोटोनिक शेड्यूलिंग
 * रोबोट ऑपरेटिंग सिस्टम
 * स्काडा
 * तुल्यकालिक प्रोग्रामिंग भाषा
 * समय-ट्रिगर प्रणाली
 * समय-उपयोगिता समारोह