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

From Vigyanwiki
No edit summary
 
(18 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Short description|Computer operating system for applications with critical timing constraints}}
{{Short description|Computer operating system for applications with critical timing constraints}}
रीयल-टाइम [[ऑपरेटिंग सिस्टम]] (आरटीओएस) [[रीयल-टाइम कंप्यूटिंग]] अनुप्रयोगों के लिए एक ऑपरेटिंग सिस्टम (ओएस) है जो डेटा और घटनाओं को संसाधित करता है जिसमें सूक्षम रूप से परिभाषित समय की कमी होती है। एक आरटीओएस टाइम-शेयरिंग ऑपरेटिंग सिस्टम से अलग है, जैसे कि यूनिक्स, जो एक मल्टीटास्किंग या मल्टीप्रोग्रामिंग वातावरण में एक अनुसूचक, डेटा बफ़र्स, या निश्चित कार्य प्राथमिकता के साथ सिस्टम संसाधनों के साझाकरण का प्रबंधन करता है। प्रसंस्करण समय की आवश्यकताओं को केवल न्यूनतम के रूप में रखने के बजाय पूरी तरह से समझने और बाध्य करने की आवश्यकता है। सभी प्रसंस्करण परिभाषित बाधाओं के भीतर होने चाहिए। रीयल-टाइम ऑपरेटिंग सिस्टम [[घटना-संचालित प्रोग्रामिंग]] हैं। इवेंट-संचालित और प्रीमेशन (कंप्यूटिंग), जिसका अर्थ है कि ओएस प्रतिस्पर्धी कार्यों की प्रासंगिक प्राथमिकता की निगरानी कर सकता है और कार्य प्राथमिकता में बदलाव कर सकता है। इवेंट-संचालित सिस्टम अपनी प्राथमिकताओं के आधार पर कार्यों के बीच स्विच करते हैं, जबकि टाइम-शेयरिंग सिस्टम घड़ी के व्यवधान के आधार पर कार्य को स्विच करते हैं।
'''रीयल-टाइम ऑपरेटिंग सिस्टम''' (आरटीओएस) [[रीयल-टाइम कंप्यूटिंग]] अनुप्रयोगों के लिए एक ऑपरेटिंग सिस्टम (ओएस) है जो डेटा और घटनाओं को संसाधित करता है जिसमें सूक्षम रूप से परिभाषित समय की कमी होती है। एक आरटीओएस टाइम-शेयरिंग ऑपरेटिंग सिस्टम से अलग है, जैसे कि यूनिक्स, जो एक मल्टीटास्किंग या मल्टीप्रोग्रामिंग परिस्थिति में एक अनुसूचक, डेटा बफ़र्स, या निश्चित कार्य प्राथमिकता के साथ सिस्टम संसाधनों के सहभागिताकरण का प्रबंधन करता है। प्रसंस्करण समय की आवश्यकताओं को निम्न रूप में रखने के अतिरिक्त पूरी प्रकार से समझने और बाध्य करने की आवश्यकता है। सभी प्रसंस्करण परिभाषित बाध्यताओं के अंतर्गत होने चाहिए। रीयल-टाइम ऑपरेटिंग सिस्टम [[घटना-संचालित प्रोग्रामिंग]] हैं। घटना-संचालित और प्रीमेशन (कंप्यूटिंग), जिसका अर्थ है कि ओएस प्रतिस्पर्धी कार्यों की प्रासंगिक प्राथमिकता का पर्यवेक्षण कर सकता है और कार्य प्राथमिकता में परिवर्तन कर सकता है। घटना-संचालित सिस्टम अपनी प्राथमिकताओं के आधार पर कार्यों के बीच परिवर्तन करते हैं, जबकि टाइम-शेयरिंग सिस्टम घड़ी के अवरोध के आधार पर कार्य को परिवर्तन करते हैं।


== विशेषताएं ==
== विशेषताएं ==
आरटीओएस की एक प्रमुख विशेषता इसकी निरंतरता का स्तर है जो किसी एप्लिकेशन के कार्य (कंप्यूटिंग) को स्वीकार करने और पूरा करने में लगने वाले समय से संबंधित है; परिवर्तनशीलता '[[घबराना]]' है।<ref>{{cite web |url=http://www.chibios.org/dokuwiki/doku.php?id=chibios:articles:jitter |title = Response Time and Jitter}}</ref> एक 'हार्ड' रीयल-टाइम ऑपरेटिंग सिस्टम (हार्ड आरटीओएस) में 'सॉफ्ट' रीयल-टाइम ऑपरेटिंग सिस्टम (सॉफ्ट आरटीओएस) की तुलना में कम घबराहट होती है। देर से दिया गया उत्तर हार्ड आरटीओएस में गलत उत्तर होता है जबकि सॉफ्ट आरटीओएस में देर से दिया गया उत्तर स्वीकार्य होता है। मुख्य डिजाइन लक्ष्य उच्च [[THROUGHPUT]] नहीं है, बल्कि रीयल-टाइम कंप्यूटिंग प्रदर्शन श्रेणी के लिए रीयल-टाइम कंप्यूटिंग#मानदंड की गारंटी है। एक आरटीओएस जो आमतौर पर या आम तौर पर एक समय सीमा को पूरा कर सकता है, एक सॉफ्ट रीयल-टाइम ओएस है, लेकिन अगर यह निर्धारित समय सीमा को पूरा कर सकता है तो यह एक कठिन रीयल-टाइम ओएस है।<ref name="Tanenbaum">{{cite book |last=Tanenbaum |first=Andrew |title=आधुनिक ऑपरेटिंग सिस्टम|year=2008 |publisher=Pearson/Prentice Hall |location=Upper Saddle River, NJ |isbn=978-0-13-600663-3 |page=160}}</ref>
आरटीओएस की प्रमुख विशेषता इसकी निरंतरता का स्तर है जो किसी एप्लिकेशन के कार्य (कंप्यूटिंग) को स्वीकार करने और पूरा करने में लगने वाले समय से संबंधित है; परिवर्तनशीलता '[[घबराना|अस्थिर]]' होना है।<ref>{{cite web |url=http://www.chibios.org/dokuwiki/doku.php?id=chibios:articles:jitter |title = Response Time and Jitter}}</ref> एक 'दृढ़' रीयल-टाइम ऑपरेटिंग सिस्टम (दृढ़ आरटीओएस) में 'सरल' रीयल-टाइम ऑपरेटिंग सिस्टम (सरल आरटीओएस) की तुलना में कम [[घबराना|अस्थिर]] होता है। विलंब से दिया गया उत्तर दृढ़ आरटीओएस में गलत उत्तर होता है जबकि सरल आरटीओएस में विलंब से दिया गया उत्तर स्वीकार्य होता है। मुख्य डिजाइन लक्ष्य उच्च प्रवाह क्षमता नहीं है, बल्कि रीयल-टाइम कंप्यूटिंग प्रदर्शन श्रेणी के लिए रीयल-टाइम कंप्यूटिंग मानदंड की गारंटी है। एक आरटीओएस जो प्रायः या व्यापक रूप पर एक समय सीमा को पूरा कर सकता है, एक सरल रीयल-टाइम ओएस है, लेकिन अगर यह निर्धारित समय सीमा को पूरा कर सकता है तो यह एक कठिन रीयल-टाइम ओएस है।<ref name="Tanenbaum">{{cite book |last=Tanenbaum |first=Andrew |title=आधुनिक ऑपरेटिंग सिस्टम|year=2008 |publisher=Pearson/Prentice Hall |location=Upper Saddle River, NJ |isbn=978-0-13-600663-3 |page=160}}</ref>
आरटीओएस में [[शेड्यूलिंग (कंप्यूटिंग)]] के लिए एक उन्नत एल्गोरिदम है। शेड्यूलर लचीलापन प्रक्रिया प्राथमिकताओं के एक व्यापक, कंप्यूटर-सिस्टम ऑर्केस्ट्रेशन को सक्षम करता है, लेकिन एक वास्तविक समय ओएस अधिक बार अनुप्रयोगों के एक संकीर्ण सेट के लिए समर्पित होता है। रीयल-टाइम ओएस में प्रमुख कारक न्यूनतम [[व्यवधान विलंबता]] और न्यूनतम [[थ्रेड स्विचिंग विलंबता]] हैं; एक रीयल-टाइम ओएस को इस बात के लिए अधिक महत्व दिया जाता है कि यह किसी निश्चित समयावधि में जितना काम कर सकता है, उसकी तुलना में यह कितनी जल्दी या कितनी अनुमानित रूप से प्रतिक्रिया दे सकता है।<ref>{{cite web |title=आरटीओएस अवधारणाओं|url=http://www.chibios.org/dokuwiki/doku.php?id=chibios:articles:rtos_concepts |url-status=dead}}</ref>
 
आरटीओएस में [[शेड्यूलिंग (कंप्यूटिंग)]] के लिए एक उन्नत कलन विधि है। अनुसूचक नमनीयता प्रक्रिया प्राथमिकताओं के एक व्यापक, कंप्यूटर-सिस्टम ऑर्केस्ट्रेशन को सक्षम करता है, लेकिन रीयल-टाइम ओएस अधिक बार अनुप्रयोगों एक संकीर्ण समूह के लिए समर्पित होता है। रीयल-टाइम ओएस में प्रमुख कारक निम्न [[व्यवधान विलंबता]] और निम्न [[थ्रेड स्विचिंग विलंबता]] हैं; एक रीयल-टाइम ओएस को इस बात के लिए अधिक महत्व दिया जाता है कि यह किसी निश्चित समयावधि में जितना काम कर सकता है, उसकी तुलना में यह कितनी जल्दी प्रतिक्रिया दे सकता है।<ref>{{cite web |title=आरटीओएस अवधारणाओं|url=http://www.chibios.org/dokuwiki/doku.php?id=chibios:articles:rtos_concepts |url-status=dead}}</ref>
 
विस्तृत सूची के लिए [[रीयल-टाइम ऑपरेटिंग सिस्टम की तुलना]] देखें। साथ ही, सभी प्रकार के ऑपरेटिंग सिस्टम के लिए [[ऑपरेटिंग सिस्टम की सूची]] देखें।
विस्तृत सूची के लिए [[रीयल-टाइम ऑपरेटिंग सिस्टम की तुलना]] देखें। साथ ही, सभी प्रकार के ऑपरेटिंग सिस्टम के लिए [[ऑपरेटिंग सिस्टम की सूची]] देखें।


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


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


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


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


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


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


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


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


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


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


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


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


== इंटरटास्क संचार और संसाधन साझाकरण ==
== इंटरटास्क संचार और संसाधन सहभागिता ==
[[यूनिक्स]] जैसा मल्टीटास्किंग ऑपरेटिंग सिस्टम रीयल-टाइम कार्यों में खराब है। शेड्यूलर कंप्यूटर पर सबसे कम मांग वाली नौकरियों को सर्वोच्च प्राथमिकता देता है, इसलिए यह सुनिश्चित करने का कोई तरीका नहीं है कि एक समय-महत्वपूर्ण नौकरी के पास पर्याप्त संसाधनों तक पहुंच होगी। मल्टीटास्किंग सिस्टम को कई कार्यों के बीच डेटा और हार्डवेयर संसाधनों को साझा करने का प्रबंधन करना चाहिए। एक ही विशिष्ट डेटा या हार्डवेयर संसाधन को एक साथ एक्सेस करना आमतौर पर दो कार्यों के लिए असुरक्षित होता है।<ref name="phraner1984fall">{{Cite magazine |last=Phraner |first=Ralph A. |date=Fall 1984 |url=https://archive.org/stream/byte-magazine-1984-09/1984_09_BYTE_09-09_Guide_to_the_IBM_PCs#page/n61/mode/2up |title=आईबीएम पीसी पर यूनिक्स का भविष्य|magazine=[[Byte (magazine)|Byte]] |pages=59–64}}</ref> इस समस्या को हल करने के तीन सामान्य तरीके हैं:
[[यूनिक्स]] जैसा मल्टीटास्किंग ऑपरेटिंग सिस्टम रीयल-टाइम कार्यों में अनुपयोगी है। अनुसूचक कंप्यूटर पर निम्नतम अनुरोध वाली नौकरियों को सर्वोच्च प्राथमिकता देता है, इसलिए यह सुनिश्चित करने का कोई सिस्टम नहीं है कि एक समय-महत्वपूर्ण नौकरी के पास पर्याप्त संसाधनों तक पहुंच होगी। मल्टीटास्किंग सिस्टम को कई कार्यों के बीच डेटा और हार्डवेयर संसाधनों को सहभागिता करने का प्रबंधन करना चाहिए। एक ही विशिष्ट डेटा या हार्डवेयर संसाधन को एक साथ अभिगम करना सामान्यतः दो कार्यों के लिए असुरक्षित होता है।<ref name="phraner1984fall">{{Cite magazine |last=Phraner |first=Ralph A. |date=Fall 1984 |url=https://archive.org/stream/byte-magazine-1984-09/1984_09_BYTE_09-09_Guide_to_the_IBM_PCs#page/n61/mode/2up |title=आईबीएम पीसी पर यूनिक्स का भविष्य|magazine=[[Byte (magazine)|Byte]] |pages=59–64}}</ref> इस समस्या को हल करने के तीन सामान्य प्रणालियाँ हैं:


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


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


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


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


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


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


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


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


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


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


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


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


डायनेमिक मेमोरी आवंटन से बचने का एक अन्य कारण मेमोरी विखंडन है। स्मृति के छोटे हिस्से के बार-बार आवंटन और विमोचन के साथ, ऐसी स्थिति उत्पन्न हो सकती है जहां उपलब्ध स्मृति को कई खंडों में विभाजित किया जाता है और आरटीओएस स्मृति के एक बड़े निरंतर खंड को आवंटित नहीं कर सकता है, हालांकि पर्याप्त मुक्त स्मृति है। दूसरे, आवंटन की गति महत्वपूर्ण है। एक मानक मेमोरी आवंटन योजना उपयुक्त मुक्त मेमोरी ब्लॉक खोजने के लिए अनिश्चित लंबाई की एक लिंक की गई सूची को स्कैन करती है,<ref>{{cite web| url = http://courses.engr.illinois.edu/cs241/sp2012/lectures/08-malloc.pdf| title = CS 241, University of Illinois}}</ref> जो आरटीओएस में अस्वीकार्य है क्योंकि स्मृति आवंटन एक निश्चित समय के भीतर होता है।
डायनेमिक मेमोरी आवंटन से बचने का एक अन्य कारण मेमोरी विखंडन है। मेमोरी के छोटे हिस्से के निरंतर आवंटन और विमोचन के साथ, ऐसी स्थिति उत्पन्न हो सकती है जहां उपलब्ध मेमोरी को कई खंडों में विभाजित किया जाता है और आरटीओएस मेमोरी के एक बड़े निरंतर खंड को आवंटित नहीं कर सकता है, यधपि पर्याप्त मुक्त मेमोरी है। दूसरे,आवंटन की गति महत्वपूर्ण है। एक मानक मेमोरी आवंटन योजना उपयुक्त मुक्त मेमोरी ब्लॉक खोजने के लिए अनिश्चित लंबाई की एक लिंक की गई सूची को स्कैन करती है,<ref>{{cite web| url = http://courses.engr.illinois.edu/cs241/sp2012/lectures/08-malloc.pdf| title = CS 241, University of Illinois}}</ref> जो आरटीओएस में अस्वीकार्य है क्योंकि मेमोरी आवंटन एक निश्चित समय के अंतर्गत होता है।


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


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


== यह भी देखें ==
== यह भी देखें ==
{{Wikibooks|Embedded Systems|Real-Time Operating Systems}}
{{Div col|colwidth=25em}}
{{Div col|colwidth=25em}}
* [[अनुकूली विभाजन अनुसूचक]]
* अनुकूली विभाजन अनुसूचक
* रीयल-टाइम ऑपरेटिंग सिस्टम की तुलना
* रीयल-टाइम ऑपरेटिंग सिस्टम की तुलना
* [[डेटा जनरल आरडीओएस]]
* डेटा जनरल आरडीओएस
* [[ डीओ-178B ]]ी
* डीओ-178B
* जल्द से जल्द समय सीमा पहले शेड्यूलिंग
* जल्द से जल्द समय सीमा पहले शेड्यूलिंग
* [[फर्मवेयर]]
* फर्मवेयर
* [[फ्रीआरटीओएस]]
* फ्रीआरटीओएस
* [[इंटरप्टिबल ऑपरेटिंग सिस्टम]]
* इंटरप्टिबल ऑपरेटिंग सिस्टम
* [[कम से कम सुस्त समय निर्धारण]]
* कम से कम सुस्त समय निर्धारण
* [[ओसेक]]
* ओसेक
* [[पॉज़िक्स]]
* पॉज़िक्स
* दर-मोनोटोनिक शेड्यूलिंग
* दर-मोनोटोनिक शेड्यूलिंग
* [[रोबोट ऑपरेटिंग सिस्टम]]
* [[रोबोट ऑपरेटिंग सिस्टम]]
Line 113: Line 114:
{{Reflist}}
{{Reflist}}


{{Real-time operating systems}}
[[Category:CS1 maint]]
{{Embedded systems}}
[[Category:Citation Style 1 templates|M]]
{{Operating system}}
[[Category:Collapse templates|Real-Time Operating System]]
 
[[Category:Created On 14/03/2023|Real-Time Operating System]]
{{DEFAULTSORT:Real-Time Operating System}}[[Category: रीयल-टाइम ऑपरेटिंग सिस्टम | रीयल-टाइम ऑपरेटिंग सिस्टम ]] [[Category: ऑपरेटिंग सिस्टम]] [[Category: रीयल-टाइम कंप्यूटिंग]]  
[[Category:Lua-based templates]]
 
[[Category:Machine Translated Page|Real-Time Operating System]]
 
[[Category:Multi-column templates]]
 
[[Category:Navigational boxes| ]]
[[Category: Machine Translated Page]]
[[Category:Navigational boxes without horizontal lists|Real-Time Operating System]]
[[Category:Created On 14/03/2023]]
[[Category:Pages using div col with small parameter]]
[[Category:Pages with script errors|Real-Time Operating System]]
[[Category:Short description with empty Wikidata description|Real-Time Operating System]]
[[Category:Sidebars with styles needing conversion|Real-Time Operating System]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates based on the Citation/CS1 Lua module]]
[[Category:Templates generating COinS|Cite magazine]]
[[Category:Templates generating microformats]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that are not mobile friendly]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:Templates using under-protected Lua modules]]
[[Category:Wikipedia fully protected templates|Div col]]
[[Category:Wikipedia metatemplates]]

Latest revision as of 12:48, 3 November 2023

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

विशेषताएं

आरटीओएस की प्रमुख विशेषता इसकी निरंतरता का स्तर है जो किसी एप्लिकेशन के कार्य (कंप्यूटिंग) को स्वीकार करने और पूरा करने में लगने वाले समय से संबंधित है; परिवर्तनशीलता 'अस्थिर' होना है।[1] एक 'दृढ़' रीयल-टाइम ऑपरेटिंग सिस्टम (दृढ़ आरटीओएस) में 'सरल' रीयल-टाइम ऑपरेटिंग सिस्टम (सरल आरटीओएस) की तुलना में कम अस्थिर होता है। विलंब से दिया गया उत्तर दृढ़ आरटीओएस में गलत उत्तर होता है जबकि सरल आरटीओएस में विलंब से दिया गया उत्तर स्वीकार्य होता है। मुख्य डिजाइन लक्ष्य उच्च प्रवाह क्षमता नहीं है, बल्कि रीयल-टाइम कंप्यूटिंग प्रदर्शन श्रेणी के लिए रीयल-टाइम कंप्यूटिंग मानदंड की गारंटी है। एक आरटीओएस जो प्रायः या व्यापक रूप पर एक समय सीमा को पूरा कर सकता है, एक सरल रीयल-टाइम ओएस है, लेकिन अगर यह निर्धारित समय सीमा को पूरा कर सकता है तो यह एक कठिन रीयल-टाइम ओएस है।[2]

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

विस्तृत सूची के लिए रीयल-टाइम ऑपरेटिंग सिस्टम की तुलना देखें। साथ ही, सभी प्रकार के ऑपरेटिंग सिस्टम के लिए ऑपरेटिंग सिस्टम की सूची देखें।

डिजाइन दर्शन

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

सबसे सामान्य डिजाइन हैं:

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

टाइम-शेयरिंग - नियमित घड़ी के अवरोध और घटना पर कार्यों को स्विच करता है; राउंड-रॉबिन शेड्यूलिंग कहा जाता है।

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

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

निर्धारण

विशिष्ट डिजाइनों में, कार्य में तीन अवस्थाएँ होती हैं:

  1. चलायमान (सीपीयू पर निष्पादन);
  2. तत्पर (निष्पादित होने के लिए तत्पर);
  3. अवरुद्ध (एक घटना की प्रतीक्षा में, उदाहरण के लिए आई/ओ)।

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

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

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

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

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

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

कलन विधि

कुछ सामान्य रूप से उपयोग किए जाने वाले आरटीओएस शेड्यूलिंग कलन विधि हैं:

  • सहकारी निर्धारण
  • पूर्वक्रय (कम्प्यूटिंग)
    • दर-मोनोटोनिक शेड्यूलिंग
    • राउंड-रॉबिन शेड्यूलिंग
    • निर्धारित प्राथमिकता प्री-एम्प्टिव शेड्यूलिंग, प्रीमेप्टिव टाइम स्लाइसिंग का कार्यान्वयन
    • निश्चित-प्राथमिकता निर्धारण आस्थगित पूर्वक्रय अधिकार के साथ
    • निर्धारित-प्राथमिकता अन्य-रिक्तिपूर्व शेड्यूलिंग
    • क्रिटिकल सेक्शन रिक्तिपूर्व शेड्यूलिंग
    • स्टेटिक टाइम शेड्यूलिंग
  • अतिशीघ्र समय सीमा पहले शेड्यूलिंग दृष्टिकोण
  • थ्रेड (कंप्यूटर साइंस) के साथ स्टोकेस्टिक निर्देशित ग्राफ

इंटरटास्क संचार और संसाधन सहभागिता

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

अस्थायी रूप से आच्छदन/व्यवधान अक्षम करना

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

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

म्युटेक्स

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

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

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

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

संदेश प्रेषण

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

व्यवधान संचालक और अनुसूचक

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

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

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

मेमोरी आवंटन

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

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

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

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

सरल नियत-आकार-ब्लॉक एल्गोरिथम अपने निम्न उपरि के कारण सरल अंतः स्थापित सिस्टम के लिए काफी अच्छी तरह से काम करता है ।

यह भी देखें

संदर्भ

  1. "Response Time and Jitter".
  2. Tanenbaum, Andrew (2008). आधुनिक ऑपरेटिंग सिस्टम. Upper Saddle River, NJ: Pearson/Prentice Hall. p. 160. ISBN 978-0-13-600663-3.
  3. "आरटीओएस अवधारणाओं".{{cite web}}: CS1 maint: url-status (link)
  4. Phraner, Ralph A. (Fall 1984). "आईबीएम पीसी पर यूनिक्स का भविष्य". Byte. pp. 59–64.
  5. "CS 241, University of Illinois" (PDF).