रीयल-टाइम ऑपरेटिंग सिस्टम: Difference between revisions
No edit summary |
No edit summary |
||
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}} | ||
रीयल-टाइम [[ऑपरेटिंग सिस्टम|ऑपरेटिंग प्रणाली]] (आरटीओएस) [[रीयल-टाइम कंप्यूटिंग]] अनुप्रयोगों के लिए एक ऑपरेटिंग प्रणाली (ओएस) है जो डेटा और घटनाओं को संसाधित करता है जिसमें सूक्षम रूप से परिभाषित समय की कमी होती है। एक आरटीओएस टाइम-शेयरिंग ऑपरेटिंग प्रणाली से अलग है, जैसे कि यूनिक्स, जो एक मल्टीटास्किंग या मल्टीप्रोग्रामिंग परिस्थिति में एक अनुसूचक, डेटा बफ़र्स, या निश्चित कार्य प्राथमिकता के साथ प्रणाली संसाधनों के | रीयल-टाइम [[ऑपरेटिंग सिस्टम|ऑपरेटिंग प्रणाली]] (आरटीओएस) [[रीयल-टाइम कंप्यूटिंग]] अनुप्रयोगों के लिए एक ऑपरेटिंग प्रणाली (ओएस) है जो डेटा और घटनाओं को संसाधित करता है जिसमें सूक्षम रूप से परिभाषित समय की कमी होती है। एक आरटीओएस टाइम-शेयरिंग ऑपरेटिंग प्रणाली से अलग है, जैसे कि यूनिक्स, जो एक मल्टीटास्किंग या मल्टीप्रोग्रामिंग परिस्थिति में एक अनुसूचक, डेटा बफ़र्स, या निश्चित कार्य प्राथमिकता के साथ प्रणाली संसाधनों के सहभागिताकरण का प्रबंधन करता है। प्रसंस्करण समय की आवश्यकताओं को न्यूनतम रूप में रखने के अतिरिक्त पूरी तरह से समझने और बाध्य करने की आवश्यकता है। सभी प्रसंस्करण परिभाषित बाध्यताओं के अंतर्गत होने चाहिए। रीयल-टाइम ऑपरेटिंग प्रणाली [[घटना-संचालित प्रोग्रामिंग]] हैं। घटना-संचालित और प्रीमेशन (कंप्यूटिंग), जिसका अर्थ है कि ओएस प्रतिस्पर्धी कार्यों की प्रासंगिक प्राथमिकता का पर्यवेक्षण कर सकता है और कार्य प्राथमिकता में परिवर्तन कर सकता है। घटना-संचालित प्रणाली अपनी प्राथमिकताओं के आधार पर कार्यों के बीच परिवर्तन करते हैं, जबकि टाइम-शेयरिंग प्रणाली घड़ी के अवरोध के आधार पर कार्य को परिवर्तन करते हैं। | ||
== विशेषताएं == | == विशेषताएं == | ||
Line 16: | Line 16: | ||
टाइम-शेयरिंग - नियमित घड़ी के अवरोध और घटना पर कार्यों को स्विच करता है; [[राउंड-रॉबिन शेड्यूलिंग]] कहा जाता है। | टाइम-शेयरिंग - नियमित घड़ी के अवरोध और घटना पर कार्यों को स्विच करता है; [[राउंड-रॉबिन शेड्यूलिंग]] कहा जाता है। | ||
समय | समय सहभागिता करने वाले डिज़ाइन कार्यों को कठोरता से आवश्यकता से अधिक बार स्विच करते हैं, लेकिन [[कंप्यूटर मल्टीटास्किंग]] सहज बनाते हैं, जिससे यह भ्रम होता है कि एक प्रक्रिया या उपयोगकर्ता के पास मशीन का एकमात्र उपयोग है। | ||
आरंभिक [[सीपीयू डिजाइन|सीपीयू डिजाइनों]] को कार्यों को बदलने के लिए कई चक्रों की आवश्यकता होती थी, जिस अवधि सीपीयू कुछ और उपयोगी नहीं कर सकता था। क्योंकि स्विचिंग में इतना समय लगता था, आरंभिक ओएस ने अनावश्यक कार्य स्विचिंग से बचकर CPU समय व्यर्थ करने को कम करने का प्रयास किया। | आरंभिक [[सीपीयू डिजाइन|सीपीयू डिजाइनों]] को कार्यों को बदलने के लिए कई चक्रों की आवश्यकता होती थी, जिस अवधि सीपीयू कुछ और उपयोगी नहीं कर सकता था। क्योंकि स्विचिंग में इतना समय लगता था, आरंभिक ओएस ने अनावश्यक कार्य स्विचिंग से बचकर CPU समय व्यर्थ करने को कम करने का प्रयास किया। | ||
Line 26: | Line 26: | ||
# अवरुद्ध (एक घटना की प्रतीक्षा में, उदाहरण के लिए आई/ओ)। | # अवरुद्ध (एक घटना की प्रतीक्षा में, उदाहरण के लिए आई/ओ)। | ||
अधिकांश कार्य अधिकांश समय अवरुद्ध या तत्पर रहते हैं क्योंकि | अधिकांश कार्य अधिकांश समय अवरुद्ध या तत्पर रहते हैं क्योंकि सामान्यतः प्रति [[सेंट्रल प्रोसेसिंग यूनिट]] में एक समय में केवल एक ही कार्य चल सकता है। प्रणाली द्वारा किए जाने वाले कार्यों की संख्या और प्रणाली द्वारा उपयोग किए जाने वाले अनुसूचक के प्रकार के आधार पर, तत्पर क्रम में वस्तुओं की संख्या बहुत भिन्न हो सकती है। सरल अन्य-रिक्तिपूर्व लेकिन अभी भी मल्टीटास्किंग प्रणाली पर, एक कार्य को सीपीयू पर अपना समय अन्य कार्यों के लिए देना पड़ता है, जिससे तत्पर क्रम में निष्पादित होने के लिए तत्पर स्थिति में समग्र कार्यों की अधिक संख्या हो सकती है ([[संसाधन भुखमरी|संसाधन अप्राप्ति]]) . | ||
सामान्यतः,अनुसूचक में तत्पर सूची की डेटा संरचना को अनुसूचक के महत्वपूर्ण खंड में व्यतीत समय की सबसे निकृष्टतम स्थिति को कम करने के लिए डिज़ाइन किया गया है, जिस अवधि पूर्वक्रय बाधित होता है, और, कुछ स्थितियों में, सभी व्यवधान अक्षम हो जाते हैं, लेकिन विकल्प डेटा संरचना की संख्या उन कार्यों की अधिकतम संख्या पर भी निर्भर करती है जो तत्पर सूची में हो सकते हैं। | |||
यदि तत्पर सूची में कभी भी कुछ कार्यों से अधिक नहीं होते हैं, तो तत्पर कार्यों की दोगुनी लिंक की गई सूची की संभावना इष्टतम होती है। यदि तत्पर सूची में | यदि तत्पर सूची में कभी भी कुछ कार्यों से अधिक नहीं होते हैं, तो तत्पर कार्यों की दोगुनी लिंक की गई सूची की संभावना इष्टतम होती है। यदि तत्पर सूची में सामान्यतः केवल कुछ कार्य होते हैं लेकिन कभी-कभी अधिक भी होते हैं, तो सूची को प्राथमिकता के आधार पर क्रमबद्ध किया जाना चाहिए। इस तरह, चलाने के लिए सर्वोच्च प्राथमिकता वाले कार्य को खोजने के लिए पूरी सूची के माध्यम से पुनरावृति की आवश्यकता नहीं होती है। किसी कार्य को सम्मिलित करने के लिए सूची के अंत तक पहुंचने तक या सम्मिलित किए जा रहे कार्य की तुलना में कम प्राथमिकता वाले कार्य तक तत्पर सूची को चलने की आवश्यकता होती है। | ||
इस खोज | इस खोज की अवधि पूर्वक्रय को बाधित न करने के लिए सावधानी रखना चाहिए। लंबे समय तक महत्वपूर्ण वर्गों को छोटे टुकड़ों में बांटा जाना चाहिए। यदि कोई व्यवधान उत्पन्न होता है जो कम प्राथमिकता वाले कार्य के सम्मिलन के अवधि उच्च प्राथमिकता वाले कार्य को तत्पर करता है, तो उस उच्च प्राथमिकता वाले कार्य को डाला जा सकता है और कम प्राथमिकता वाले कार्य को सम्मिलित करने से ठीक पहले चलाया जा सकता है। | ||
महत्वपूर्ण प्रतिक्रिया समय, जिसे कभी-कभी | महत्वपूर्ण प्रतिक्रिया समय, जिसे कभी-कभी प्रतिधावन समय कहा जाता है, वह समय होता है जब किसी नए तत्पर कार्य को पंक्तिबद्ध करने और सर्वोच्च प्राथमिकता वाले कार्य की स्थिति को चलाने के लिए पुनर्स्थापित किया जाता है। एक अच्छी तरह से डिज़ाइन किए गए आरटीओएस में, एक नया कार्य तत्पर करने के लिए प्रति तत्पर क्रम प्रविष्टि में 3 से 20 निर्देश लगेंगे, और उच्चतम प्राथमिकता वाले तत्पर कार्य की वापसी में 5 से 30 निर्देश लगेंगे। | ||
अधिक उन्नत प्रणालियों में, रीयल-टाइम के कार्य कंप्यूटिंग संसाधनों को कई अन्य-रीयल-टाइम के कार्यों के साथ | अधिक उन्नत प्रणालियों में, रीयल-टाइम के कार्य कंप्यूटिंग संसाधनों को कई अन्य-रीयल-टाइम के कार्यों के साथ सहभागिता करते हैं, और तत्पर सूची मनमाने ढंग से लंबी हो सकती है। ऐसी प्रणालियों में, लिंक की गई सूची के रूप में कार्यान्वित की गई अनुसूचक तत्पर सूची अपर्याप्त होगी। | ||
=== कलन विधि === | === कलन विधि === | ||
Line 44: | Line 44: | ||
** [[दर-मोनोटोनिक शेड्यूलिंग]] | ** [[दर-मोनोटोनिक शेड्यूलिंग]] | ||
** राउंड-रॉबिन शेड्यूलिंग | ** राउंड-रॉबिन शेड्यूलिंग | ||
** [[फिक्स्ड प्राथमिकता प्री-एम्प्टिव शेड्यूलिंग]], [[ समय का टुकड़ा ]] का कार्यान्वयन | ** [[फिक्स्ड प्राथमिकता प्री-एम्प्टिव शेड्यूलिंग|निर्धारित प्राथमिकता प्री-एम्प्टिव शेड्यूलिंग]], [[ समय का टुकड़ा | प्रीमेप्टिव टाइम स्लाइसिंग]] का कार्यान्वयन | ||
** निश्चित-प्राथमिकता निर्धारण आस्थगित | ** निश्चित-प्राथमिकता निर्धारण आस्थगित पूर्वक्रय अधिकार के साथ | ||
** | ** निर्धारित-प्राथमिकता अन्य-रिक्तिपूर्व शेड्यूलिंग | ||
** क्रिटिकल सेक्शन रिक्तिपूर्व शेड्यूलिंग | ** क्रिटिकल सेक्शन रिक्तिपूर्व शेड्यूलिंग | ||
** स्टेटिक टाइम शेड्यूलिंग | ** स्टेटिक टाइम शेड्यूलिंग | ||
* [[जल्द से जल्द समय सीमा पहले शेड्यूलिंग]] दृष्टिकोण | * अतिशीघ्र [[जल्द से जल्द समय सीमा पहले शेड्यूलिंग|समय सीमा पहले शेड्यूलिंग]] दृष्टिकोण | ||
* थ्रेड (कंप्यूटर साइंस) के साथ [[ स्टोकेस्टिक ]] [[ निर्देशित ग्राफ ]] | मल्टी-थ्रेडेड [[ट्री ट्रैवर्सल]] | * थ्रेड (कंप्यूटर साइंस) के साथ [[ स्टोकेस्टिक ]][[ निर्देशित ग्राफ |निर्देशित ग्राफ]] | मल्टी-थ्रेडेड [[ट्री ट्रैवर्सल]] | ||
== इंटरटास्क संचार और संसाधन | == इंटरटास्क संचार और संसाधन सहभागिताकरण == | ||
[[यूनिक्स]] जैसा मल्टीटास्किंग ऑपरेटिंग प्रणाली रीयल-टाइम कार्यों में खराब है। शेड्यूलर कंप्यूटर पर सबसे कम मांग वाली नौकरियों को सर्वोच्च प्राथमिकता देता है, इसलिए यह सुनिश्चित करने का कोई तरीका नहीं है कि एक समय-महत्वपूर्ण नौकरी के पास पर्याप्त संसाधनों तक पहुंच होगी। मल्टीटास्किंग प्रणाली को कई कार्यों के बीच डेटा और हार्डवेयर संसाधनों को | [[यूनिक्स]] जैसा मल्टीटास्किंग ऑपरेटिंग प्रणाली रीयल-टाइम कार्यों में खराब है। शेड्यूलर कंप्यूटर पर सबसे कम मांग वाली नौकरियों को सर्वोच्च प्राथमिकता देता है, इसलिए यह सुनिश्चित करने का कोई तरीका नहीं है कि एक समय-महत्वपूर्ण नौकरी के पास पर्याप्त संसाधनों तक पहुंच होगी। मल्टीटास्किंग प्रणाली को कई कार्यों के बीच डेटा और हार्डवेयर संसाधनों को सहभागिता करने का प्रबंधन करना चाहिए। एक ही विशिष्ट डेटा या हार्डवेयर संसाधन को एक साथ एक्सेस करना सामान्यतः पर दो कार्यों के लिए असुरक्षित होता है।<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 समय नहीं दिया जाता है। एक विशिष्ट समाधान यह है कि वह कार्य जिसके पास एक म्यूटेक्स 'विरासत' है, उच्चतम प्रतीक्षा कार्य की प्राथमिकता है। लेकिन प्रतीक्षा के कई स्तर होने पर यह सरल दृष्टिकोण और अधिक जटिल हो जाता है: कार्य 'ए' कार्य 'बी' द्वारा म्यूटेक्स लॉक की प्रतीक्षा करता है, जो कार्य 'सी' द्वारा म्यूटेक्स लॉक की प्रतीक्षा करता है। वंशानुक्रम के कई स्तरों को संभालने के कारण अन्य कोड उच्च प्राथमिकता वाले संदर्भ में चलते हैं और इस प्रकार मध्यम-प्राथमिकता वाले थ्रेड्स की | प्राथमिकता व्युत्क्रम में एक उच्च प्राथमिकता वाला कार्य प्रतीक्षा करता है क्योंकि कम प्राथमिकता वाले कार्य में म्यूटेक्स होता है, लेकिन निम्न प्राथमिकता वाले कार्य को अपना कार्य पूरा करने के लिए CPU समय नहीं दिया जाता है। एक विशिष्ट समाधान यह है कि वह कार्य जिसके पास एक म्यूटेक्स 'विरासत' है, उच्चतम प्रतीक्षा कार्य की प्राथमिकता है। लेकिन प्रतीक्षा के कई स्तर होने पर यह सरल दृष्टिकोण और अधिक जटिल हो जाता है: कार्य 'ए' कार्य 'बी' द्वारा म्यूटेक्स लॉक की प्रतीक्षा करता है, जो कार्य 'सी' द्वारा म्यूटेक्स लॉक की प्रतीक्षा करता है। वंशानुक्रम के कई स्तरों को संभालने के कारण अन्य कोड उच्च प्राथमिकता वाले संदर्भ में चलते हैं और इस प्रकार मध्यम-प्राथमिकता वाले थ्रेड्स की अप्राप्ति का कारण बन सकते हैं। | ||
गतिरोध में, दो या दो से अधिक कार्य समय समाप्ति के बिना म्यूटेक्स को लॉक कर देते हैं और फिर चक्रीय निर्भरता बनाते हुए दूसरे कार्य के म्यूटेक्स के लिए हमेशा प्रतीक्षा करते हैं। सबसे सरल गतिरोध परिदृश्य तब होता है जब दो कार्य वैकल्पिक रूप से दो म्यूटेक्स को लॉक करते हैं, लेकिन विपरीत क्रम में। गतिरोध को सावधानीपूर्वक डिजाइन द्वारा रोका जाता है। | गतिरोध में, दो या दो से अधिक कार्य समय समाप्ति के बिना म्यूटेक्स को लॉक कर देते हैं और फिर चक्रीय निर्भरता बनाते हुए दूसरे कार्य के म्यूटेक्स के लिए हमेशा प्रतीक्षा करते हैं। सबसे सरल गतिरोध परिदृश्य तब होता है जब दो कार्य वैकल्पिक रूप से दो म्यूटेक्स को लॉक करते हैं, लेकिन विपरीत क्रम में। गतिरोध को सावधानीपूर्वक डिजाइन द्वारा रोका जाता है। | ||
=== संदेश गुजर रहा है === | === संदेश गुजर रहा है === | ||
संसाधनों को | संसाधनों को सहभागिता करने का दूसरा तरीका कार्यों के लिए एक संगठित [[संदेश देना]] स्कीम में संदेश भेजना है। इस प्रतिमान में, संसाधन को सीधे केवल एक कार्य द्वारा प्रबंधित किया जाता है। जब कोई अन्य कार्य संसाधन से पूछताछ या हेरफेर करना चाहता है, तो यह प्रबंध कार्य को एक संदेश भेजता है। हालांकि उनका रीयल-टाइम व्यवहार [[सेमाफोर (प्रोग्रामिंग)]] प्रणाली की तुलना में कम कुरकुरा है, सरल संदेश-आधारित प्रणाली अधिकांश प्रोटोकॉल डेडलॉक खतरों से बचते हैं, और सामान्यतः सेमाफोर प्रणाली की तुलना में बेहतर व्यवहार करते हैं। हालाँकि, सेमाफोर जैसी समस्याएं संभव हैं। प्राथमिकता उलटा तब हो सकता है जब कोई कार्य निम्न-प्राथमिकता वाले संदेश पर काम कर रहा हो और अपनी आने वाली संदेश क्रम में उच्च-प्राथमिकता वाले संदेश (या उच्च प्राथमिकता वाले कार्य से अप्रत्यक्ष रूप से उत्पन्न होने वाले संदेश) की उपेक्षा करता हो। प्रोटोकॉल गतिरोध तब हो सकता है जब दो या दो से अधिक कार्य प्रतिक्रिया संदेश भेजने के लिए एक दूसरे की प्रतीक्षा करते हैं। | ||
== इंटरप्ट हैंडलर और शेड्यूलर == | == इंटरप्ट हैंडलर और शेड्यूलर == | ||
चूंकि एक इंटरप्ट हैंडलर उच्चतम प्राथमिकता वाले कार्य को चलने से रोकता है, और चूंकि रीयल-टाइम ऑपरेटिंग प्रणाली को थ्रेड लेटेंसी को न्यूनतम रखने के लिए डिज़ाइन किया गया है, इसलिए इंटरप्ट हैंडलर को | चूंकि एक इंटरप्ट हैंडलर उच्चतम प्राथमिकता वाले कार्य को चलने से रोकता है, और चूंकि रीयल-टाइम ऑपरेटिंग प्रणाली को थ्रेड लेटेंसी को न्यूनतम रखने के लिए डिज़ाइन किया गया है, इसलिए इंटरप्ट हैंडलर को सामान्यतः जितना संभव हो उतना छोटा रखा जाता है। यदि संभव हो तो इंटरप्ट हैंडलर हार्डवेयर के साथ सभी इंटरैक्शन को रोकता है; आम तौर पर जो कुछ भी आवश्यक है वह बाधा को स्वीकार या अक्षम करना है (ताकि बाधा हैंडलर लौटने पर यह फिर से न हो) और उस कार्य को सूचित करें जिसे काम करने की आवश्यकता है। यह एक ड्राइवर कार्य को एक सेमाफोर जारी करके, एक ध्वज समूह करके या एक संदेश भेजकर किया जा सकता है। एक शेड्यूलर अक्सर किसी कार्य को इंटरप्ट हैंडलर संदर्भ से अनब्लॉक करने की क्षमता प्रदान करता है। | ||
एक ओएस उन वस्तुओं के कैटलॉग को बनाए रखता है जिन्हें वह प्रबंधित करता है जैसे कि थ्रेड्स, म्यूटेक्स, मेमोरी, और इसी तरह। इस कैटलॉग के अपडेट को कठोरता से नियंत्रित किया जाना चाहिए। इस कारण से, यह समस्याग्रस्त हो सकता है जब एक इंटरप्ट हैंडलर ओएस फ़ंक्शन को कॉल करता है जबकि एप्लिकेशन ऐसा करने के कार्य में भी होता है। इंटरप्ट हैंडलर से बुलाया गया ओएस फ़ंक्शन एप्लिकेशन के अपडेट के कारण ऑब्जेक्ट डेटाबेस को असंगत स्थिति में पा सकता है। इस समस्या से निपटने के लिए दो प्रमुख दृष्टिकोण हैं: एकीकृत वास्तुकला और खंडित वास्तुकला। एकीकृत आर्किटेक्चर को | एक ओएस उन वस्तुओं के कैटलॉग को बनाए रखता है जिन्हें वह प्रबंधित करता है जैसे कि थ्रेड्स, म्यूटेक्स, मेमोरी, और इसी तरह। इस कैटलॉग के अपडेट को कठोरता से नियंत्रित किया जाना चाहिए। इस कारण से, यह समस्याग्रस्त हो सकता है जब एक इंटरप्ट हैंडलर ओएस फ़ंक्शन को कॉल करता है जबकि एप्लिकेशन ऐसा करने के कार्य में भी होता है। इंटरप्ट हैंडलर से बुलाया गया ओएस फ़ंक्शन एप्लिकेशन के अपडेट के कारण ऑब्जेक्ट डेटाबेस को असंगत स्थिति में पा सकता है। इस समस्या से निपटने के लिए दो प्रमुख दृष्टिकोण हैं: एकीकृत वास्तुकला और खंडित वास्तुकला। एकीकृत आर्किटेक्चर को कार्यान्वित करने वाले आरटीओएस आंतरिक कैटलॉग अपडेट होने पर इंटरप्ट्स को अक्षम करके समस्या का समाधान करते हैं। इसका नकारात्मक पक्ष यह है कि रुकावट विलंबता बढ़ जाती है, संभावित रूप से बाधित हो जाती है। खंडित आर्किटेक्चर प्रत्यक्ष ओएस कॉल नहीं करता है लेकिन ओएस से संबंधित कार्य को एक अलग हैंडलर को सौंपता है। यह हैंडलर किसी भी थ्रेड की तुलना में उच्च प्राथमिकता पर चलता है, लेकिन इंटरप्ट हैंडलर से कम है। इस आर्किटेक्चर का लाभ यह है कि यह विलंबता को बाधित करने के लिए बहुत कम चक्र जोड़ता है। नतीजतन, खंडित वास्तुकला को कार्यान्वित करने वाले ओएस अधिक अनुमानित हैं और एकीकृत वास्तुकला की तुलना में उच्च रुकावट दर से निपट सकते हैं।{{citation needed|date=November 2017}} | ||
इसी तरह, x86 संगत हार्डवेयर पर [[सिस्टम प्रबंधन मोड|प्रणाली प्रबंधन मोड]] को ऑपरेटिंग प्रणाली पर नियंत्रण वापस करने से पहले बहुत समय लग सकता है। | इसी तरह, x86 संगत हार्डवेयर पर [[सिस्टम प्रबंधन मोड|प्रणाली प्रबंधन मोड]] को ऑपरेटिंग प्रणाली पर नियंत्रण वापस करने से पहले बहुत समय लग सकता है। | ||
Line 88: | Line 88: | ||
क्योंकि यांत्रिक डिस्क में बहुत लंबा और अधिक अप्रत्याशित प्रतिक्रिया समय होता है, डिस्क फ़ाइलों की अदला-बदली का उपयोग उन्हीं कारणों से नहीं किया जाता है जैसा कि ऊपर चर्चा की गई रैम आवंटन। | क्योंकि यांत्रिक डिस्क में बहुत लंबा और अधिक अप्रत्याशित प्रतिक्रिया समय होता है, डिस्क फ़ाइलों की अदला-बदली का उपयोग उन्हीं कारणों से नहीं किया जाता है जैसा कि ऊपर चर्चा की गई रैम आवंटन। | ||
साधारण मेमोरी_मैनेजमेंट#FIXED-SIZE| | साधारण मेमोरी_मैनेजमेंट#FIXED-SIZE|निर्धारित-साइज-ब्लॉक एल्गोरिथम अपने कम ओवरहेड के कारण सरल [[ अंतः स्थापित प्रणाली ]] के लिए काफी अच्छी तरह से काम करता है। | ||
== यह भी देखें == | == यह भी देखें == |
Revision as of 00:26, 22 March 2023
रीयल-टाइम ऑपरेटिंग प्रणाली (आरटीओएस) रीयल-टाइम कंप्यूटिंग अनुप्रयोगों के लिए एक ऑपरेटिंग प्रणाली (ओएस) है जो डेटा और घटनाओं को संसाधित करता है जिसमें सूक्षम रूप से परिभाषित समय की कमी होती है। एक आरटीओएस टाइम-शेयरिंग ऑपरेटिंग प्रणाली से अलग है, जैसे कि यूनिक्स, जो एक मल्टीटास्किंग या मल्टीप्रोग्रामिंग परिस्थिति में एक अनुसूचक, डेटा बफ़र्स, या निश्चित कार्य प्राथमिकता के साथ प्रणाली संसाधनों के सहभागिताकरण का प्रबंधन करता है। प्रसंस्करण समय की आवश्यकताओं को न्यूनतम रूप में रखने के अतिरिक्त पूरी तरह से समझने और बाध्य करने की आवश्यकता है। सभी प्रसंस्करण परिभाषित बाध्यताओं के अंतर्गत होने चाहिए। रीयल-टाइम ऑपरेटिंग प्रणाली घटना-संचालित प्रोग्रामिंग हैं। घटना-संचालित और प्रीमेशन (कंप्यूटिंग), जिसका अर्थ है कि ओएस प्रतिस्पर्धी कार्यों की प्रासंगिक प्राथमिकता का पर्यवेक्षण कर सकता है और कार्य प्राथमिकता में परिवर्तन कर सकता है। घटना-संचालित प्रणाली अपनी प्राथमिकताओं के आधार पर कार्यों के बीच परिवर्तन करते हैं, जबकि टाइम-शेयरिंग प्रणाली घड़ी के अवरोध के आधार पर कार्य को परिवर्तन करते हैं।
विशेषताएं
आरटीओएस की प्रमुख विशेषता इसकी निरंतरता का स्तर है जो किसी एप्लिकेशन के कार्य (कंप्यूटिंग) को स्वीकार करने और पूरा करने में लगने वाले समय से संबंधित है; परिवर्तनशीलता 'अस्थिर' होना है।[1] एक 'दृढ़' रीयल-टाइम ऑपरेटिंग प्रणाली (दृढ़ आरटीओएस) में 'सरल' रीयल-टाइम ऑपरेटिंग प्रणाली (सरल आरटीओएस) की तुलना में कम अस्थिर होता है। विलंब से दिया गया उत्तर दृढ़ आरटीओएस में गलत उत्तर होता है जबकि सरल आरटीओएस में विलंब से दिया गया उत्तर स्वीकार्य होता है। मुख्य डिजाइन लक्ष्य उच्च प्रवाह क्षमता नहीं है, बल्कि रीयल-टाइम कंप्यूटिंग प्रदर्शन श्रेणी के लिए रीयल-टाइम कंप्यूटिंग मानदंड की गारंटी है। एक आरटीओएस जो प्रायः या व्यापक रूप पर एक समय सीमा को पूरा कर सकता है, एक सरल रीयल-टाइम ओएस है, लेकिन अगर यह निर्धारित समय सीमा को पूरा कर सकता है तो यह एक कठिन रीयल-टाइम ओएस है।[2]
आरटीओएस में शेड्यूलिंग (कंप्यूटिंग) के लिए एक उन्नत कलन विधि है। शेड्यूलर नमनीयता प्रक्रिया प्राथमिकताओं के एक व्यापक, कंप्यूटर-प्रणाली ऑर्केस्ट्रेशन को सक्षम करता है, लेकिन रीयल-टाइम ओएस अधिक बार अनुप्रयोगों एक संकीर्ण समूह के लिए समर्पित होता है। रीयल-टाइम ओएस में प्रमुख कारक न्यूनतम व्यवधान विलंबता और न्यूनतम थ्रेड स्विचिंग विलंबता हैं; एक रीयल-टाइम ओएस को इस बात के लिए अधिक महत्व दिया जाता है कि यह किसी निश्चित समयावधि में जितना काम कर सकता है, उसकी तुलना में यह कितनी जल्दी प्रतिक्रिया दे सकता है।[3]
विस्तृत सूची के लिए रीयल-टाइम ऑपरेटिंग प्रणाली की तुलना देखें। साथ ही, सभी प्रकार के ऑपरेटिंग प्रणाली के लिए ऑपरेटिंग प्रणाली की सूची देखें।
डिजाइन दर्शन
आरटीओएस एक ऑपरेटिंग प्रणाली है जिसमें निविष्ट प्रोत्साहन को संसाधित करने में लगने वाला समय उसी प्रकार के अगले निविष्ट प्रोत्साहन तक व्यतीत होने वाले समय से कम होता है।
सबसे सामान्य डिजाइन हैं:
- घटना-संचालित - कार्यों को तभी स्विच करता है जब उच्च प्राथमिकता वाली घटना को सर्विसिंग की आवश्यकता होती है; प्रीमेशन (कंप्यूटिंग), या प्राथमिकता शेड्यूलिंग कहा जाता है।
टाइम-शेयरिंग - नियमित घड़ी के अवरोध और घटना पर कार्यों को स्विच करता है; राउंड-रॉबिन शेड्यूलिंग कहा जाता है।
समय सहभागिता करने वाले डिज़ाइन कार्यों को कठोरता से आवश्यकता से अधिक बार स्विच करते हैं, लेकिन कंप्यूटर मल्टीटास्किंग सहज बनाते हैं, जिससे यह भ्रम होता है कि एक प्रक्रिया या उपयोगकर्ता के पास मशीन का एकमात्र उपयोग है।
आरंभिक सीपीयू डिजाइनों को कार्यों को बदलने के लिए कई चक्रों की आवश्यकता होती थी, जिस अवधि सीपीयू कुछ और उपयोगी नहीं कर सकता था। क्योंकि स्विचिंग में इतना समय लगता था, आरंभिक ओएस ने अनावश्यक कार्य स्विचिंग से बचकर CPU समय व्यर्थ करने को कम करने का प्रयास किया।
निर्धारण
विशिष्ट डिजाइनों में, कार्य में तीन अवस्थाएँ होती हैं:
- चलायमान (सीपीयू पर निष्पादन);
- तत्पर (निष्पादित होने के लिए तत्पर);
- अवरुद्ध (एक घटना की प्रतीक्षा में, उदाहरण के लिए आई/ओ)।
अधिकांश कार्य अधिकांश समय अवरुद्ध या तत्पर रहते हैं क्योंकि सामान्यतः प्रति सेंट्रल प्रोसेसिंग यूनिट में एक समय में केवल एक ही कार्य चल सकता है। प्रणाली द्वारा किए जाने वाले कार्यों की संख्या और प्रणाली द्वारा उपयोग किए जाने वाले अनुसूचक के प्रकार के आधार पर, तत्पर क्रम में वस्तुओं की संख्या बहुत भिन्न हो सकती है। सरल अन्य-रिक्तिपूर्व लेकिन अभी भी मल्टीटास्किंग प्रणाली पर, एक कार्य को सीपीयू पर अपना समय अन्य कार्यों के लिए देना पड़ता है, जिससे तत्पर क्रम में निष्पादित होने के लिए तत्पर स्थिति में समग्र कार्यों की अधिक संख्या हो सकती है (संसाधन अप्राप्ति) .
सामान्यतः,अनुसूचक में तत्पर सूची की डेटा संरचना को अनुसूचक के महत्वपूर्ण खंड में व्यतीत समय की सबसे निकृष्टतम स्थिति को कम करने के लिए डिज़ाइन किया गया है, जिस अवधि पूर्वक्रय बाधित होता है, और, कुछ स्थितियों में, सभी व्यवधान अक्षम हो जाते हैं, लेकिन विकल्प डेटा संरचना की संख्या उन कार्यों की अधिकतम संख्या पर भी निर्भर करती है जो तत्पर सूची में हो सकते हैं।
यदि तत्पर सूची में कभी भी कुछ कार्यों से अधिक नहीं होते हैं, तो तत्पर कार्यों की दोगुनी लिंक की गई सूची की संभावना इष्टतम होती है। यदि तत्पर सूची में सामान्यतः केवल कुछ कार्य होते हैं लेकिन कभी-कभी अधिक भी होते हैं, तो सूची को प्राथमिकता के आधार पर क्रमबद्ध किया जाना चाहिए। इस तरह, चलाने के लिए सर्वोच्च प्राथमिकता वाले कार्य को खोजने के लिए पूरी सूची के माध्यम से पुनरावृति की आवश्यकता नहीं होती है। किसी कार्य को सम्मिलित करने के लिए सूची के अंत तक पहुंचने तक या सम्मिलित किए जा रहे कार्य की तुलना में कम प्राथमिकता वाले कार्य तक तत्पर सूची को चलने की आवश्यकता होती है।
इस खोज की अवधि पूर्वक्रय को बाधित न करने के लिए सावधानी रखना चाहिए। लंबे समय तक महत्वपूर्ण वर्गों को छोटे टुकड़ों में बांटा जाना चाहिए। यदि कोई व्यवधान उत्पन्न होता है जो कम प्राथमिकता वाले कार्य के सम्मिलन के अवधि उच्च प्राथमिकता वाले कार्य को तत्पर करता है, तो उस उच्च प्राथमिकता वाले कार्य को डाला जा सकता है और कम प्राथमिकता वाले कार्य को सम्मिलित करने से ठीक पहले चलाया जा सकता है।
महत्वपूर्ण प्रतिक्रिया समय, जिसे कभी-कभी प्रतिधावन समय कहा जाता है, वह समय होता है जब किसी नए तत्पर कार्य को पंक्तिबद्ध करने और सर्वोच्च प्राथमिकता वाले कार्य की स्थिति को चलाने के लिए पुनर्स्थापित किया जाता है। एक अच्छी तरह से डिज़ाइन किए गए आरटीओएस में, एक नया कार्य तत्पर करने के लिए प्रति तत्पर क्रम प्रविष्टि में 3 से 20 निर्देश लगेंगे, और उच्चतम प्राथमिकता वाले तत्पर कार्य की वापसी में 5 से 30 निर्देश लगेंगे।
अधिक उन्नत प्रणालियों में, रीयल-टाइम के कार्य कंप्यूटिंग संसाधनों को कई अन्य-रीयल-टाइम के कार्यों के साथ सहभागिता करते हैं, और तत्पर सूची मनमाने ढंग से लंबी हो सकती है। ऐसी प्रणालियों में, लिंक की गई सूची के रूप में कार्यान्वित की गई अनुसूचक तत्पर सूची अपर्याप्त होगी।
कलन विधि
कुछ सामान्य रूप से उपयोग किए जाने वाले आरटीओएस शेड्यूलिंग कलन विधि हैं:
- सहकारी निर्धारण
- पूर्वक्रय (कम्प्यूटिंग)
- दर-मोनोटोनिक शेड्यूलिंग
- राउंड-रॉबिन शेड्यूलिंग
- निर्धारित प्राथमिकता प्री-एम्प्टिव शेड्यूलिंग, प्रीमेप्टिव टाइम स्लाइसिंग का कार्यान्वयन
- निश्चित-प्राथमिकता निर्धारण आस्थगित पूर्वक्रय अधिकार के साथ
- निर्धारित-प्राथमिकता अन्य-रिक्तिपूर्व शेड्यूलिंग
- क्रिटिकल सेक्शन रिक्तिपूर्व शेड्यूलिंग
- स्टेटिक टाइम शेड्यूलिंग
- अतिशीघ्र समय सीमा पहले शेड्यूलिंग दृष्टिकोण
- थ्रेड (कंप्यूटर साइंस) के साथ स्टोकेस्टिक निर्देशित ग्राफ | मल्टी-थ्रेडेड ट्री ट्रैवर्सल
इंटरटास्क संचार और संसाधन सहभागिताकरण
यूनिक्स जैसा मल्टीटास्किंग ऑपरेटिंग प्रणाली रीयल-टाइम कार्यों में खराब है। शेड्यूलर कंप्यूटर पर सबसे कम मांग वाली नौकरियों को सर्वोच्च प्राथमिकता देता है, इसलिए यह सुनिश्चित करने का कोई तरीका नहीं है कि एक समय-महत्वपूर्ण नौकरी के पास पर्याप्त संसाधनों तक पहुंच होगी। मल्टीटास्किंग प्रणाली को कई कार्यों के बीच डेटा और हार्डवेयर संसाधनों को सहभागिता करने का प्रबंधन करना चाहिए। एक ही विशिष्ट डेटा या हार्डवेयर संसाधन को एक साथ एक्सेस करना सामान्यतः पर दो कार्यों के लिए असुरक्षित होता है।[4] इस समस्या को हल करने के तीन सामान्य तरीके हैं:
अस्थायी रूप से मास्किंग/अक्षम करने से बाधित होता है
सामान्य-उद्देश्य वाले ऑपरेटिंग प्रणाली सामान्यतः उपयोगकर्ता प्रोग्राम को बाधित करने (अक्षम) करने की अनुमति नहीं देते हैं, क्योंकि उपयोगकर्ता प्रोग्राम सीपीयू को तब तक नियंत्रित कर सकता है जब तक इसे बनाया जाता है। कुछ आधुनिक सीपीयू उपयोगकर्ता मोड कोड को बाधित करने की अनुमति नहीं देते हैं क्योंकि इस तरह के नियंत्रण को एक महत्वपूर्ण ऑपरेटिंग प्रणाली संसाधन माना जाता है। कई एम्बेडेड प्रणाली और आरटीओएस, हालांकि, एप्लिकेशन को अधिक प्रणाली कॉल दक्षता के लिए कर्नेल मोड में चलाने की अनुमति देते हैं और ओएस हस्तक्षेप की आवश्यकता के बिना ऑपरेटिंग परिस्थिति के अधिक नियंत्रण के लिए एप्लिकेशन को अनुमति भी देते हैं।
सिंगल-प्रोसेसर प्रणाली पर, कर्नेल मोड में चलने वाला एक एप्लिकेशन और मास्किंग बाधा डालना एक सहभागिता संसाधन तक एक साथ पहुंच को रोकने के लिए सबसे कम ओवरहेड विधि है। जबकि व्यवधानों को छिपाया जाता है और वर्तमान कार्य अवरुद्ध ओएस कॉल नहीं करता है, वर्तमान कार्य में CPU का अनन्य उपयोग होता है क्योंकि कोई अन्य कार्य या व्यवधान नियंत्रण नहीं कर सकता है, इसलिए महत्वपूर्ण खंड सुरक्षित है। जब कार्य अपने महत्वपूर्ण खंड से बाहर निकलता है, तो उसे व्यवधानों को उजागर करना चाहिए; लंबित रुकावटें, यदि कोई हों, तब निष्पादित होंगी। अस्थायी रूप से मास्किंग इंटरप्ट केवल तभी किया जाना चाहिए जब महत्वपूर्ण खंड के माध्यम से सबसे लंबा पथ वांछित अधिकतम इंटरप्ट विलंबता से छोटा हो। सामान्यतः सुरक्षा की इस पद्धति का उपयोग केवल तब किया जाता है जब महत्वपूर्ण खंड केवल कुछ निर्देश होते हैं और इसमें कोई लूप नहीं होता है। यह विधि हार्डवेयर बिट-मैप्ड रजिस्टरों की सुरक्षा के लिए आदर्श है जब बिट्स को विभिन्न कार्यों द्वारा नियंत्रित किया जाता है।
म्युटेक्स
जब सहभागिता संसाधन को अन्य सभी कार्यों को अवरुद्ध किए बिना आरक्षित किया जाना चाहिए (जैसे कि फ्लैश मेमोरी के लिखे जाने की प्रतीक्षा करना), सामान्य-उद्देश्य ऑपरेटिंग प्रणाली पर भी उपलब्ध तंत्र का उपयोग करना बेहतर होता है, जैसे म्यूटेक्स और ओएस-पर्यवेक्षित इंटरप्रोसेस मैसेजिंग। इस तरह के तंत्र में प्रणाली कॉल शामिल होते हैं, और सामान्यतः बाहर निकलने पर ओएस के डिस्पैचर कोड को आमंत्रित करते हैं, इसलिए वे सामान्यतः निष्पादित करने के लिए सैकड़ों CPU निर्देश लेते हैं, जबकि मास्किंग इंटरप्ट कुछ प्रोसेसर पर एक निर्देश के रूप में कम हो सकता है।
ए (अन्य-पुनरावर्ती) म्यूटेक्स या तो लॉक या अनलॉक है। जब किसी कार्य ने म्यूटेक्स को लॉक कर दिया है, तो अन्य सभी कार्यों को म्यूटेक्स को उसके स्वामी - मूल थ्रेड द्वारा अनलॉक किए जाने की प्रतीक्षा करनी चाहिए। एक कार्य एक म्यूटेक्स के लिए अपनी प्रतीक्षा का समय समाप्त कर सकता है। म्यूटेक्स आधारित डिज़ाइन के साथ कई प्रसिद्ध समस्याएं हैं जैसे कि प्राथमिकता उलटा और गतिरोध।
प्राथमिकता व्युत्क्रम में एक उच्च प्राथमिकता वाला कार्य प्रतीक्षा करता है क्योंकि कम प्राथमिकता वाले कार्य में म्यूटेक्स होता है, लेकिन निम्न प्राथमिकता वाले कार्य को अपना कार्य पूरा करने के लिए CPU समय नहीं दिया जाता है। एक विशिष्ट समाधान यह है कि वह कार्य जिसके पास एक म्यूटेक्स 'विरासत' है, उच्चतम प्रतीक्षा कार्य की प्राथमिकता है। लेकिन प्रतीक्षा के कई स्तर होने पर यह सरल दृष्टिकोण और अधिक जटिल हो जाता है: कार्य 'ए' कार्य 'बी' द्वारा म्यूटेक्स लॉक की प्रतीक्षा करता है, जो कार्य 'सी' द्वारा म्यूटेक्स लॉक की प्रतीक्षा करता है। वंशानुक्रम के कई स्तरों को संभालने के कारण अन्य कोड उच्च प्राथमिकता वाले संदर्भ में चलते हैं और इस प्रकार मध्यम-प्राथमिकता वाले थ्रेड्स की अप्राप्ति का कारण बन सकते हैं।
गतिरोध में, दो या दो से अधिक कार्य समय समाप्ति के बिना म्यूटेक्स को लॉक कर देते हैं और फिर चक्रीय निर्भरता बनाते हुए दूसरे कार्य के म्यूटेक्स के लिए हमेशा प्रतीक्षा करते हैं। सबसे सरल गतिरोध परिदृश्य तब होता है जब दो कार्य वैकल्पिक रूप से दो म्यूटेक्स को लॉक करते हैं, लेकिन विपरीत क्रम में। गतिरोध को सावधानीपूर्वक डिजाइन द्वारा रोका जाता है।
संदेश गुजर रहा है
संसाधनों को सहभागिता करने का दूसरा तरीका कार्यों के लिए एक संगठित संदेश देना स्कीम में संदेश भेजना है। इस प्रतिमान में, संसाधन को सीधे केवल एक कार्य द्वारा प्रबंधित किया जाता है। जब कोई अन्य कार्य संसाधन से पूछताछ या हेरफेर करना चाहता है, तो यह प्रबंध कार्य को एक संदेश भेजता है। हालांकि उनका रीयल-टाइम व्यवहार सेमाफोर (प्रोग्रामिंग) प्रणाली की तुलना में कम कुरकुरा है, सरल संदेश-आधारित प्रणाली अधिकांश प्रोटोकॉल डेडलॉक खतरों से बचते हैं, और सामान्यतः सेमाफोर प्रणाली की तुलना में बेहतर व्यवहार करते हैं। हालाँकि, सेमाफोर जैसी समस्याएं संभव हैं। प्राथमिकता उलटा तब हो सकता है जब कोई कार्य निम्न-प्राथमिकता वाले संदेश पर काम कर रहा हो और अपनी आने वाली संदेश क्रम में उच्च-प्राथमिकता वाले संदेश (या उच्च प्राथमिकता वाले कार्य से अप्रत्यक्ष रूप से उत्पन्न होने वाले संदेश) की उपेक्षा करता हो। प्रोटोकॉल गतिरोध तब हो सकता है जब दो या दो से अधिक कार्य प्रतिक्रिया संदेश भेजने के लिए एक दूसरे की प्रतीक्षा करते हैं।
इंटरप्ट हैंडलर और शेड्यूलर
चूंकि एक इंटरप्ट हैंडलर उच्चतम प्राथमिकता वाले कार्य को चलने से रोकता है, और चूंकि रीयल-टाइम ऑपरेटिंग प्रणाली को थ्रेड लेटेंसी को न्यूनतम रखने के लिए डिज़ाइन किया गया है, इसलिए इंटरप्ट हैंडलर को सामान्यतः जितना संभव हो उतना छोटा रखा जाता है। यदि संभव हो तो इंटरप्ट हैंडलर हार्डवेयर के साथ सभी इंटरैक्शन को रोकता है; आम तौर पर जो कुछ भी आवश्यक है वह बाधा को स्वीकार या अक्षम करना है (ताकि बाधा हैंडलर लौटने पर यह फिर से न हो) और उस कार्य को सूचित करें जिसे काम करने की आवश्यकता है। यह एक ड्राइवर कार्य को एक सेमाफोर जारी करके, एक ध्वज समूह करके या एक संदेश भेजकर किया जा सकता है। एक शेड्यूलर अक्सर किसी कार्य को इंटरप्ट हैंडलर संदर्भ से अनब्लॉक करने की क्षमता प्रदान करता है।
एक ओएस उन वस्तुओं के कैटलॉग को बनाए रखता है जिन्हें वह प्रबंधित करता है जैसे कि थ्रेड्स, म्यूटेक्स, मेमोरी, और इसी तरह। इस कैटलॉग के अपडेट को कठोरता से नियंत्रित किया जाना चाहिए। इस कारण से, यह समस्याग्रस्त हो सकता है जब एक इंटरप्ट हैंडलर ओएस फ़ंक्शन को कॉल करता है जबकि एप्लिकेशन ऐसा करने के कार्य में भी होता है। इंटरप्ट हैंडलर से बुलाया गया ओएस फ़ंक्शन एप्लिकेशन के अपडेट के कारण ऑब्जेक्ट डेटाबेस को असंगत स्थिति में पा सकता है। इस समस्या से निपटने के लिए दो प्रमुख दृष्टिकोण हैं: एकीकृत वास्तुकला और खंडित वास्तुकला। एकीकृत आर्किटेक्चर को कार्यान्वित करने वाले आरटीओएस आंतरिक कैटलॉग अपडेट होने पर इंटरप्ट्स को अक्षम करके समस्या का समाधान करते हैं। इसका नकारात्मक पक्ष यह है कि रुकावट विलंबता बढ़ जाती है, संभावित रूप से बाधित हो जाती है। खंडित आर्किटेक्चर प्रत्यक्ष ओएस कॉल नहीं करता है लेकिन ओएस से संबंधित कार्य को एक अलग हैंडलर को सौंपता है। यह हैंडलर किसी भी थ्रेड की तुलना में उच्च प्राथमिकता पर चलता है, लेकिन इंटरप्ट हैंडलर से कम है। इस आर्किटेक्चर का लाभ यह है कि यह विलंबता को बाधित करने के लिए बहुत कम चक्र जोड़ता है। नतीजतन, खंडित वास्तुकला को कार्यान्वित करने वाले ओएस अधिक अनुमानित हैं और एकीकृत वास्तुकला की तुलना में उच्च रुकावट दर से निपट सकते हैं।[citation needed]
इसी तरह, x86 संगत हार्डवेयर पर प्रणाली प्रबंधन मोड को ऑपरेटिंग प्रणाली पर नियंत्रण वापस करने से पहले बहुत समय लग सकता है।
स्मृति आवंटन
अन्य ऑपरेटिंग प्रणाली की तुलना में रीयल-टाइम ऑपरेटिंग प्रणाली में मेमोरी आवंटन अधिक महत्वपूर्ण है।
सबसे पहले, स्थिरता के लिए स्मृति रिसाव नहीं हो सकती (मेमोरी जो आवंटित की जाती है लेकिन उपयोग के बाद मुक्त नहीं होती है)। रिबूट की आवश्यकता के बिना, डिवाइस को अनिश्चित काल तक काम करना चाहिए। इस कारण से, डायनेमिक मेमोरी आवंटन पर ध्यान नहीं दिया जाता है।[citation needed] जब भी संभव हो, सभी आवश्यक स्मृति आबंटन को संकलन समय पर स्थिर रूप से निर्दिष्ट किया जाता है।
डायनेमिक मेमोरी आवंटन से बचने का एक अन्य कारण मेमोरी विखंडन है। स्मृति के छोटे हिस्से के बार-बार आवंटन और विमोचन के साथ, ऐसी स्थिति उत्पन्न हो सकती है जहां उपलब्ध स्मृति को कई खंडों में विभाजित किया जाता है और आरटीओएस स्मृति के एक बड़े निरंतर खंड को आवंटित नहीं कर सकता है, हालांकि पर्याप्त मुक्त स्मृति है। दूसरे, आवंटन की गति महत्वपूर्ण है। एक मानक मेमोरी आवंटन योजना उपयुक्त मुक्त मेमोरी ब्लॉक खोजने के लिए अनिश्चित लंबाई की एक लिंक की गई सूची को स्कैन करती है,[5] जो आरटीओएस में अस्वीकार्य है क्योंकि स्मृति आवंटन एक निश्चित समय के अंतर्गत होता है।
क्योंकि यांत्रिक डिस्क में बहुत लंबा और अधिक अप्रत्याशित प्रतिक्रिया समय होता है, डिस्क फ़ाइलों की अदला-बदली का उपयोग उन्हीं कारणों से नहीं किया जाता है जैसा कि ऊपर चर्चा की गई रैम आवंटन।
साधारण मेमोरी_मैनेजमेंट#FIXED-SIZE|निर्धारित-साइज-ब्लॉक एल्गोरिथम अपने कम ओवरहेड के कारण सरल अंतः स्थापित प्रणाली के लिए काफी अच्छी तरह से काम करता है।
यह भी देखें
- अनुकूली विभाजन अनुसूचक
- रीयल-टाइम ऑपरेटिंग सिस्टम की तुलना
- डेटा जनरल आरडीओएस
- डीओ-178B ी
- जल्द से जल्द समय सीमा पहले शेड्यूलिंग
- फर्मवेयर
- फ्रीआरटीओएस
- इंटरप्टिबल ऑपरेटिंग सिस्टम
- कम से कम सुस्त समय निर्धारण
- ओसेक
- पॉज़िक्स
- दर-मोनोटोनिक शेड्यूलिंग
- रोबोट ऑपरेटिंग सिस्टम
- स्काडा
- तुल्यकालिक प्रोग्रामिंग भाषा
- समय-ट्रिगर प्रणाली
- समय-उपयोगिता समारोह
संदर्भ
- ↑ "Response Time and Jitter".
- ↑ Tanenbaum, Andrew (2008). आधुनिक ऑपरेटिंग सिस्टम. Upper Saddle River, NJ: Pearson/Prentice Hall. p. 160. ISBN 978-0-13-600663-3.
- ↑ "आरटीओएस अवधारणाओं".
{{cite web}}
: CS1 maint: url-status (link) - ↑ Phraner, Ralph A. (Fall 1984). "आईबीएम पीसी पर यूनिक्स का भविष्य". Byte. pp. 59–64.
- ↑ "CS 241, University of Illinois" (PDF).