कोऑपरेटिव मल्टीटास्किंग: Difference between revisions
(Created page with "{{Short description|Computer multitasking that does not preempt processes}} {{Use mdy dates|date=August 2015}} सहकारी मल्टीटास्किंग, ज...") |
No edit summary |
||
Line 2: | Line 2: | ||
{{Use mdy dates|date=August 2015}} | {{Use mdy dates|date=August 2015}} | ||
'''कोऑपरेटिव मल्टीटास्किंग''' (बहुकार्यन), जिसे '''नॉन-प्रीमेप्टिव मल्टीटास्किंग''' के रूप में भी जाना जाता है, [[कंप्यूटर मल्टीटास्किंग]] की एक शैली है जिसमें [[ऑपरेटिंग सिस्टम]] कभी भी किसी चल रही [[प्रक्रिया (कंप्यूटिंग)|प्रक्रिया]] से दूसरी प्रक्रिया में [[संदर्भ स्विच]] नहीं करता है। इसके बजाय, कई अनुप्रयोगों को समवर्ती रूप से चलाने के लिए, प्रक्रिया स्वेच्छा से समय-समय पर या निष्क्रिय या तार्किक रूप से अवरुद्ध होने पर नियंत्रण प्राप्त करती है। इस प्रकार के मल्टीटास्किंग को कोऑपरेटिव कहा जाता है क्योंकि शेड्यूलिंग स्कीम के काम करने के लिए सभी प्रोग्रामों को सहयोग करना चाहिए। | |||
इस योजना में, एक ऑपरेटिंग सिस्टम के | इस योजना में, एक ऑपरेटिंग सिस्टम के प्रोसेस शेड्यूलर को एक '''कोऑपरेटिव शेड्यूलर''' के रूप में जाना जाता है, जिसकी भूमिका प्रक्रियाओं को शुरू करने और उन्हें स्वेच्छा से नियंत्रण वापस करने देने तक सीमित होती है।<ref name="pcmag">{{cite web | ||
| url = https://www.pcmag.com/encyclopedia/term/48051/non-preemptive-multitasking | | url = https://www.pcmag.com/encyclopedia/term/48051/non-preemptive-multitasking | ||
| title = Definition of non-preemptive multitasking | | title = Definition of non-preemptive multitasking | ||
Line 20: | Line 20: | ||
| url-status = dead | | url-status = dead | ||
}}</ref> | }}</ref> | ||
== उपयोग == | == उपयोग == | ||
यद्यपि यह आधुनिक ऑपरेटिंग सिस्टम में प्राथमिक शेड्यूलिंग तंत्र के रूप में शायद ही कभी उपयोग किया जाता है, यह व्यापक रूप से | यद्यपि यह आधुनिक ऑपरेटिंग सिस्टम में प्राथमिक शेड्यूलिंग तंत्र के रूप में शायद ही कभी उपयोग किया जाता है, यह व्यापक रूप से मेमोरी कंस्ट्रेंड एम्बेडेड सिस्टम में और सीआईसी या जेईएस 2 सबसिस्टम जैसे विशिष्ट अनुप्रयोगों में भी उपयोग किया जाता है। विंडोज 95 और विंडोज एनटी से पहले [[ माइक्रोसॉफ़्ट विंडोज़ |माइक्रोसॉफ़्ट विंडोज़]] और [[क्लासिक (मैक ओएस एक्स)|क्लासिक मैक ओएस]] द्वारा नियोजित 16-बिट अनुप्रयोगों के लिए कोऑपरेटिव मल्टीटास्किंग प्राथमिक शेड्यूलिंग योजना थी। विंडोज 9x ने 16-बिट विरासत अनुप्रयोगों के लिए [[प्रीमेप्टिव मल्टीटास्किंग|नॉन'''-'''प्रीमेप्टिव मल्टीटास्किंग]] का इस्तेमाल किया, और तेंदुए से पहले मैक ओएस एक्स के पावरपीसी संस्करणों ने क्लासिक अनुप्रयोगों के लिए इसका इस्तेमाल किया।<ref name="pcmag" /> नेटवेयर, जो एक नेटवर्क-उन्मुख ऑपरेटिंग सिस्टम है, ने नेटवेयर 6.5 तक कोऑपरेटिव मल्टीटास्किंग का इस्तेमाल किया। कोऑपरेटिव मल्टीटास्किंग अभी भी आरआईएससी ओएस सिस्टम पर प्रयोग किया जाता है।<ref>{{cite web | ||
| url = http://www.riscos.info/index.php/Preemptive_multitasking | | url = http://www.riscos.info/index.php/Preemptive_multitasking | ||
| title = Preemptive multitasking | | title = Preemptive multitasking | ||
Line 29: | Line 27: | ||
| website = riscos.info | | website = riscos.info | ||
}}</ref> | }}</ref> | ||
कोऑपरेटिव मल्टीटास्किंग का उपयोग भाषाओं में इंतजार के साथ किया जाता है, जैसे कि [[जावास्क्रिप्ट]] या पायथन, जो अपने रनटाइम में सिंगल-थ्रेडेड इवेंट लूप की सुविधा देते हैं। यह ऑपरेटिंग सिस्टम कोऑपरेटिव मल्टीटास्किंग के विपरीत है क्योंकि प्रतीक्षा केवल फ़ंक्शन या ब्लॉक तक सीमित है, जिसका अर्थ है कि अन्य कार्य कोड के अन्य भागों में समवर्ती रूप से चल सकते हैं जबकि एक एकल फ़ंक्शन प्रतीक्षा कर रहा है।<ref>{{cite web | |||
|last1=Kerkour | |last1=Kerkour | ||
|first1=Sylvain | |first1=Sylvain | ||
Line 42: | Line 41: | ||
|url=https://tenthousandmeters.com/blog/python-behind-the-scenes-12-how-asyncawait-works-in-python/ | |url=https://tenthousandmeters.com/blog/python-behind-the-scenes-12-how-asyncawait-works-in-python/ | ||
|access-date=30 January 2023 | |access-date=30 January 2023 | ||
}}</ref> अधिकांश आधुनिक भाषाओं में, | }}</ref> अधिकांश आधुनिक भाषाओं में, एसिंक और प्रतीक्षा को कोरआउट के रूप में लागू किया जाता है। | ||
== समस्याएं == | == समस्याएं == | ||
एक सहयोगी रूप से मल्टीटास्क्ड सिस्टम | एक सहयोगी रूप से मल्टीटास्क्ड सिस्टम नियमित रूप से अन्य प्रक्रियाओं के लिए समय देते हुए प्रत्येक प्रक्रिया पर निर्भर करता है, एक खराब डिज़ाइन किया गया प्रोग्राम व्यापक गणना करके या प्रतीक्षा में व्यस्त होकर सभी सीपीयू समय का उपभोग कर सकता है; दोनों पूरे सिस्टम को [[हैंग (कंप्यूटिंग)|हैंग]] करने का कारण बनेंगे। एक सर्वर परिस्थिति में, यह खतरा पूरे परिस्थिति को अस्वीकार्य रूप से भंगुर बना देता है।<ref name="pcmag" /> | ||
इसके विपरीत, प्रीमेप्टिव मल्टीटास्किंग एप्लिकेशन को बाधित करता है और एप्लिकेशन के नियंत्रण से बाहर की अन्य प्रक्रियाओं को नियंत्रण देता है। | |||
सिस्टम हैंग होने की संभावना को वॉचडॉग टाइमर का उपयोग करके कम किया जा सकता है, जिसे अक्सर हार्डवेयर में लागू किया जाता है; यह आम तौर पर एक [[हार्डवेयर रीसेट]] का आह्वान करता है। | |||
कोऑपरेटिव मल्टीटास्किंग अनुप्रयोगों के बहुत सरल कार्यान्वयन की अनुमति देता है क्योंकि प्रक्रिया अनुसूचक द्वारा उनका निष्पादन कभी भी अप्रत्याशित रूप से बाधित नहीं होता है; उदाहरण के लिए, एप्लिकेशन के अंदर विभिन्न कार्यों को पुनः प्रवेश करने की आवश्यकता नहीं है।<ref name="classiccmp" /> | |||
== यह भी देखें == | == यह भी देखें == | ||
* प्रीमेप्टिव मल्टीटास्किंग | * प्रीमेप्टिव मल्टीटास्किंग |
Revision as of 09:43, 5 June 2023
कोऑपरेटिव मल्टीटास्किंग (बहुकार्यन), जिसे नॉन-प्रीमेप्टिव मल्टीटास्किंग के रूप में भी जाना जाता है, कंप्यूटर मल्टीटास्किंग की एक शैली है जिसमें ऑपरेटिंग सिस्टम कभी भी किसी चल रही प्रक्रिया से दूसरी प्रक्रिया में संदर्भ स्विच नहीं करता है। इसके बजाय, कई अनुप्रयोगों को समवर्ती रूप से चलाने के लिए, प्रक्रिया स्वेच्छा से समय-समय पर या निष्क्रिय या तार्किक रूप से अवरुद्ध होने पर नियंत्रण प्राप्त करती है। इस प्रकार के मल्टीटास्किंग को कोऑपरेटिव कहा जाता है क्योंकि शेड्यूलिंग स्कीम के काम करने के लिए सभी प्रोग्रामों को सहयोग करना चाहिए।
इस योजना में, एक ऑपरेटिंग सिस्टम के प्रोसेस शेड्यूलर को एक कोऑपरेटिव शेड्यूलर के रूप में जाना जाता है, जिसकी भूमिका प्रक्रियाओं को शुरू करने और उन्हें स्वेच्छा से नियंत्रण वापस करने देने तक सीमित होती है।[1][2]
उपयोग
यद्यपि यह आधुनिक ऑपरेटिंग सिस्टम में प्राथमिक शेड्यूलिंग तंत्र के रूप में शायद ही कभी उपयोग किया जाता है, यह व्यापक रूप से मेमोरी कंस्ट्रेंड एम्बेडेड सिस्टम में और सीआईसी या जेईएस 2 सबसिस्टम जैसे विशिष्ट अनुप्रयोगों में भी उपयोग किया जाता है। विंडोज 95 और विंडोज एनटी से पहले माइक्रोसॉफ़्ट विंडोज़ और क्लासिक मैक ओएस द्वारा नियोजित 16-बिट अनुप्रयोगों के लिए कोऑपरेटिव मल्टीटास्किंग प्राथमिक शेड्यूलिंग योजना थी। विंडोज 9x ने 16-बिट विरासत अनुप्रयोगों के लिए नॉन-प्रीमेप्टिव मल्टीटास्किंग का इस्तेमाल किया, और तेंदुए से पहले मैक ओएस एक्स के पावरपीसी संस्करणों ने क्लासिक अनुप्रयोगों के लिए इसका इस्तेमाल किया।[1] नेटवेयर, जो एक नेटवर्क-उन्मुख ऑपरेटिंग सिस्टम है, ने नेटवेयर 6.5 तक कोऑपरेटिव मल्टीटास्किंग का इस्तेमाल किया। कोऑपरेटिव मल्टीटास्किंग अभी भी आरआईएससी ओएस सिस्टम पर प्रयोग किया जाता है।[3]
कोऑपरेटिव मल्टीटास्किंग का उपयोग भाषाओं में इंतजार के साथ किया जाता है, जैसे कि जावास्क्रिप्ट या पायथन, जो अपने रनटाइम में सिंगल-थ्रेडेड इवेंट लूप की सुविधा देते हैं। यह ऑपरेटिंग सिस्टम कोऑपरेटिव मल्टीटास्किंग के विपरीत है क्योंकि प्रतीक्षा केवल फ़ंक्शन या ब्लॉक तक सीमित है, जिसका अर्थ है कि अन्य कार्य कोड के अन्य भागों में समवर्ती रूप से चल सकते हैं जबकि एक एकल फ़ंक्शन प्रतीक्षा कर रहा है।[4][5] अधिकांश आधुनिक भाषाओं में, एसिंक और प्रतीक्षा को कोरआउट के रूप में लागू किया जाता है।
समस्याएं
एक सहयोगी रूप से मल्टीटास्क्ड सिस्टम नियमित रूप से अन्य प्रक्रियाओं के लिए समय देते हुए प्रत्येक प्रक्रिया पर निर्भर करता है, एक खराब डिज़ाइन किया गया प्रोग्राम व्यापक गणना करके या प्रतीक्षा में व्यस्त होकर सभी सीपीयू समय का उपभोग कर सकता है; दोनों पूरे सिस्टम को हैंग करने का कारण बनेंगे। एक सर्वर परिस्थिति में, यह खतरा पूरे परिस्थिति को अस्वीकार्य रूप से भंगुर बना देता है।[1]
इसके विपरीत, प्रीमेप्टिव मल्टीटास्किंग एप्लिकेशन को बाधित करता है और एप्लिकेशन के नियंत्रण से बाहर की अन्य प्रक्रियाओं को नियंत्रण देता है।
सिस्टम हैंग होने की संभावना को वॉचडॉग टाइमर का उपयोग करके कम किया जा सकता है, जिसे अक्सर हार्डवेयर में लागू किया जाता है; यह आम तौर पर एक हार्डवेयर रीसेट का आह्वान करता है।
कोऑपरेटिव मल्टीटास्किंग अनुप्रयोगों के बहुत सरल कार्यान्वयन की अनुमति देता है क्योंकि प्रक्रिया अनुसूचक द्वारा उनका निष्पादन कभी भी अप्रत्याशित रूप से बाधित नहीं होता है; उदाहरण के लिए, एप्लिकेशन के अंदर विभिन्न कार्यों को पुनः प्रवेश करने की आवश्यकता नहीं है।[2]
यह भी देखें
- प्रीमेप्टिव मल्टीटास्किंग
संदर्भ
- ↑ 1.0 1.1 1.2 "Definition of non-preemptive multitasking". pcmag.com. Retrieved August 15, 2015.
- ↑ 2.0 2.1 Joe Bartel (November 5, 2011). "Non-Preemptive Multitasking" (PDF). classiccmp.org. Archived from the original (PDF) on August 19, 2019. Retrieved August 15, 2015.
- ↑ "Preemptive multitasking". riscos.info. November 2, 2009. Retrieved August 15, 2015.
- ↑ Kerkour, Sylvain (January 25, 2022). "Async Rust: Cooperative vs Preemptive scheduling". Retrieved January 30, 2023.
- ↑ Skvortsov, Victor. "Python behind the scenes #12: How async/await works in Python". Retrieved January 30, 2023.