कोऑपरेटिव मल्टीटास्किंग: Difference between revisions

From Vigyanwiki
(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
इस योजना में, एक ऑपरेटिंग सिस्टम के प्रोसेस शेड्यूलर को एक '''कोऑपरेटिव शेड्यूलर''' के रूप में जाना जाता है, जिसकी भूमिका प्रक्रियाओं को शुरू करने और उन्हें स्वेच्छा से नियंत्रण वापस करने देने तक सीमित होती है।<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>
== उपयोग ==
== उपयोग ==
यद्यपि यह आधुनिक ऑपरेटिंग सिस्टम में प्राथमिक शेड्यूलिंग तंत्र के रूप में शायद ही कभी उपयोग किया जाता है, यह व्यापक रूप से स्मृति-विवश [[अंतः स्थापित प्रणाली]] में और [[CICS]] या [[JES2]] सबसिस्टम जैसे विशिष्ट अनुप्रयोगों में भी उपयोग किया जाता है। सहकारी मल्टीटास्किंग विंडोज 95 और विंडोज एनटी से पहले [[ माइक्रोसॉफ़्ट विंडोज़ ]] और [[क्लासिक (मैक ओएस एक्स)]] नियोजित 16-बिट अनुप्रयोगों के लिए प्राथमिक शेड्यूलिंग योजना थी। Windows 9x ने 16-बिट लीगेसी अनुप्रयोगों के लिए गैर-[[प्रीमेप्टिव मल्टीटास्किंग]] का उपयोग किया, और Mac OS X v10.5 से पहले के Mac OS X के [[PowerPC]] संस्करणों ने क्लासिक (Mac OS X) अनुप्रयोगों के लिए इसका उपयोग किया।<ref name="pcmag" /> [[NetWare]], जो एक नेटवर्क-उन्मुख ऑपरेटिंग सिस्टम है, ने NetWare 6.5 तक सहकारी मल्टीटास्किंग का उपयोग किया। सहकारी मल्टीटास्किंग का उपयोग अभी भी आरआईएससी ओएस सिस्टम पर किया जाता है।<ref>{{cite web
यद्यपि यह आधुनिक ऑपरेटिंग सिस्टम में प्राथमिक शेड्यूलिंग तंत्र के रूप में शायद ही कभी उपयोग किया जाता है, यह व्यापक रूप से मेमोरी कंस्ट्रेंड एम्बेडेड सिस्टम में और सीआईसी या जेईएस 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
 
कोऑपरेटिव मल्टीटास्किंग का उपयोग भाषाओं में इंतजार के साथ किया जाता है, जैसे कि [[जावास्क्रिप्ट]] या पायथन, जो अपने रनटाइम में सिंगल-थ्रेडेड इवेंट लूप की सुविधा देते हैं। यह ऑपरेटिंग सिस्टम कोऑपरेटिव मल्टीटास्किंग के विपरीत है क्योंकि प्रतीक्षा केवल फ़ंक्शन या ब्लॉक तक सीमित है, जिसका अर्थ है कि अन्य कार्य कोड के अन्य भागों में समवर्ती रूप से चल सकते हैं जबकि एक एकल फ़ंक्शन प्रतीक्षा कर रहा है।<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> अधिकांश आधुनिक भाषाओं में, async और प्रतीक्षा को कोरटाइन के रूप में कार्यान्वित किया जाता है।
}}</ref> अधिकांश आधुनिक भाषाओं में, एसिंक और प्रतीक्षा को कोरआउट के रूप में लागू किया जाता है।


== समस्याएं ==
== समस्याएं ==
एक सहयोगी रूप से मल्टीटास्क्ड सिस्टम सिस्टम पर अन्य प्रक्रियाओं को नियमित रूप से समय देने वाली प्रत्येक प्रक्रिया पर निर्भर करता है, एक खराब डिज़ाइन किया गया प्रोग्राम अपने लिए सभी CPU समय का उपभोग कर सकता है, या तो व्यापक गणना करके या [[व्यस्त प्रतीक्षा]] करके; दोनों पूरे सिस्टम को [[हैंग (कंप्यूटिंग)]] करने का कारण बनेंगे। एक [[सर्वर (कंप्यूटिंग)]] वातावरण में, यह एक ऐसा खतरा है जो पूरे वातावरण को अस्वीकार्य रूप से नाजुक बना देता है।<ref name="pcmag" /> इसके विपरीत, प्रीमेशन (कंप्यूटिंग) मल्टीटास्किंग अनुप्रयोगों को बाधित करता है और एप्लिकेशन के नियंत्रण से बाहर की अन्य प्रक्रियाओं को नियंत्रण देता है।
एक सहयोगी रूप से मल्टीटास्क्ड सिस्टम नियमित रूप से अन्य प्रक्रियाओं के लिए समय देते हुए प्रत्येक प्रक्रिया पर निर्भर करता है, एक खराब डिज़ाइन किया गया प्रोग्राम व्यापक गणना करके या प्रतीक्षा में व्यस्त होकर सभी सीपीयू समय का उपभोग कर सकता है; दोनों पूरे सिस्टम को [[हैंग (कंप्यूटिंग)|हैंग]] करने का कारण बनेंगे। एक सर्वर परिस्थिति में, यह खतरा पूरे परिस्थिति को अस्वीकार्य रूप से भंगुर बना देता है।<ref name="pcmag" />
 
[[ निगरानी घड़ी ]] का उपयोग करके सिस्टम हैंग होने की संभावना को कम किया जा सकता है, जिसे अक्सर हार्डवेयर में लागू किया जाता है; यह आमतौर पर एक [[हार्डवेयर रीसेट]] को आमंत्रित करता है।


सहकारी मल्टीटास्किंग अनुप्रयोगों के बहुत सरल कार्यान्वयन की अनुमति देता है क्योंकि उनका निष्पादन प्रक्रिया अनुसूचक द्वारा कभी भी अप्रत्याशित रूप से बाधित नहीं होता है; उदाहरण के लिए, एप्लिकेशन के अंदर विभिन्न [[सबरूटीन]] को रीएन्ट्रेंसी (कंप्यूटिंग) होने की आवश्यकता नहीं है।<ref name="classiccmp" />
इसके विपरीत, प्रीमेप्टिव मल्टीटास्किंग एप्लिकेशन को बाधित करता है और एप्लिकेशन के नियंत्रण से बाहर की अन्य प्रक्रियाओं को नियंत्रण देता है।


सिस्टम हैंग होने की संभावना को वॉचडॉग टाइमर का उपयोग करके कम किया जा सकता है, जिसे अक्सर हार्डवेयर में लागू किया जाता है; यह आम तौर पर एक [[हार्डवेयर रीसेट]] का आह्वान करता है।


कोऑपरेटिव मल्टीटास्किंग अनुप्रयोगों के बहुत सरल कार्यान्वयन की अनुमति देता है क्योंकि प्रक्रिया अनुसूचक द्वारा उनका निष्पादन कभी भी अप्रत्याशित रूप से बाधित नहीं होता है; उदाहरण के लिए, एप्लिकेशन के अंदर विभिन्न कार्यों को पुनः प्रवेश करने की आवश्यकता नहीं है।<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. 1.0 1.1 1.2 "Definition of non-preemptive multitasking". pcmag.com. Retrieved August 15, 2015.
  2. 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.
  3. "Preemptive multitasking". riscos.info. November 2, 2009. Retrieved August 15, 2015.
  4. Kerkour, Sylvain (January 25, 2022). "Async Rust: Cooperative vs Preemptive scheduling". Retrieved January 30, 2023.
  5. Skvortsov, Victor. "Python behind the scenes #12: How async/await works in Python". Retrieved January 30, 2023.