Difference between revisions of "समवर्ती कंप्यूटिंग"

From alpha
Jump to navigation Jump to search
 
(21 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{short description|Executing several computations during overlapping time periods}}
{{short description|Executing several computations during overlapping time periods}}
{{for multi|the American computer company|Concurrent Computer Corporation|a more theoretical discussion|Concurrency (computer science)}}
समवर्ती [[कम्प्यूटिंग]] गणना का एक रूप है जिसमें कई गणनाएँ समवर्ती रूप में निष्पादित की जाती हैं जो अतिव्यापक अवधि के दौरान समवर्ती गणना की प्रारंभआत पहले की जाती है।  
{{more citations needed|date=February 2014}}
{{Programming paradigms}}
समवर्ती [[कम्प्यूटिंग|गणना]] कंप्यूटिंग का एक रूप है जिसमें कई सं[[गणना]]एँ समवर्ती रूप से निष्पादित की जाती हैं।अतिव्यापक अवधि के दौरान क्रमिक रूप से अगली शुरूआत पहले की जाती है।  


यह प्रणाली की एक संपत्ति है जो एक [[कंप्यूटर प्रोग्राम]] या [[संगणक संजाल]] जहां प्रत्येक प्रक्रिया के लिए एक अलग निष्पादन बिंदु का नियंत्रण होता है। एक 'समवर्ती प्रणाली' वह है जहां एक संगणना अन्य सभी संगणनाओं को पूरा होने की प्रतीक्षा किए ही आगे बढ़ जाती हैं।<ref>''Operating System Concepts'' 9th edition, Abraham Silberschatz. "Chapter 4: Threads"</ref>समवर्ती गणना [[मॉड्यूलर प्रोग्रामिंग]] का एक रूप है। इसके [[प्रोग्रामिंग प्रतिमान]] में एक समग्र अभिकलन तथा[[अपघटन (कंप्यूटर विज्ञान)]] उप-गणनाओं में होता है जिसे समवर्ती रूप से निष्पादित किया जा सकता है। [[एडवर्ड डिजस्ट्रा]] तथा ब्रिन्च हेन्सन और सी.ए.आर. होरे ने कहा कि समवर्ती गणना के क्षेत्र में यह सम्मिलित हैं।<ref>{{Cite book |url=https://link.springer.com/book/10.1007/978-1-4757-3472-0 |title=The Origin of Concurrent Programming |year=2002 |language=en |doi=10.1007/978-1-4757-3472-0|isbn=978-1-4419-2986-0 |s2cid=44909506 |editor-last1=Hansen |editor-first1=Per Brinch }}</ref>
समवर्ती कम्प्यूटिंग प्रणाली की एक संपत्ति है जो एक [[कंप्यूटर प्रोग्राम|कंप्यूटर कार्यक्रम]] या [[संगणक संजाल]] का भाग है जहां प्रत्येक प्रक्रिया के लिए एक अलग निष्पादन बिंदु का नियंत्रण होता है। एक समवर्ती प्रणाली वह है जहां एक कम्प्यूटिंग सभी संगणनाओं को पूरा होने की प्रतीक्षा किए बिना ही आगे बढ़ जाती है तथा<ref>''Operating System Concepts'' 9th edition, Abraham Silberschatz. "Chapter 4: Threads"</ref> समवर्ती गणना नियंत्रित [[मॉड्यूलर प्रोग्रामिंग|कार्यक्रम]] का रूप है इसके [[प्रोग्रामिंग प्रतिमान]] में एक समग्र अभिकलन तथा [[अपघटन (कंप्यूटर विज्ञान)|अपघटन कंप्यूटर विज्ञान]] गणनाओं में होता है जिसे समवर्ती रूप से निष्पादित किया जाता है। [[एडवर्ड डिजस्ट्रा]] तथा ब्रिन्च हेन्सन और सी.ए.आर. होरे ने कहा कि समवर्ती गणना के क्षेत्र में नियंत्रित कार्यक्रम भी सम्मिलित हैं।<ref>{{Cite book |url=https://link.springer.com/book/10.1007/978-1-4757-3472-0 |title=The Origin of Concurrent Programming |year=2002 |language=en |doi=10.1007/978-1-4757-3472-0|isbn=978-1-4419-2986-0 |s2cid=44909506 |editor-last1=Hansen |editor-first1=Per Brinch }}</ref>




== परिचय ==
== परिचय ==
{{See also|Parallel computing}}
{{See also|समानांतर कंप्यूटिंग}}
{{multiple issues}}
समवर्ती गणना की अवधारणा [[समानांतर कंप्यूटिंग|गणना]] से संबंधित है इसलिए यह अधिक भ्रमित होती है <ref name=waza>[[Rob Pike|Pike, Rob]] (2012-01-11). "Concurrency is not Parallelism". ''Waza conference'', 11 January 2012. Retrieved from http://talks.golang.org/2012/waza.slide (slides) and http://vimeo.com/49718712 (video).</ref><ref>{{cite web
समवर्ती गणना की अवधारणा [[समानांतर कंप्यूटिंग|समानांतर गणना]] से संबंधित लेकिन विशिष्ट अवधारणा के साथ अधिकतर भ्रमित होती है <ref name=waza>[[Rob Pike|Pike, Rob]] (2012-01-11). "Concurrency is not Parallelism". ''Waza conference'', 11 January 2012. Retrieved from http://talks.golang.org/2012/waza.slide (slides) and http://vimeo.com/49718712 (video).</ref><ref>{{cite web
|url=https://wiki.haskell.org/Parallelism_vs._Concurrency
|url=https://wiki.haskell.org/Parallelism_vs._Concurrency
|title=Parallelism vs. Concurrency
|title=Parallelism vs. Concurrency
|work=Haskell Wiki
|work=Haskell Wiki
}}</ref> जबकि दोनों को समान अवधि के साथ कई प्रक्रियाओं के रूप में वर्णित किया जा सकता है। समानांतर गणना में निष्पादन एक ही भौतिक क्षण में होता है उदाहरण के लिए एक बहु-प्रोसेसर मशीन की अलग केंद्रीय प्रसंस्करण इकाई पर संगणना को गति देने के लक्ष्य के साथ-एक ([[मल्टी-कोर प्रोसेसर]]) समानांतर गणना असंभव है। एकल प्रोसेसर किसी भी क्षण (किसी भी घड़ी चक्र के दौरान) गणना कर सकता है {{efn|This is discounting parallelism internal to a processor core, such as pipelining or vectorized instructions. A one-core, one-processor ''machine'' may be capable of some parallelism, such as with a [[coprocessor]], but the processor alone is not.}} तथा इसके विपरीत समवर्ती गणना में प्रक्रिया का जीवनकाल अतिव्यापक होता है किन्तु यहाँ निष्पादन की आवश्यकता नहीं होती है। इसका लक्ष्य बाहरी दुनिया में प्रक्रियाओं को मॉडल करना है जो समवर्ती रूप से होते हैं कि एक ही समय में सर्वर तक पहुंचने वाले कई क्लाइंट तथा कई समवर्ती संचार भागों से बनी सॉफ्टवेयर प्रणाली की संरचना जटिलता से निपटने के लिए उपयोगी हो सकती है भले ही भागों को समानांतर में निष्पादित किया जा सके।<ref>{{cite book |last=Schneider |first=Fred B. |url=https://archive.org/details/onconcurrentprog0000schn |title=On Concurrent Programming |date=1997-05-06 |publisher=Springer |isbn=9780387949420 |url-access=registration}}</ref>{{rp|1}}उदाहरण के लिए समय-साझाकरण के टुकड़े के माध्यम से प्रत्येक प्रक्रिया के निष्पादन चरणों को अंतःस्थापित करके समवर्ती प्रक्रियाओं को एक कोर पर निष्पादित किया जा सकता है एक समय में केवल एक प्रक्रिया चलती है और यदि यह अपने समय के टुकड़े के दौरान पूरा नहीं होता है तो इसे रोक दिया जाता है और दूसरी प्रक्रिया शुरू होती है तथा बाद में मूल प्रक्रिया शुरू हो जाती है। इस तरह कई प्रक्रियाएं एक ही पल में निष्पादन के माध्यम से होती हैं लेकिन उस पल में केवल एक प्रक्रिया को निष्पादित किया जा सकता है।{{citation needed|date=December 2016}}समवर्ती संगणनाओं को समानांतर में निष्पादित किया जा सकता है <ref name=waza/><ref name="benari2006">{{cite book|last=Ben-Ari|first=Mordechai|title=Principles of Concurrent and Distributed Programming|publisher=Addison-Wesley|year=2006|edition=2nd|isbn=978-0-321-31283-9}}</ref> उदाहरण  प्रत्येक प्रक्रिया को एक अलग प्रोसेसर या एक नेटवर्क पर गणना वितरित करके सामान्य तौर पर समानांतर प्रोग्रामिंग के लिए भाषाएं उपकरण और तकनीकें समवर्ती प्रोग्रामिंग के लिए उपयुक्त नहीं हो सकती हैं और इसके विपरीत {{citation needed|date=December 2016}}जब एक समवर्ती प्रणाली में कार्यों को निष्पादित किया जाता है तो समय [[निर्धारण (कंप्यूटिंग)|निर्धारण]] गणना पर निर्भर करता है और कार्यों को हमेशा समवर्ती रूप से निष्पादित करने की आवश्यकता नहीं होती है। उदाहरण के लिए दिए गए दो कार्य टी1 और टी2 हैं।{{citation needed|date=December 2016}}
}}</ref> जबकि दोनों को समान अवधि के साथ कई प्रक्रियाओं के रूप में दर्शाया गया है समान्तर गणना के निष्पादन में एक भौतिक क्षण होता है उदाहरण के लिए एक बहु-प्रोसेसर मशीन केंद्रीय प्रसंस्करण इकाई में संगणना को गतिक लक्ष्य के साथ-एक [[मल्टी-कोर प्रोसेसर]] की गणना करना असंभव है लेकिन एकल प्रोसेसर किसी भी क्षण गणना कर सकता है {{efn|This is discounting parallelism internal to a processor core, such as pipelining or vectorized instructions. A one-core, one-processor ''machine'' may be capable of some parallelism, such as with a [[coprocessor]], but the processor alone is not.}} तथा इसके विपरीत समवर्ती गणना में प्रक्रिया का जीवनकाल अतिव्यापक होता है जिसकी आवश्यकता नहीं होती है इसका लक्ष्य बाहरी दुनिया की प्रक्रियाओं को नियंत्रित करना है जो समवर्ती गणना के रूप में दर्शाये गये हैं जैसे कि एक ही समय में सर्वर तक पहुंचने वाले कई क्लाइंट तथा कई समवर्ती गणना सॉफ्टवेयर से बनी संरचना प्रणाली को जटिलता से उपयोग कर सकते हैं भले ही कुछ भागों को समान्तर भाग में निष्पादित कर दिया जाए।<ref>{{cite book |last=Schneider |first=Fred B. |url=https://archive.org/details/onconcurrentprog0000schn |title=On Concurrent Programming |date=1997-05-06 |publisher=Springer |isbn=9780387949420 |url-access=registration}}</ref>{{rp|1}} समय-साझाकरण के टुकड़े के माध्यम से प्रत्येक प्रक्रिया के चरणों को अंतःस्थापित करके समवर्ती प्रक्रियाओं को एक कोर पर स्थित किया जा सकता है तथा एक समय में एक ही प्रक्रिया चल सकती है और यदि यह अपने समय को पूरा नहीं होने देती है तो इसे रोक दिया जाता है और दूसरी प्रक्रिया प्रारंभ कर दी जाती है तथा बाद में मूल प्रक्रिया प्रारंभ हो जाती है इस तरह कई प्रक्रियाएं एक ही क्षण में निष्पादन के माध्यम से होती हैं लेकिन उस क्षण में केवल एक प्रक्रिया को ही किया जा सकता है।{{citation needed|date=December 2016}}समवर्ती संगणनाओं को समानांतर में निष्पादित किया जा जाता है <ref name=waza/><ref name="benari2006">{{cite book|last=Ben-Ari|first=Mordechai|title=Principles of Concurrent and Distributed Programming|publisher=Addison-Wesley|year=2006|edition=2nd|isbn=978-0-321-31283-9}}</ref> जैसे प्रत्येक प्रक्रिया को एक अलग प्रोसेसर या एक नेटवर्क पर गणना करके समवर्ती प्रोग्रामिंग के लिए उपयुक्त नहीं किया जा सकता है और इसके विपरीत {{citation needed|date=December 2016}}जब एक समवर्ती प्रणाली में कार्यों को किया जाता है तो समय [[निर्धारण (कंप्यूटिंग)|निर्धारण]] गणना पर निर्भर करता है और कार्यों को हमेशा समवर्ती कम्प्यूटिंग की आवश्यकता नहीं होती है। उदाहरण टी1और टी2 हैं।{{citation needed|date=December 2016}}
* टी1 को टी2 या इसके विपरीत होने से पहले निष्पादित और समाप्त किया जा सकता है।
* टी1 को टी2 या इसके विपरीत होने से पहले और समाप्त किया जा सकता है।
*
*
* टी1 और टी2 को वैकल्पिक रूप से निष्पादित किया जा सकता है।  
* टी1 और टी2 को वैकल्पिक रूप से स्थित किया जा सकता है।
* टी1 और टू2 को एक ही समय पर एक साथ निष्पादित किया जा सकता है ।
* टी1 और टी2 को एक ही समय पर एक साथ स्थिर किया जा सकता है ।


अनुक्रमिक शब्द समवर्ती और समानांतर दोनों के लिए एक विलोम के रूप में प्रयोग किया जाता है जब इन्हें स्पष्ट रूप से अलग किया जाता है तो समवर्ती/अनुक्रमिक और समानांतर/सीरियल को विरोधी जोड़े के रूप में उपयोग किया जाता है।{{sfn|Patterson|Hennessy|2013|p=503}} एक कार्यबल जिसमें एक समय में एक कार्य को निष्पादित करते हैं बिना इंटरलीविंग के कार्य तब तक शुरू नहीं होता जब कि समाप्त कार्यों का एक सेट जो क्रमिक रूप से निर्धारित किया जा सकता है वह [[Serializability|क्रमबद्धता]] संगमिति नियंत्रण को सरल करता है।{{citation needed|date=December 2016}}
अनुक्रमिक शब्द समवर्ती और समानांतर दोनों के लिए एक विलोम के रूप में प्रयोग किया जाता है जब इन्हें स्पष्ट रूप से अलग किया जाता है जिन्हें समवर्ती अनुक्रमिक और समानांतर को विरोधी जोड़े के रूप में उपयोग किया जाता है।{{sfn|Patterson|Hennessy|2013|p=503}} इस कार्य को एक ही समय में किया जाता है बिना अंतपत्रण का कार्य तब तक प्रारंभ नहीं होता जब तक समाप्त कार्यों को क्रमिक रूप से निर्धारित किया जाए [[Serializability|क्रमबद्धता]] ही संगमिति नियंत्रण को सरल करता है।{{citation needed|date=December 2016}}




=== साझा संसाधनों तक पहुंच का समन्वय करना ===
=== साझा संसाधनों तक पहुंचने का समन्वय करना ===
समवर्ती कार्यक्रमों की बनावट करने में मुख्य चुनौती समवर्ती नियंत्रण है। विभिन्न गणतीय निष्पादनों के बीच बातचीत या संचार का सही क्रम सुनिश्चित करना और निष्पादन के बीच साझा किए गए संसाधनों तक पहुंच का समन्वय करना <ref name=benari2006/>संभावित समस्याओं में दौड़ की शर्त सॉफ्टवेयर [[गतिरोध]] और [[संसाधन भुखमरी]] सम्मिलित हैं। उदाहरण के लिए साझा संसाधन द्वारा दर्शाए गए चेकिंग खाते से निकासी करने के लिए निम्नलिखित एल्गोरिथम पर विचार करें ।
समवर्ती कार्यक्रमों की बनावट में मुख्य चुनौती समवर्ती नियंत्रण की है जो विभिन्न गणतीय निष्पादनों के बीच बातचीत या संचार का सही क्रम सुनिश्चित करता है तथा निष्पादन के बीच साझा किए गए संसाधनों तक पहुंच का समन्वय करना ही <ref name=benari2006/>संभावित समस्याओं में [[गतिरोध]], [[संसाधन भुखमरी|संसाधन और भुखमरी]] सम्मिलित करता है साझा संसाधन द्वारा दर्शाए गए चेकिंग खाते से निकासी करने के लिए निम्नलिखित विधि हैं।  
 
वाक्यविन्यास लैंग = सीपीपी लाइन हाइलाइट = 3,5 बूल निकासी
 
 
कल्पना करना बैलेंस<code>=500</code>और दो समवर्ती धागे हैं साथ ही<code>(300)</code> और <code>(350)</code>यदि दोनों ऑपरेशनों में लाइन 3 को लाइन 5 से पहले निष्पादित किया जाता है तो दोनों ऑपरेशन उसे खोज लेंगे बैलेंस<code>= एक साथ</code> का मूल्यांकन करता है और निकासी राशि घटाने के लिए निष्पादन करता है। जबकि दोनों प्रक्रियाएं अपनी निकासी करती हैं इसलिए निकाली गई कुल राशि मूल शेष राशि से अधिक होगी साझा संसाधनों के साथ इस तरह की समस्याएं संगमिति नियंत्रण या [[गैर-अवरुद्ध एल्गोरिदम]] के उपयोग से लाभान्वित होती हैं।


=== लाभ ===
=== लाभ ===
{{Unreferenced section}}
समवर्ती गणना के निम्नलिखित लाभ हैं-
समवर्ती गणना के लाभों में सम्मिलित हैं-
 
* कार्यक्रम थ्रूपुट में वृद्धि - एक समवर्ती कार्यक्रम के समानांतर निष्पादन गुस्ताफसन के नियम के अनुसार प्रोसेसर की संख्या के अनुपात में आनुपातिक रूप से बढ़ने के लिए एक निश्चित समय में पूर्ण किए गए कार्यों की संख्या की अनुमति देता है।
* इनपुट/आउटपुट के लिए उच्च प्रतिक्रियात्मकता, इनपुट/आउटपुट गहन कार्यक्रम अधिकतर इनपुट या आउटपुट संचालन के पूरा होने की प्रतीक्षा करते हैं। समवर्ती गणना उस समय की अनुमति देता है जो किसी अन्य कार्य के लिए उपयोग किए जाने की प्रतीक्षा में व्यतीत होगा।{{citation needed|date=December 2016}}
* अधिक उपयुक्त कार्यक्रम संरचना-कुछ समस्याएं और समस्या डोमेन समवर्ती कार्यों या प्रक्रियाओं के रूप में प्रतिनिधित्व के लिए उपयुक्त हैं।{{citation needed|date=December 2016}}


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


== मॉडल ==
== मॉडल ==


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


इनपुट/आउटपुट स्वचालित इनपुट/आउटपुट ऑटोमेटा को 1987 में पेश किया गया था।
इनपुट आउटपुट स्वचालित रूप से 1987 में पेश किया गया था।


समवर्ती प्रणालियों के व्यवहार का वर्णन करने के लिए लामपोर्ट के [[क्रियाओं का अस्थायी तर्क]] टीएलए और गणितीय मॉडल जैसे [[ट्रेस सिद्धांत]] और [[अभिनेता मॉडल सिद्धांत]] जैसे तर्क भी विकसित किए गए हैं।
समवर्ती प्रणालियों के व्यवहार का वर्णन करने के लिए लामपोर्ट के [[क्रियाओं का अस्थायी तर्क]] टीएलए और गणितीय मॉडल जैसे [[ट्रेस सिद्धांत]] और [[अभिनेता मॉडल सिद्धांत]] जैसे तर्क भी विकसित किए गए हैं।
Line 53: Line 41:


=== संगति मॉडल ===
=== संगति मॉडल ===
{{main|Consistency model}}
{{main|संगति मॉडल}}
समवर्ती गणना की भाषा और बहुगुणक कार्यक्रम में एक संगति मॉडल होना चाहिए। संगत मॉडल नियमों को परिभाषित करता है कि कंप्यूटर डेटा संग्रहण पर संचालन कैसे होता है और परिणाम कैसे उत्पन्न होते हैं।
समवर्ती गणना की भाषा और बहुगुणक कार्यक्रम में एक संगति मॉडल होना चाहिए जो संगत मॉडल नियमों को परिभाषित करता है कि कंप्यूटर डेटा संग्रहण पर संचालन कैसे होता है और परिणाम कैसे उत्पन्न होते हैं। एक [[लेस्ली लामपोर्ट]] का [[अनुक्रमिक स्थिरता]] कार्यक्रम की संपत्ति है [[अनुक्रमिक स्थिरता|स्थिरता]] कार्यक्रम के समान परिणाम उत्पन्न करता है जो विशेष रूप से एक प्रोग्राम [[अनुक्रमिक स्थिरता|कार्यक्रम]] के समान है जैसे सभी प्रोसेसर के संचालन को कुछ अनुक्रमिक क्रम में स्थित किया गया था और प्रत्येक व्यक्तिगत प्रोसेसर के संचालन के इस क्रम में निर्दिष्ट किया गया है।<ref>{{cite journal|last=Lamport|first=Leslie|title=How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs|journal=IEEE Transactions on Computers|date=1 September 1979|volume=C-28|issue=9|pages=690–691|doi=10.1109/TC.1979.1675439|s2cid=5679366}}</ref>
 
पहले स्थिरता मॉडल में से एक [[लेस्ली लामपोर्ट]] का [[अनुक्रमिक स्थिरता]] मॉडल था। अनुक्रमिक स्थिरता एक कार्यक्रम की संपत्ति है कि इसका निष्पादन अनुक्रमिक कार्यक्रम के समान परिणाम उत्पन्न करता है। विशेष रूप से एक प्रोग्राम यदि किसी निष्पादन के परिणाम के समान हैं जैसे कि सभी प्रोसेसर के संचालन को कुछ अनुक्रमिक क्रम में निष्पादित किया गया था और प्रत्येक व्यक्तिगत प्रोसेसर के संचालन इस क्रम में उसके द्वारा निर्दिष्ट क्रम में दिखाई देते हैं।<ref>{{cite journal|last=Lamport|first=Leslie|title=How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs|journal=IEEE Transactions on Computers|date=1 September 1979|volume=C-28|issue=9|pages=690–691|doi=10.1109/TC.1979.1675439|s2cid=5679366}}</ref>
 
{{see also|Relaxed sequential}}
 
 
== कार्यान्वयन ==
== कार्यान्वयन ==
{{expand section|date=February 2014}}
समवर्ती कार्यक्रमों को लागू करने के लिए कई अलग-अलग तरीकों का उपयोग किया जाता है जो प्रत्येक गणितीय निष्पादन की [[प्रक्रिया (कंप्यूटर विज्ञान)|प्रक्रिया कंप्यूटर विज्ञान]] के रूप में लागू की जाती है गणितीय प्रक्रियाओं को धागे के रूप में एक संचालन प्रणाली के भीतर जोड़ते हैं।
समवर्ती कार्यक्रमों को लागू करने के लिए कई अलग-अलग तरीकों का उपयोग किया जा सकता है जैसे प्रत्येक गणितीय निष्पादन को एक [[प्रक्रिया (कंप्यूटर विज्ञान)]] के रूप में लागू करना या गणितीय प्रक्रियाओं को धागे के एक सेट के रूप में एक संचालन प्रणाली प्रक्रिया के भीतर लागू करना होगा।


===बातचीत और संचार ===
===बातचीत और संचार ===
कुछ समवर्ती गणना प्रणालियों में समवर्ती घटकों के बीच संचार कार्यक्रम छिपा होता है जबकि अन्य में इसे स्पष्ट रूप से नियंत्रित किया जाना चाहिए स्पष्ट संचार को दो वर्गों में विभाजित किया जा सकता है।  
कुछ समवर्ती गणना प्रणालियों में समवर्ती घटकों के बीच संचार कार्यक्रम छिपा होता है जबकि इसे स्पष्ट रूप से नियंत्रित किया जाना चाहिए संचार को दो वर्गों में विभाजित किया जाता है।  


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


[[संदेश देना]] सम्प्रेषण समवर्ती घटक संदेश पासिंग ([[एमपीआई खोलें|एमपीआई)]] [[स्काला (प्रोग्रामिंग भाषा)|स्काला]] , [[Erlang (प्रोग्रामिंग भाषा)|एरलांग(गणितीय भाषा)]] और [[ओकैम (प्रोग्रामिंग भाषा)|ओकैम (गणितीय भाषा)]] द्वारा संचार करते हैं। संदेशों का आदान-प्रदान समकालिक रूप से किया जा सकता है या एक समकालिक मिलनसार शैली का उपयोग कर सकता है जिसमें प्रेषक संदेश प्राप्त होने तक ब्लॉक करता है। समकालिक संदेश पास करना विश्वसनीय या अविश्वसनीय हो सकता है। साझा-स्मृति संगमिति की तुलना में संदेश-पासिंग संगमिति के बारे में तर्क करना कहीं अधिक आसान होता है और इसे आमतौर पर समवर्ती गणना का अधिक मजबूत रूप माना जाता है।{{Citation needed|date=May 2013}} संदेश-पासिंग प्रणाली को समझने और उसका विश्लेषण करने के लिए विभिन्न प्रकार के गणितीय सिद्धांत उपलब्ध हैं जिनमें [[अभिनेता मॉडल]] और विभिन्न प्रक्रिया गणना सम्मिलित हैं। साझा स्मृति [[कैश सुसंगतता]] के साथ या उसके बिना संदेश पासिंग को [[सममित बहु प्रसंस्करण]] के माध्यम से कुशलतापूर्वक कार्यान्वित किया जा सकता है।
[[संदेश देना]] सम्प्रेषण समवर्ती घटक संदेश अस्थायी [[एमपीआई खोलें|एमपीआई]] [[Erlang (प्रोग्रामिंग भाषा)|एरलांग गणितीय भाषा]] और [[ओकैम (प्रोग्रामिंग भाषा)|ओकैम गणितीय भाषा]] द्वारा संचार करते हैं। संदेशों का आदान-प्रदान समकालिक रूप से किया जा सकता है तथा एक समकालिक मिलनसार शैली का उपयोग किया जाता है जिसमें प्रेषक संदेश प्राप्त होने तक एक क्षेत्र में रहता है समकालिक संदेश पास करना विश्वसनीय या अविश्वसनीय हो सकता है तथा साझा-स्मृति संगमिति की तुलना में संदेश अस्थायी संगमिति के बारे में तर्क करना अधिक आसान होता है और इसे समवर्ती गणना का अधिक मजबूत रूप माना जाता है।{{Citation needed|date=May 2013}} संदेश अस्थायी प्रणाली को समझने और उसका विश्लेषण करने के लिए विभिन्न प्रकार के गणितीय सिद्धांत उपलब्ध कराये जाते हैं जिनमें [[अभिनेता मॉडल]] और विभिन्न प्रक्रिया गणना सम्मिलित हैं साझा स्मृति [[कैश सुसंगतता|सुसंगतता]] के साथ या उसके बिना संदेश अस्थायी [[सममित बहु प्रसंस्करण]] के माध्यम से कुशलतापूर्वक कार्यान्वित किया जा सकता है।


साझा की गई स्मृति और संदेश पास करने वाली संगमिति में अलग-अलग प्रदर्शन विशेषताएँ होती हैं। आमतौर पर संदेश पासिंग प्रणाली में प्रति-प्रक्रिया स्मृति ओवरहेड और कार्य स्विचिंग ओवरहेड कम होता है लेकिन संदेश पासिंग का ओवरहेड प्रक्रिया कॉल के दौरान अधिक होता है। ये अंतर अधिकतर अन्य प्रदर्शन कारकों से अभिभूत होते हैं।
साझा की गई स्मृति और संदेश पास करने वाली संगमिति में अलग-अलग विशेषताएँ होती हैं संदेश में अस्थायी प्रणाली की स्मृति में ओवरहेड और कार्य स्विचिंग ओवरहेड कम होता है लेकिन संदेश अस्थायी ओवरहेड प्रक्रिया कॉल के दौरान अधिक होता है ये अंतर अधिकतर अन्य प्रदर्शन कारकों से अभिभूत होते हैं।


== इतिहास ==
== इतिहास ==
19वीं और 20वीं सदी की शुरुआत में रेलमार्ग और [[टेलीग्राफी]] पर किए गए पहले से समवर्ती गणना विकसित हुई और कुछ शर्तें इस अवधि की हैं जैसे कि संकेत से प्रकट करना ये एक ही रेल प्रणाली पर कई ट्रेनों को संभालने के तरीके और तारों के एक सेट पर कई प्रसारणों को कैसे संभालना है जैसे समय-विभाजन बहुसंकेतन 1870 के दशक के रूप में है।  
19वीं और 20वीं सदी की आरंभ में रेलमार्ग और [[टेलीग्राफी]] पर की गयी  तथा समवर्ती गणना विकसित हुई और कुछ शर्तें इसमें इस अवधि की हैं जैसे कि संकेत से प्रकट करना ये एक ही रेल प्रणाली पर कई ट्रेनों को संभालने के तौरतरीके के एक सेट पर कई प्रसारणों को कैसे संभालना है जैसे समय-विभाजन बहुसंकेतन 1870 के दशक के रूप में है।  


समवर्ती प्रारूप का अकादमिक अध्ययन 1960 के दशक में शुरू हुआ था {{Harvtxt}}पारस्परिक बहिष्करण की पहचान करने और हल करने वाला इस क्षेत्र का पहला पेपर होने का श्रेय था।<ref>{{Citation | url=http://www.podc.org/influential/2002.html | title=PODC Influential Paper Award: 2002 | work=ACM Symposium on Principles of Distributed Computing | access-date=2009-08-24}}</ref>
समवर्ती प्रारूप का अकादमिक अध्ययन 1960 के दशक में प्रारंभ हुआ था समवर्ती कम्प्यूटिंग की पहचान करने तथा पेपर हल करने का यह पहला क्षेत्र था।<ref>{{Citation | url=http://www.podc.org/influential/2002.html | title=PODC Influential Paper Award: 2002 | work=ACM Symposium on Principles of Distributed Computing | access-date=2009-08-24}}</ref>




== व्यापकता ==
== व्यापक ==
संगणना व्यापक है एक चिप निम्न-स्तरीयर हार्डवेयर से लेकर विश्वव्यापी नेटवर्क तक होती है। उदाहरण -
संगणना व्यापक है जिसमें एक चिप निम्न-स्तरीयर हार्डवेयर से लेकर विश्वव्यापी नेटवर्क तक होती है। उदाहरण -
 
गणितीय भाषा स्तर पर। 


गणितीय भाषा स्तर पर।
* [[चैनल (प्रोग्रामिंग)|गणितीय चैनल।]]
* [[चैनल (प्रोग्रामिंग)|गणितीय चैनल।]]
* [[Coroutine|कॉरटीन।]]
* [[Coroutine|कॉरटीन।]]
Line 89: Line 71:


संचालन प्रणाली स्तर पर।  
संचालन प्रणाली स्तर पर।  
* [[कंप्यूटर मल्टीटास्किंग]] जिसमें [[सहकारी मल्टीटास्किंग]] और [[प्रीमेप्टिव मल्टीटास्किंग]] दोनों सम्मिलित हैं।  
* [[कंप्यूटर मल्टीटास्किंग]] जिसमें [[सहकारी मल्टीटास्किंग]] और प्रीमेटिव [[प्रीमेप्टिव मल्टीटास्किंग|मल्टीटास्किंग]] दोनों सम्मिलित हैं।  
** समय साझा जिसनेे समवर्ती उपयोग के साथ नौकरियों के अनुक्रमिक बैच प्रसंस्करण को बदल दिया।  
** समय साझा जिसनेे समवर्ती उपयोग के साथ नौकरियों के अनुक्रमिक बैच प्रसंस्करण को बदल दिया।  
* गणितीय [[प्रक्रिया (कंप्यूटिंग)|प्रक्रिया।]]
* गणितीय [[प्रक्रिया (कंप्यूटिंग)|प्रक्रिया।]]
* [[थ्रेड (कंप्यूटिंग)|थ्रेड गणितीय।]]
* [[थ्रेड (कंप्यूटिंग)|गणितीय धागे।]]


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


=={{anchor|Concurrent programming languages|Languages supporting concurrent programming}}समवर्ती प्रोग्रामिंग का समर्थन करने वाली भाषाएं ==
=={{anchor|Concurrent programming languages|Languages supporting concurrent programming}}समवर्ती गणना का समर्थन करने वाली भाषाएं ==
<!-- This section is linked from [[occam (programming language)]] and [[COPL]] -->
<!-- This section is linked from [[occam (programming language)]] and [[COPL]] -->
[[समवर्ती प्रोग्रामिंग भाषाओं की सूची]] प्रोग्रामिंग भाषाएं हैं जो समवर्ती (कंप्यूटर विज्ञान) के लिए भाषा निर्माण का उपयोग करती हैं। इन निर्माणों में थ्रेड (कंप्यूटर विज्ञान) | मल्टी-थ्रेडिंग, वितरित कंप्यूटिंग के लिए समर्थन, [[संदेश पासिंग प्रोग्रामिंग]], [[बंटवारे]] ([[समानांतर रैंडम एक्सेस मशीन]] सहित) या फ्यूचर्स और वादे शामिल हो सकते हैं। ऐसी भाषाओं को कभी-कभी समवर्ती-उन्मुख भाषाओं या संगामिति-उन्मुख प्रोग्रामिंग भाषाओं (COPL) के रूप में वर्णित किया जाता है।<ref name="armstrong2003">{{cite web|title=Making reliable distributed systems in the presence of software errors|last1=Armstrong|first1=Joe|year=2003|url=http://www.diva-portal.org/smash/get/diva2:9492/FULLTEXT01.pdf}}</ref>
[[समवर्ती प्रोग्रामिंग भाषाओं की सूची|समवर्ती गणना भाषाओं की सूची]] गणितीय भाषाएं हैं जो समवर्ती के लिए भाषा निर्माण का उपयोग करती हैं। इन निर्माणों में थ्रेड मल्टी-थ्रेडिंग वितरित गणना के लिए समर्थन [[संदेश पासिंग प्रोग्रामिंग|संदेश अस्थायी गणितीय]] [[बंटवारे]] या भविष्य और वादे में सम्मिलित हो सकते हैं। ऐसी भाषाओं को कभी-कभी समवर्ती-उन्मुख भाषाओं या संगमिति-उन्मुख प्रोग्रामिंग भाषाओं सीओपीएल के रूप में वर्णित किया जाता है।<ref name="armstrong2003">{{cite web|title=Making reliable distributed systems in the presence of software errors|last1=Armstrong|first1=Joe|year=2003|url=http://www.diva-portal.org/smash/get/diva2:9492/FULLTEXT01.pdf}}</ref>आज सबसे अधिक उपयोग की जाने वाली गणितीय भाषा के लिए विशिष्ट हैं जावा सी शार्प मॉनिटर द्वारा प्रदान की गई लॉकिंग के साथ ये दोनों भाषाएँ मौलिक रूप से एक साझा-स्मृति समवर्ती मॉडल का उपयोग करती हैं अंतर्निहित साझा-स्मृति मॉडल के शीर्ष पर लागू किए जा सकते हैं और उन भाषाओं में से जो एक संदेश-संचारी संगमिति मॉडल का उपयोग करती हैं एरलांग वर्तमान में उद्योग में सबसे अधिक व्यापक रूप से उपयोग की जाती है। कई समवर्ती प्रोग्रामिंग भाषाओं को उत्पादन के उपयोग के लिए भाषाओं के लिए अनुसंधान भाषाओं के रूप में विकसित किया गया है जबकि पिछले 20 वर्षों में एरलैैंग [[लिम्बो (प्रोग्रामिंग भाषा)|लिम्बो भाषा]] और गणितीय भाषा जैसी भाषाओं ने कई बार औद्योगिक के रूप में देखा है। समवर्ती सुविधाओं का उपयोग करने या प्रदान करने वाली भाषाओं की गैर-विस्तृत सूची इस प्रकार है-
आज, सबसे अधिक उपयोग की जाने वाली प्रोग्रामिंग लैंग्वेज जिनमें कंसीडरेंसी के लिए विशिष्ट निर्माण हैं, वे हैं जावा (प्रोग्रामिंग लैंग्वेज) और सी शार्प (प्रोग्रामिंग लैंग्वेज)|सी#। मॉनिटर (सिंक्रनाइज़ेशन) द्वारा प्रदान की गई लॉकिंग के साथ ये दोनों भाषाएँ मौलिक रूप से एक साझा-मेमोरी समवर्ती मॉडल का उपयोग करती हैं (हालाँकि संदेश-पासिंग मॉडल अंतर्निहित साझा-मेमोरी मॉडल के शीर्ष पर लागू किए जा सकते हैं और किए जा सकते हैं)। उन भाषाओं में से जो एक संदेश-संचारी संगामिति मॉडल का उपयोग करती हैं, एरलांग (प्रोग्रामिंग भाषा) शायद वर्तमान में उद्योग में सबसे अधिक व्यापक रूप से उपयोग की जाती है।{{Citation needed|date=August 2010}}
कई समवर्ती प्रोग्रामिंग भाषाओं को उत्पादन के उपयोग के लिए भाषाओं के बजाय अनुसंधान भाषाओं (जैसे पिक्चर (प्रोग्रामिंग भाषा)) के रूप में विकसित किया गया है। हालाँकि, पिछले 20 वर्षों में Erlang (प्रोग्रामिंग भाषा), [[लिम्बो (प्रोग्रामिंग भाषा)]], और occam (प्रोग्रामिंग भाषा) जैसी भाषाओं ने कई बार औद्योगिक उपयोग देखा है। समवर्ती प्रोग्रामिंग सुविधाओं का उपयोग करने या प्रदान करने वाली भाषाओं की गैर-विस्तृत सूची:


* एडा (प्रोग्रामिंग लैंग्वेज) - सामान्य उद्देश्य, संदेश भेजने और मॉनिटर आधारित संगामिति के लिए मूल समर्थन के साथ
* गणितीय भाषा का सामान्य उद्देश्य संदेश भेजने और मॉनिटर आधारित संगमिति के लिए मूल समर्थन का प्रयोग करना।
* एलेफ (प्रोग्रामिंग लैंग्वेज) - समवर्ती, थ्रेड्स और मैसेज पासिंग के साथ, [[बेल लैब्स से प्लान 9]] के शुरुआती संस्करणों में [[सिस्टम प्रोग्रामिंग भाषा]] लिए
* एलएएफ समवर्ती थ्रेड्स और संदेश पासिंग के साथ, [[बेल लैब्स से प्लान 9]] के आरंभी संस्करणों में प्रणाली [[सिस्टम प्रोग्रामिंग भाषा|गणितीय भाषा]] के लिए।
* ऐलिस (प्रोग्रामिंग लैंग्वेज) - स्टैंडर्ड एमएल का विस्तार, फ्यूचर्स के माध्यम से कंसीडर के लिए समर्थन जोड़ता है
* एएलएस मानक एमएल का विस्तार भविष्य के माध्यम से कंसीडर के लिए समर्थन जोड़ता है।
* [[Ateji PX]]- π-कैलकुलस से प्रेरित समानांतर प्रिमिटिव के साथ जावा (प्रोग्रामिंग लैंग्वेज) का विस्तार
* [[Ateji PX|पीएक्स]] पाई गणना से प्रेरित समानांतर प्रिमिटिव के साथ जावा भाषा का विस्तार।
* [[एक्सम (प्रोग्रामिंग भाषा)]] - डोमेन विशिष्ट, समवर्ती, अभिनेता मॉडल पर आधारित और सी-जैसे सिंटैक्स का उपयोग करके .NET कॉमन लैंग्वेज रनटाइम
* [[एक्सम (प्रोग्रामिंग भाषा)|एक्सएम]] डोमेन विशिष्ट समवर्ती अभिनेता मॉडल पर आधारित सी-जैसे सिंटैक्स का उपयोग करके एनईटी की सामान्य भाषा।
* [[बीएमडीएफएम]]—बाइनरी मॉड्यूलर डाटाफ्लो मशीन
* [[बीएमडीएफएम]]—बाइनरी मॉड्यूलर डाटाफ्लो मशीन।
* [[सी ++]] - एसटीडी :: थ्रेड
* [[सी ++|सी]] एसटीडी थ्रेड।
* सीω (सी ओमेगा)—अनुसंधान के लिए, सी# का विस्तार करता है, अतुल्यकालिक संचार का उपयोग करता है
* सी ओमेगा अनुसंधान सी का विस्तार करता है समकालिक संचार का उपयोग करता है।
* सी शार्प (प्रोग्रामिंग लैंग्वेज) | सी#—लॉक, यील्ड का उपयोग कर समवर्ती कंप्यूटिंग का समर्थन करता है, संस्करण 5.0 एसिंक्स और प्रतीक्षित कीवर्ड पेश किए जाने के बाद से भी
* सी तेज सी ताला उपज का उपयोग कर समवर्ती गणना का समर्थन करता है संसककरण 5.0 एसिंक्स और प्रतीक्षित संपर्क पेश किए जाते हैं।
* [[क्लोजर]]- [[जावा (सॉफ्टवेयर प्लेटफॉर्म)]] प्लेटफॉर्म पर [[लिस्प (प्रोग्रामिंग भाषा)]] की आधुनिक, [[कार्यात्मक प्रोग्रामिंग]] बोली
*
* [[समवर्ती स्वच्छ]]- कार्यात्मक प्रोग्रामिंग, [[हास्केल (प्रोग्रामिंग भाषा)]] के समान
*   [[समवर्ती संग्रह]] (सीएनसी) डेटा और नियंत्रण के प्रवाह को स्पष्ट रूप से परिभाषित करके स्मृति मॉडल से स्वतंत्र अंतर्निहित समानांतरता प्राप्त करता है।
* [[समवर्ती संग्रह]] (CnC) - डेटा और नियंत्रण के प्रवाह को स्पष्ट रूप से परिभाषित करके मेमोरी मॉडल से स्वतंत्र अंतर्निहित समानांतरता प्राप्त करता है
* [[समवर्ती हास्केल]] आलसी शुद्ध कार्यात्मक भाषा साझा स्मृति पर समवर्ती प्रक्रियाओं का संचालन करती है।
* [[समवर्ती हास्केल]]-आलसी, शुद्ध कार्यात्मक भाषा साझा स्मृति पर समवर्ती प्रक्रियाओं का संचालन करती है
* [[समवर्ती एमएल]] [[मानक एमएल]] का समवर्ती विस्तार।
* [[समवर्ती एमएल]] - [[मानक एमएल]] का समवर्ती विस्तार
*
* [[समवर्ती पास्कल]]—पर ब्रिन्च हेन्सन द्वारा
* [[समवर्ती पास्कल]] पर ब्रिन्च हेन्सन द्वारा।
* [[करी (प्रोग्रामिंग भाषा)]]
* [[करी (प्रोग्रामिंग भाषा)|करी गणितीय भाषा।]]
* [[डी (प्रोग्रामिंग भाषा)]] - [[बहु-प्रतिमान प्रोग्रामिंग भाषा]] | समवर्ती प्रोग्रामिंग (अभिनेता मॉडल) के लिए स्पष्ट समर्थन के साथ बहु-प्रतिमान प्रणाली प्रोग्रामिंग भाषा
* [[डी (प्रोग्रामिंग भाषा)|डी गणितीय भाषा]] [[बहु-प्रतिमान प्रोग्रामिंग भाषा|बहु-प्रतिमान भाषा]] समवर्ती भाषा के लिए स्पष्ट समर्थन के साथ बहु-प्रतिमान प्रणाली गणितीय भाषा।
* [[ई (प्रोग्रामिंग भाषा)]] - डेडलॉक्स को रोकने के लिए वादों का उपयोग करता है
* [[ई (प्रोग्रामिंग भाषा)|ई गणितीय भाषा]] डेडलॉक्स को रोकने के लिए वादों का उपयोग करता है।
* [[ECMAScript]]—अतुल्यकालिक संचालन के लिए वादों का उपयोग करता है
* [[ECMAScript|ईसीएमए लिखी कहानी]] समकालिक संचालन के लिए वादों का उपयोग करता है।
* [[एफिल (प्रोग्रामिंग भाषा)]] - अनुबंध द्वारा डिजाइन की अवधारणाओं के आधार पर अपने [[स्कूप (सॉफ्टवेयर)]] तंत्र के माध्यम से
* [[एफिल (प्रोग्रामिंग भाषा)|एफिल भाषा]] अनुबंध द्वारा बनावट की अवधारणाओं के आधार पर अपने [[स्कूप (सॉफ्टवेयर)]] तंत्र के माध्यम ।
* इलीक्सिर (प्रोग्रामिंग लैंग्वेज)—डायनामिक और फंक्शनल मेटा-प्रोग्रामिंग अवेयर लैंग्वेज एरलैंग वीएम पर चल रही है।
* इलीक्सिर भाषा निर्देशांक और काल्पनिक मेटा-भाषा जागरूक भाषा प्रक्रिया वीएम पर चल रही है।
* एरलांग (प्रोग्रामिंग भाषा) - बिना किसी साझा किए अतुल्यकालिक संदेश का उपयोग करता है
* एरलांग भाषा बिना किसी साझा किए समकालिक संदेश का उपयोग करता है।
* FAUST (प्रोग्रामिंग लैंग्वेज) - सिग्नल प्रोसेसिंग के लिए रियल-टाइम फंक्शनल, कंपाइलर [[OpenMP]] या एक विशिष्ट Cilk#Work-stealing|work-stealing शेड्यूलर के माध्यम से स्वचालित समानांतरकरण प्रदान करता है
* एफयूटीएस भाषा इशारा स्वरूप के लिए वास्तविक समय  [[OpenMP|खुलाएमपी]] या एक विशिष्ट शेड्यूलर के माध्यम से स्वचालित समानांतरण प्रदान करता है।
* [[फोरट्रान]]-कोएरे फोरट्रान और डू समवर्ती फोरट्रान 2008 मानक का हिस्सा हैं
* [[फोरट्रान]]-कोएरे फोरट्रान और डू समवर्ती फोरट्रान 2008 मानक का हिस्सा है।  
* गो (प्रोग्रामिंग लैंग्वेज) - सिस्टम प्रोग्रामिंग के लिए, एक समवर्ती प्रोग्रामिंग मॉडल के साथ संचार अनुक्रमिक प्रक्रियाओं पर आधारित है
* भाषा प्रणाली गणना के लिए एक समवर्ती मॉडल के साथ संचार अनुक्रमिक प्रक्रियाओं पर आधारित है।
* [[हास्केल प्रोग्रामिंग भाषा]] - समवर्ती और समानांतर कार्यात्मक प्रोग्रामिंग भाषा<ref> Marlow, Simon (2013) Parallel and Concurrent Programming in Haskell : Techniques for Multicore and Multithreaded Programming {{ISBN|9781449335946}}</ref>
* [[हास्केल प्रोग्रामिंग भाषा|हास्केल गणितीय भाषा]] समवर्ती और समानांतर कार्यात्मक भाषा। <ref> Marlow, Simon (2013) Parallel and Concurrent Programming in Haskell : Techniques for Multicore and Multithreaded Programming {{ISBN|9781449335946}}</ref>
* ह्यूम (प्रोग्रामिंग लैंग्वेज) - सीमित स्थान और समय के वातावरण के लिए कार्यात्मक, समवर्ती, जहां ऑटोमेटा प्रक्रियाओं को सिंक्रोनस चैनल पैटर्न और संदेश पासिंग द्वारा वर्णित किया जाता है
* ह्यूम भाषा सीमित स्थान और समय के वातावरण के लिए कार्यात्मक समवर्ती जहां ऑटोमेटा प्रक्रियाओं को सिंक्रोनस चैनल पैटर्न और संदेश पासिंग द्वारा वर्णित किया जाता है।
* Io (प्रोग्रामिंग भाषा)—अभिनेता-आधारित संगामिति
* लो भाषा अभिनेता आधारित संगमिति।
* [[जानूस (समवर्ती बाधा प्रोग्रामिंग भाषा)]] - तार्किक चर, बैग चैनलों के लिए अलग-अलग पूछने वाले और बताने वाले; विशुद्ध रूप से घोषणात्मक है
* [[जानूस (समवर्ती बाधा प्रोग्रामिंग भाषा)|जानूस समवर्ती बाधा भाषा]] तार्किक चर बैग चैनलों के लिए अलग-अलग पूछने वाले और बतानेे वाले विशुद्ध रूप से घोषणात्मक है।
* जावा (प्रोग्रामिंग भाषा) - थ्रेड क्लास या रननेबल इंटरफ़ेस
*
* [[जूलिया (प्रोग्रामिंग भाषा)]] - समवर्ती प्रोग्रामिंग आदिम: कार्य, async-प्रतीक्षा, चैनल।<!--parallel programming primitives: adding physical processes, remote call, spawn, @parallel macro and pmap
* [[जूलिया (प्रोग्रामिंग भाषा)|जूलिया गणितीय भाषा]] समवर्ती प्रोग्रामिंग कार्य, एएसऑवाईएनसी प्रतीक्षा चैनल है।<ref>https://juliacon.talkfunnel.com/2015/21-concurrent-and-parallel-programming-in-julia Concurrent and Parallel programming in Julia</ref>
Parallelism provided in library land such as MPI.jl--><ref>https://juliacon.talkfunnel.com/2015/21-concurrent-and-parallel-programming-in-julia Concurrent and Parallel programming in Julia</ref>
* [[जावास्क्रिप्ट]] [[वेब कार्यकर्ता]] के माध्यम से एक ब्राउज़र वातावरण में भविष्य और कॉलबैक कंप्यूटर प्रोग्रामिंग है।
* [[जावास्क्रिप्ट]]—[[वेब कार्यकर्ता]]्स के माध्यम से, एक ब्राउज़र वातावरण में, फ्यूचर्स और वादे, और [[कॉलबैक (कंप्यूटर प्रोग्रामिंग)]]
* [[JoCaml|जेओकॉलम]] समवर्ती और वितरित चैनल आधारित ओकॉलम का विस्तार प्रक्रियाओं के जोड़-कलन को लागू करता है।
* [[JoCaml]]- समवर्ती और वितरित चैनल आधारित, [[OCaml]] का विस्तार, प्रक्रियाओं के जोड़-कलन को लागू करता है
* [[जावा से जुड़ें]] समवर्ती जावा गणितीय भाषा पर आधारित।
* [[जावा से जुड़ें]]- समवर्ती, जावा (प्रोग्रामिंग भाषा) भाषा पर आधारित
* [[जूल (प्रोग्रामिंग भाषा)|जूल गणितीय भाषा]] डेटा प्रवाह पर आधारित संदेश पास करके संचार करता है।
* [[जूल (प्रोग्रामिंग भाषा)]]—डेटा प्रवाह-आधारित, संदेश पास करके संचार करता है
* [[जॉयस (प्रोग्रामिंग भाषा)|जॉयस गणितीय भाषा]] समवर्ती शिक्षण समवर्ती पास्कल पर निर्मित पेर ब्रिंक हैनसेन द्वारा अनुक्रमिक प्रक्रियाओं के संचार है।
* [[जॉयस (प्रोग्रामिंग भाषा)]] - समवर्ती, शिक्षण, समवर्ती पास्कल पर निर्मित, पेर ब्रिंक हैनसेन द्वारा अनुक्रमिक प्रक्रियाओं के संचार से सुविधाओं के साथ
* [[LabVIEW|प्रयोगशाला]] ग्राफिकल डेटा प्रवाह फ़ंक्शन एक ग्राफ में नहीं होते हैं डेटा नोड्स के बीच तार होते हैं वस्तु-उन्मुख भाषा सम्मिलित है।
* [[LabVIEW]]—ग्राफ़िकल, डेटा प्रवाह, फ़ंक्शन एक ग्राफ़ में नोड होते हैं, डेटा नोड्स के बीच तार होते हैं; वस्तु-उन्मुख भाषा शामिल है
* लिंबो गणितीय भाषा [[इन्फर्नो (ऑपरेटिंग सिस्टम)|इन्फर्नो]] में प्रणाली के लिए एलएफसे संबंधित है।
* लिंबो (प्रोग्रामिंग लैंग्वेज) - [[इन्फर्नो (ऑपरेटिंग सिस्टम)]] में सिस्टम प्रोग्रामिंग के लिए एलेफ (प्रोग्रामिंग लैंग्वेज) से संबंधित
* [[मल्टीलिस्प]] स्कीम सत्यापन को समानता का समर्थन करने के लिए विस्तारित किया गया है।
* [[मल्टीलिस्प]]—स्कीम (प्रोग्रामिंग लैंग्वेज) वेरिएंट को समानता का समर्थन करने के लिए विस्तारित किया गया
* [[मॉड्यूल-2]] गणितीय प्रणाली के लिए एन विर्थ द्वारा पास्कल के उत्तराधिकारी के रूप में कोरआउटिन के लिए मूल समर्थन किया गया है।
* [[मॉड्यूल-2]]—सिस्टम प्रोग्रामिंग के लिए, एन. विर्थ द्वारा पास्कल के उत्तराधिकारी के रूप में कोरआउटिन के लिए मूल समर्थन के साथ
* [[मॉड्यूल -3]] अल्गोल परिवार का आधुनिक सदस्य जिसके पास धागे सत्यापन लिए व्यापक समर्थन है।
* [[मॉड्यूल -3]]—अल्गोल परिवार का आधुनिक सदस्य जिसके पास थ्रेड्स, म्यूटेक्स, कंडीशन वेरिएबल्स के लिए व्यापक समर्थन है
* न्यूज़क्वीक अनुसंधान के लिए प्रथम श्रेणी के मूल्यों के रूप में चैनलों के साथ एलेफ के पूर्ववर्ती भाषा है।
* न्यूज़क्वीक—अनुसंधान के लिए, प्रथम श्रेणी के मूल्यों के रूप में चैनलों के साथ; एलेफ़ के पूर्ववर्ती (प्रोग्रामिंग भाषा)
* ओकैम भाषा अनुक्रमिक प्रक्रियाओं सीएसपी को संप्रेषित करके अत्यधिक प्रभावित करना।
* ओकैम (प्रोग्रामिंग लैंग्वेज) - अनुक्रमिक प्रक्रियाओं (सीएसपी) को संप्रेषित करके अत्यधिक प्रभावित
** ओकेएम पाइ ओकेएम का एक आधुनिक संस्करण जिसमें मिलनर के पाई कैलकुलस के विचार सम्मिलित हैं।
** ओकैम-π—ओकैम (प्रोग्रामिंग लैंग्वेज) का एक आधुनिक संस्करण, जिसमें मिलनर के π-कैलकुलस के विचार शामिल हैं
* ओआरजी भाषा भारी समवर्ती गैर नियतात्मक [[क्लेन बीजगणित]] पर आधारित है।
* Orc (प्रोग्रामिंग भाषा) - [[क्लेन बीजगणित]] पर आधारित भारी समवर्ती, गैर नियतात्मक
* ओज भाषा ओज-मोजार्ट-मल्टीपैराडाइम के अनुसार साझा-स्थिति और संदेश-अस्थायी संगमिति का समर्थन करता है।
* ओज़ (प्रोग्रामिंग भाषा) | ओज़-मोजार्ट-मल्टीपैराडाइम, साझा-स्थिति और संदेश-पासिंग संगामिति, और वायदा का समर्थन करता है
* पैरासेल गणितीय भाषा तंत्र उन्मुख पैरेलल पॉइंटर्स से मुक्त दौड़ की स्थिति।
* पैरासेल (प्रोग्रामिंग लैंग्वेज) - ऑब्जेक्ट-ओरिएंटेड, पैरेलल, फ्री ऑफ पॉइंटर्स, रेस कंडीशंस
* चित्रात्मक भाषा अनिवार्य रूप से मिलनर के पाई-गणना का एक निष्पादन योग्य कार्यान्वयन है।
* पिक्चर (प्रोग्रामिंग लैंग्वेज) - अनिवार्य रूप से मिलनर के π-कैलकुलस का एक निष्पादन योग्य कार्यान्वयन
*
* [[राकू (प्रोग्रामिंग भाषा)]] में डिफ़ॉल्ट रूप से थ्रेड्स, वादों और चैनलों के लिए कक्षाएं शामिल हैं<ref>{{Cite web|url=https://docs.perl6.org/language/concurrency|title=संगामिति|website=docs.perl6.org|language=en|access-date=2017-12-24}}</ref>
* [[राकू (प्रोग्रामिंग भाषा)|राकू  भाषा]] में दोष के रूप से और चैनलों के लिए कक्षाएं सम्मिलित हैं।<ref>{{Cite web|url=https://docs.perl6.org/language/concurrency|title=संगामिति|website=docs.perl6.org|language=en|access-date=2017-12-24}}</ref>
* [[पायथन (प्रोग्रामिंग भाषा)]] - थ्रेड-आधारित समानता और प्रक्रिया-आधारित समानता का उपयोग करता है <ref>[https://docs.python.org/3/library/concurrency.html Documentation » The Python Standard Library » Concurrent Execution]</ref>
* [[पायथन (प्रोग्रामिंग भाषा)|पायथन भाषा]] धागे पर आधारित समानता और प्रक्रिया-आधारित समानता का उपयोग करता है। <ref>[https://docs.python.org/3/library/concurrency.html Documentation » The Python Standard Library » Concurrent Execution]</ref>
* [[रीया (प्रोग्रामिंग भाषा)]] - साझा-कुछ भी नहीं वस्तुओं के बीच अतुल्यकालिक संदेश का उपयोग करता है
* [[रीया (प्रोग्रामिंग भाषा)|रेया गणितीय भाषा]] साझा-कुछ भी नहीं वस्तुओं के बीच अतुल्यकालिक संदेश का उपयोग करता है।
* लाल (प्रोग्रामिंग भाषा)|लाल/सिस्टम—[[रिबोल]] पर आधारित सिस्टम प्रोग्रामिंग के लिए
* लाल गणितीय भाषा लाल प्रणाली यह [[रिबोल]] पर आधारित होती है।
* [[जंग (प्रोग्रामिंग भाषा)]] - सिस्टम प्रोग्रामिंग के लिए, मूव सिमेंटिक्स के साथ मैसेज-पासिंग का उपयोग करते हुए, साझा अपरिवर्तनीय मेमोरी और साझा म्यूटेबल मेमोरी।<ref name="bblum2012">{{cite web|url=http://winningraceconditions.blogspot.com/2012/09/rust-4-typesafe-shared-mutable-state.html|title=Typesafe Shared Mutable State|last1=Blum|first1=Ben|access-date=2012-11-14|year=2012}}</ref>
* [[जंग (प्रोग्रामिंग भाषा)|जंग की भाषा]] प्रणाली प्रोग्रामिंग के साथ चाल के साथ संदेश अस्थायी रूप से उपयोग करते हुए साझा अपरिवर्तनीय स्मृति और साझा उत्परिवर्तनीय स्मृति का रूप होता है।<ref name="bblum2012">{{cite web|url=http://winningraceconditions.blogspot.com/2012/09/rust-4-typesafe-shared-mutable-state.html|title=Typesafe Shared Mutable State|last1=Blum|first1=Ben|access-date=2012-11-14|year=2012}}</ref>
* स्काला (प्रोग्रामिंग लैंग्वेज) - सामान्य उद्देश्य, सामान्य प्रोग्रामिंग पैटर्न को संक्षिप्त, सुरुचिपूर्ण और प्रकार-सुरक्षित तरीके से व्यक्त करने के लिए डिज़ाइन किया गया
*
* [[SequenceL]]-सामान्य उद्देश्य कार्यात्मक, मुख्य डिजाइन उद्देश्य प्रोग्रामिंग में आसानी, कोड स्पष्टता-पठनीयता, और मल्टीकोर हार्डवेयर पर प्रदर्शन के लिए स्वत: समानांतरकरण, और [[दौड़ की स्थिति]] से मुक्त साबित होता है
*स्काला भाषा का सामान्य उद्देश्य सामान्य प्रोग्रामिंग यथार्थता को संक्षिप्त सुरुचिपूर्ण और सुरक्षित तरीके से व्यक्त करने के लिए बनावट का प्रयोग किया गया।
* [[एसआर भाषा]]-अनुसंधान के लिए
* [[SequenceL|अनुक्रम एल]] सामान्य कार्यात्मक की मुख्य बनावट उद्देश्य प्रोग्रामिंग में आसानी, संहिता, स्पष्टता-पठनीयता, और मल्टीकोर हार्डवेयर पर प्रदर्शन के लिए स्वत: समानांतरण और [[दौड़ की स्थिति]] से मुक्त होता है।
* [[सुपरपास्कल]]-समवर्ती, शिक्षण के लिए, प्रति ब्रिन्च हैनसेन द्वारा समवर्ती पास्कल और जॉयस (प्रोग्रामिंग भाषा) पर निर्मित
* [[एसआर भाषा]]-अनुसंधान के लिए उपयुक्त होती है।
* [[स्विफ्ट (प्रोग्रामिंग भाषा)]] - अतुल्यकालिक और समानांतर कोड को संरचित तरीके से लिखने के लिए अंतर्निहित समर्थन<ref>{{cite web|url=https://docs.swift.org/swift-book/LanguageGuide/संगामिति.html|title=संगामिति|language=en|access-date=2022-12-15|year=2022}}</ref>
* [[सुपरपास्कल|सुपर पास्कल]] समवर्ती शिक्षण के लिए प्रति ब्रिन्च हैनसेन द्वारा समवर्ती पास्कल और जॉयस पर निर्मित भाषा होती है।
* [[यूनिकॉन (प्रोग्रामिंग भाषा)]]—अनुसंधान के लिए
* [[स्विफ्ट (प्रोग्रामिंग भाषा)|स्विफ्ट भाषा]] समकालिक और समानांतर संहिता को संचरित तरीके से लिखने के लिए अंतर्निहित भाषाओं का समर्थन करना पड़ता है। <ref>{{cite web|url=https://docs.swift.org/swift-book/LanguageGuide/संगामिति.html|title=संगामिति|language=en|access-date=2022-12-15|year=2022}}</ref>
* [[TNSDL]]—दूरसंचार आदान-प्रदान विकसित करने के लिए, अतुल्यकालिक संदेश पासिंग का उपयोग करता है
* [[यूनिकॉन (प्रोग्रामिंग भाषा)|यूनिकॉन भाषा]] अनुसंधान के लिए होती है।
* वीएचएसआईसी हार्डवेयर विवरण भाषा ([[वीएचडीएल]])—आईईईई एसटीडी-1076
*
* XC (प्रोग्रामिंग भाषा) - [[XMOS]] द्वारा विकसित C भाषा का संगामिति-विस्तारित उपसमुच्चय, क्रमिक प्रक्रियाओं के संचार पर आधारित, प्रोग्रामयोग्य I/O के लिए अंतर्निहित निर्माण
* [[TNSDL|एनएसडीएल]] दूरसंचार आदान-प्रदान विकसित करने के लिए समकालिक अस्थायी संदेश का उपयोग करता है।
 
* वीएचएसआईसी हार्डवेयर विवरण भाषा [[वीएचडीएल]] आई एसटीडी।
कई अन्य भाषाएँ पुस्तकालयों के रूप में समवर्ती के लिए समर्थन प्रदान करती हैं, उपरोक्त सूची के साथ लगभग तुलनीय स्तरों पर।
* एक्स सी भाषा [[XMOS|एक्स मॉस]] द्वारा विकसित भाषा का संगमिति-विस्तारित उपसमुच्चय क्रमिक प्रक्रियाओं के संचार पर आधारित कार्यक्रम अंतर्निहित है।


== यह भी देखें ==
== यह भी देखें ==
* अतुल्यकालिक I/O
* समकालिक।
* चू स्थान
* स्थान।
* [[प्रवाह आधारित प्रोग्रामिंग]]
* [[प्रवाह आधारित प्रोग्रामिंग|प्रवाह आधारित कार्यक्रम।]]
* [[जावा समवर्ती मानचित्र]]
* [[जावा समवर्ती मानचित्र|जावा समवर्ती मानचित्र।]]
* [[टॉलेमी परियोजना]]
* [[टॉलेमी परियोजना|टॉलेमी परियोजना।]]
* {{Section link|Race condition|Computing}}
*
* [[शेफ़ (गणित)]]
* सुरक्षित [[शेफ़ (गणित)|गणित।]]
* संरचित संगामिति
* संचरित संगमिति।
* [[लेनदेन प्रक्रिया]]
* [[लेनदेन प्रक्रिया|लेनदेन प्रक्रिया।]]


==टिप्पणियाँ==
==टिप्पणियाँ==
Line 205: Line 185:
*{{Commons category-inline|Concurrent programming}}
*{{Commons category-inline|Concurrent programming}}
*[https://web.archive.org/web/20060128114620/http://vl.fmnet.info/concurrent/ Concurrent Systems Virtual Library]
*[https://web.archive.org/web/20060128114620/http://vl.fmnet.info/concurrent/ Concurrent Systems Virtual Library]
{{Concurrent computing}}
{{Types of programming languages}}
[[Category: समवर्ती कंप्यूटिंग | समवर्ती कंप्यूटिंग ]] [[Category: ऑपरेटिंग सिस्टम प्रौद्योगिकी]]  
[[Category: समवर्ती कंप्यूटिंग | समवर्ती कंप्यूटिंग ]] [[Category: ऑपरेटिंग सिस्टम प्रौद्योगिकी]]  


Line 214: Line 191:
[[Category: Machine Translated Page]]
[[Category: Machine Translated Page]]
[[Category:Created On 17/02/2023]]
[[Category:Created On 17/02/2023]]
[[Category:Vigyan Ready]]

Latest revision as of 15:37, 14 March 2023

समवर्ती कम्प्यूटिंग गणना का एक रूप है जिसमें कई गणनाएँ समवर्ती रूप में निष्पादित की जाती हैं जो अतिव्यापक अवधि के दौरान समवर्ती गणना की प्रारंभआत पहले की जाती है।

समवर्ती कम्प्यूटिंग प्रणाली की एक संपत्ति है जो एक कंप्यूटर कार्यक्रम या संगणक संजाल का भाग है जहां प्रत्येक प्रक्रिया के लिए एक अलग निष्पादन बिंदु का नियंत्रण होता है। एक समवर्ती प्रणाली वह है जहां एक कम्प्यूटिंग सभी संगणनाओं को पूरा होने की प्रतीक्षा किए बिना ही आगे बढ़ जाती है तथा[1] समवर्ती गणना नियंत्रित कार्यक्रम का रूप है इसके प्रोग्रामिंग प्रतिमान में एक समग्र अभिकलन तथा अपघटन कंप्यूटर विज्ञान गणनाओं में होता है जिसे समवर्ती रूप से निष्पादित किया जाता है। एडवर्ड डिजस्ट्रा तथा ब्रिन्च हेन्सन और सी.ए.आर. होरे ने कहा कि समवर्ती गणना के क्षेत्र में नियंत्रित कार्यक्रम भी सम्मिलित हैं।[2]


परिचय

समवर्ती गणना की अवधारणा गणना से संबंधित है इसलिए यह अधिक भ्रमित होती है [3][4] जबकि दोनों को समान अवधि के साथ कई प्रक्रियाओं के रूप में दर्शाया गया है समान्तर गणना के निष्पादन में एक भौतिक क्षण होता है उदाहरण के लिए एक बहु-प्रोसेसर मशीन केंद्रीय प्रसंस्करण इकाई में संगणना को गतिक लक्ष्य के साथ-एक मल्टी-कोर प्रोसेसर की गणना करना असंभव है लेकिन एकल प्रोसेसर किसी भी क्षण गणना कर सकता है [lower-alpha 1] तथा इसके विपरीत समवर्ती गणना में प्रक्रिया का जीवनकाल अतिव्यापक होता है जिसकी आवश्यकता नहीं होती है इसका लक्ष्य बाहरी दुनिया की प्रक्रियाओं को नियंत्रित करना है जो समवर्ती गणना के रूप में दर्शाये गये हैं जैसे कि एक ही समय में सर्वर तक पहुंचने वाले कई क्लाइंट तथा कई समवर्ती गणना सॉफ्टवेयर से बनी संरचना प्रणाली को जटिलता से उपयोग कर सकते हैं भले ही कुछ भागों को समान्तर भाग में निष्पादित कर दिया जाए।[5]: 1  समय-साझाकरण के टुकड़े के माध्यम से प्रत्येक प्रक्रिया के चरणों को अंतःस्थापित करके समवर्ती प्रक्रियाओं को एक कोर पर स्थित किया जा सकता है तथा एक समय में एक ही प्रक्रिया चल सकती है और यदि यह अपने समय को पूरा नहीं होने देती है तो इसे रोक दिया जाता है और दूसरी प्रक्रिया प्रारंभ कर दी जाती है तथा बाद में मूल प्रक्रिया प्रारंभ हो जाती है इस तरह कई प्रक्रियाएं एक ही क्षण में निष्पादन के माध्यम से होती हैं लेकिन उस क्षण में केवल एक प्रक्रिया को ही किया जा सकता है।[citation needed]समवर्ती संगणनाओं को समानांतर में निष्पादित किया जा जाता है [3][6] जैसे प्रत्येक प्रक्रिया को एक अलग प्रोसेसर या एक नेटवर्क पर गणना करके समवर्ती प्रोग्रामिंग के लिए उपयुक्त नहीं किया जा सकता है और इसके विपरीत[citation needed]जब एक समवर्ती प्रणाली में कार्यों को किया जाता है तो समय निर्धारण गणना पर निर्भर करता है और कार्यों को हमेशा समवर्ती कम्प्यूटिंग की आवश्यकता नहीं होती है। उदाहरण टी1और टी2 हैं।[citation needed]

  • टी1 को टी2 या इसके विपरीत होने से पहले और समाप्त किया जा सकता है।
  • टी1 और टी2 को वैकल्पिक रूप से स्थित किया जा सकता है।
  • टी1 और टी2 को एक ही समय पर एक साथ स्थिर किया जा सकता है ।

अनुक्रमिक शब्द समवर्ती और समानांतर दोनों के लिए एक विलोम के रूप में प्रयोग किया जाता है जब इन्हें स्पष्ट रूप से अलग किया जाता है जिन्हें समवर्ती अनुक्रमिक और समानांतर को विरोधी जोड़े के रूप में उपयोग किया जाता है।[7] इस कार्य को एक ही समय में किया जाता है बिना अंतपत्रण का कार्य तब तक प्रारंभ नहीं होता जब तक समाप्त कार्यों को क्रमिक रूप से निर्धारित न किया जाए क्रमबद्धता ही संगमिति नियंत्रण को सरल करता है।[citation needed]


साझा संसाधनों तक पहुंचने का समन्वय करना

समवर्ती कार्यक्रमों की बनावट में मुख्य चुनौती समवर्ती नियंत्रण की है जो विभिन्न गणतीय निष्पादनों के बीच बातचीत या संचार का सही क्रम सुनिश्चित करता है तथा निष्पादन के बीच साझा किए गए संसाधनों तक पहुंच का समन्वय करना ही [6]संभावित समस्याओं में गतिरोध, संसाधन और भुखमरी सम्मिलित करता है साझा संसाधन द्वारा दर्शाए गए चेकिंग खाते से निकासी करने के लिए निम्नलिखित विधि हैं।

लाभ

समवर्ती गणना के निम्नलिखित लाभ हैं-

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

मॉडल

1962 में कहा गया कि पेट्री शुद्ध समवर्ती निष्पादन के नियमों को संहिताबद्ध करने का एक प्रारंभिक प्रयास था डेटाफ्लो सिद्धांत बाद में बनाया गया था और डेटाफ्लो सिद्धांत के विचारों को भौतिक रूप से लागू करने के लिए डेटाफ्लो वास्तुकला बनाए गए थे 1970 के दशक के बाद में प्रक्रिया गणना संचार प्रणालियों की गणना और अनुक्रमिक प्रक्रियाओं का संचार करने की गणना विकसित की गई थी जिससे अंतःक्रियात्मक घटकों से बनी प्रणाली के बारे में बीजगणितीय तर्क को अनुमति दी जा सके पाई कैलकुलस ने डायनेमिक टोपोलॉजी के बारे में तर्क करने की क्षमता को जोड़ा गया।

इनपुट आउटपुट स्वचालित रूप से 1987 में पेश किया गया था।

समवर्ती प्रणालियों के व्यवहार का वर्णन करने के लिए लामपोर्ट के क्रियाओं का अस्थायी तर्क टीएलए और गणितीय मॉडल जैसे ट्रेस सिद्धांत और अभिनेता मॉडल सिद्धांत जैसे तर्क भी विकसित किए गए हैं।

सॉफ्टवेयर लेनदेन स्मृति डेटाबेस प्रबंधन प्रणाली से परमाणु प्रतिबद्ध की अवधारणा को उधार लेती है और उन्हें स्मृति अनुलेख पर लागू करती है।

संगति मॉडल

समवर्ती गणना की भाषा और बहुगुणक कार्यक्रम में एक संगति मॉडल होना चाहिए जो संगत मॉडल नियमों को परिभाषित करता है कि कंप्यूटर डेटा संग्रहण पर संचालन कैसे होता है और परिणाम कैसे उत्पन्न होते हैं। एक लेस्ली लामपोर्ट का अनुक्रमिक स्थिरता कार्यक्रम की संपत्ति है स्थिरता कार्यक्रम के समान परिणाम उत्पन्न करता है जो विशेष रूप से एक प्रोग्राम कार्यक्रम के समान है जैसे सभी प्रोसेसर के संचालन को कुछ अनुक्रमिक क्रम में स्थित किया गया था और प्रत्येक व्यक्तिगत प्रोसेसर के संचालन के इस क्रम में निर्दिष्ट किया गया है।[8]

कार्यान्वयन

समवर्ती कार्यक्रमों को लागू करने के लिए कई अलग-अलग तरीकों का उपयोग किया जाता है जो प्रत्येक गणितीय निष्पादन की प्रक्रिया कंप्यूटर विज्ञान के रूप में लागू की जाती है गणितीय प्रक्रियाओं को धागे के रूप में एक संचालन प्रणाली के भीतर जोड़ते हैं।

बातचीत और संचार

कुछ समवर्ती गणना प्रणालियों में समवर्ती घटकों के बीच संचार कार्यक्रम छिपा होता है जबकि इसे स्पष्ट रूप से नियंत्रित किया जाना चाहिए संचार को दो वर्गों में विभाजित किया जाता है।

साझा स्मृति संचार या साझा स्मृति स्थानों को गणितीय भाषा और सामग्री को बदलकर संचार करते हैं तथा समवर्ती गणना की इस शैली को धागे के बीच समन्वय करने के लिए परिबंधन के कुछ रूपों जैसे आपसी बहिष्कार सेमाफोर गणना या मॉनिटर के उपयोग की आवश्यकता होती है एक कार्यक्रम जो इनमें से किसी को भी ठीक से लागू कर सकता है उसे धागा सुरक्षा कहा जाता है।

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

साझा की गई स्मृति और संदेश पास करने वाली संगमिति में अलग-अलग विशेषताएँ होती हैं संदेश में अस्थायी प्रणाली की स्मृति में ओवरहेड और कार्य स्विचिंग ओवरहेड कम होता है लेकिन संदेश अस्थायी ओवरहेड प्रक्रिया कॉल के दौरान अधिक होता है ये अंतर अधिकतर अन्य प्रदर्शन कारकों से अभिभूत होते हैं।

इतिहास

19वीं और 20वीं सदी की आरंभ में रेलमार्ग और टेलीग्राफी पर की गयी तथा समवर्ती गणना विकसित हुई और कुछ शर्तें इसमें इस अवधि की हैं जैसे कि संकेत से प्रकट करना ये एक ही रेल प्रणाली पर कई ट्रेनों को संभालने के तौरतरीके के एक सेट पर कई प्रसारणों को कैसे संभालना है जैसे समय-विभाजन बहुसंकेतन 1870 के दशक के रूप में है।

समवर्ती प्रारूप का अकादमिक अध्ययन 1960 के दशक में प्रारंभ हुआ था समवर्ती कम्प्यूटिंग की पहचान करने तथा पेपर हल करने का यह पहला क्षेत्र था।[9]


व्यापक

संगणना व्यापक है जिसमें एक चिप निम्न-स्तरीयर हार्डवेयर से लेकर विश्वव्यापी नेटवर्क तक होती है। उदाहरण -

गणितीय भाषा स्तर पर।

संचालन प्रणाली स्तर पर।

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

समवर्ती गणना का समर्थन करने वाली भाषाएं

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

  • गणितीय भाषा का सामान्य उद्देश्य संदेश भेजने और मॉनिटर आधारित संगमिति के लिए मूल समर्थन का प्रयोग करना।
  • एलएएफ समवर्ती थ्रेड्स और संदेश पासिंग के साथ, बेल लैब्स से प्लान 9 के आरंभी संस्करणों में प्रणाली गणितीय भाषा के लिए।
  • एएलएस मानक एमएल का विस्तार भविष्य के माध्यम से कंसीडर के लिए समर्थन जोड़ता है।
  • पीएक्स पाई गणना से प्रेरित समानांतर प्रिमिटिव के साथ जावा भाषा का विस्तार।
  • एक्सएम डोमेन विशिष्ट समवर्ती अभिनेता मॉडल पर आधारित सी-जैसे सिंटैक्स का उपयोग करके एनईटी की सामान्य भाषा।
  • बीएमडीएफएम—बाइनरी मॉड्यूलर डाटाफ्लो मशीन।
  • सी एसटीडी थ्रेड।
  • सी ओमेगा अनुसंधान सी का विस्तार करता है समकालिक संचार का उपयोग करता है।
  • सी तेज सी ताला उपज का उपयोग कर समवर्ती गणना का समर्थन करता है संसककरण 5.0 एसिंक्स और प्रतीक्षित संपर्क पेश किए जाते हैं।
  • समवर्ती संग्रह (सीएनसी) डेटा और नियंत्रण के प्रवाह को स्पष्ट रूप से परिभाषित करके स्मृति मॉडल से स्वतंत्र अंतर्निहित समानांतरता प्राप्त करता है।
  • समवर्ती हास्केल आलसी शुद्ध कार्यात्मक भाषा साझा स्मृति पर समवर्ती प्रक्रियाओं का संचालन करती है।
  • समवर्ती एमएल मानक एमएल का समवर्ती विस्तार।
  • समवर्ती पास्कल पर ब्रिन्च हेन्सन द्वारा।
  • करी गणितीय भाषा।
  • डी गणितीय भाषा बहु-प्रतिमान भाषा समवर्ती भाषा के लिए स्पष्ट समर्थन के साथ बहु-प्रतिमान प्रणाली गणितीय भाषा।
  • ई गणितीय भाषा डेडलॉक्स को रोकने के लिए वादों का उपयोग करता है।
  • ईसीएमए लिखी कहानी समकालिक संचालन के लिए वादों का उपयोग करता है।
  • एफिल भाषा अनुबंध द्वारा बनावट की अवधारणाओं के आधार पर अपने स्कूप (सॉफ्टवेयर) तंत्र के माध्यम ।
  • इलीक्सिर भाषा निर्देशांक और काल्पनिक मेटा-भाषा जागरूक भाषा प्रक्रिया वीएम पर चल रही है।
  • एरलांग भाषा बिना किसी साझा किए समकालिक संदेश का उपयोग करता है।
  • एफयूटीएस भाषा इशारा स्वरूप के लिए वास्तविक समय खुलाएमपी या एक विशिष्ट शेड्यूलर के माध्यम से स्वचालित समानांतरण प्रदान करता है।
  • फोरट्रान-कोएरे फोरट्रान और डू समवर्ती फोरट्रान 2008 मानक का हिस्सा है।
  • भाषा प्रणाली गणना के लिए एक समवर्ती मॉडल के साथ संचार अनुक्रमिक प्रक्रियाओं पर आधारित है।
  • हास्केल गणितीय भाषा समवर्ती और समानांतर कार्यात्मक भाषा। [11]
  • ह्यूम भाषा सीमित स्थान और समय के वातावरण के लिए कार्यात्मक समवर्ती जहां ऑटोमेटा प्रक्रियाओं को सिंक्रोनस चैनल पैटर्न और संदेश पासिंग द्वारा वर्णित किया जाता है।
  • लो भाषा अभिनेता आधारित संगमिति।
  • जानूस समवर्ती बाधा भाषा तार्किक चर बैग चैनलों के लिए अलग-अलग पूछने वाले और बतानेे वाले विशुद्ध रूप से घोषणात्मक है।
  • जूलिया गणितीय भाषा समवर्ती प्रोग्रामिंग कार्य, एएसऑवाईएनसी प्रतीक्षा चैनल है।[12]
  • जावास्क्रिप्ट वेब कार्यकर्ता के माध्यम से एक ब्राउज़र वातावरण में भविष्य और कॉलबैक कंप्यूटर प्रोग्रामिंग है।
  • जेओकॉलम समवर्ती और वितरित चैनल आधारित ओकॉलम का विस्तार प्रक्रियाओं के जोड़-कलन को लागू करता है।
  • जावा से जुड़ें समवर्ती जावा गणितीय भाषा पर आधारित।
  • जूल गणितीय भाषा डेटा प्रवाह पर आधारित संदेश पास करके संचार करता है।
  • जॉयस गणितीय भाषा समवर्ती शिक्षण समवर्ती पास्कल पर निर्मित पेर ब्रिंक हैनसेन द्वारा अनुक्रमिक प्रक्रियाओं के संचार है।
  • प्रयोगशाला ग्राफिकल डेटा प्रवाह फ़ंक्शन एक ग्राफ में नहीं होते हैं डेटा नोड्स के बीच तार होते हैं वस्तु-उन्मुख भाषा सम्मिलित है।
  • लिंबो गणितीय भाषा इन्फर्नो में प्रणाली के लिए एलएफसे संबंधित है।
  • मल्टीलिस्प स्कीम सत्यापन को समानता का समर्थन करने के लिए विस्तारित किया गया है।
  • मॉड्यूल-2 गणितीय प्रणाली के लिए एन विर्थ द्वारा पास्कल के उत्तराधिकारी के रूप में कोरआउटिन के लिए मूल समर्थन किया गया है।
  • मॉड्यूल -3 अल्गोल परिवार का आधुनिक सदस्य जिसके पास धागे सत्यापन लिए व्यापक समर्थन है।
  • न्यूज़क्वीक अनुसंधान के लिए प्रथम श्रेणी के मूल्यों के रूप में चैनलों के साथ एलेफ के पूर्ववर्ती भाषा है।
  • ओकैम भाषा अनुक्रमिक प्रक्रियाओं सीएसपी को संप्रेषित करके अत्यधिक प्रभावित करना।
    • ओकेएम पाइ ओकेएम का एक आधुनिक संस्करण जिसमें मिलनर के पाई कैलकुलस के विचार सम्मिलित हैं।
  • ओआरजी भाषा भारी समवर्ती गैर नियतात्मक क्लेन बीजगणित पर आधारित है।
  • ओज भाषा ओज-मोजार्ट-मल्टीपैराडाइम के अनुसार साझा-स्थिति और संदेश-अस्थायी संगमिति का समर्थन करता है।
  • पैरासेल गणितीय भाषा तंत्र उन्मुख पैरेलल पॉइंटर्स से मुक्त दौड़ की स्थिति।
  • चित्रात्मक भाषा अनिवार्य रूप से मिलनर के पाई-गणना का एक निष्पादन योग्य कार्यान्वयन है।
  • राकू भाषा में दोष के रूप से और चैनलों के लिए कक्षाएं सम्मिलित हैं।[13]
  • पायथन भाषा धागे पर आधारित समानता और प्रक्रिया-आधारित समानता का उपयोग करता है। [14]
  • रेया गणितीय भाषा साझा-कुछ भी नहीं वस्तुओं के बीच अतुल्यकालिक संदेश का उपयोग करता है।
  • लाल गणितीय भाषा लाल प्रणाली यह रिबोल पर आधारित होती है।
  • जंग की भाषा प्रणाली प्रोग्रामिंग के साथ चाल के साथ संदेश अस्थायी रूप से उपयोग करते हुए साझा अपरिवर्तनीय स्मृति और साझा उत्परिवर्तनीय स्मृति का रूप होता है।[15]
  • स्काला भाषा का सामान्य उद्देश्य सामान्य प्रोग्रामिंग यथार्थता को संक्षिप्त सुरुचिपूर्ण और सुरक्षित तरीके से व्यक्त करने के लिए बनावट का प्रयोग किया गया।
  • अनुक्रम एल सामान्य कार्यात्मक की मुख्य बनावट उद्देश्य प्रोग्रामिंग में आसानी, संहिता, स्पष्टता-पठनीयता, और मल्टीकोर हार्डवेयर पर प्रदर्शन के लिए स्वत: समानांतरण और दौड़ की स्थिति से मुक्त होता है।
  • एसआर भाषा-अनुसंधान के लिए उपयुक्त होती है।
  • सुपर पास्कल समवर्ती शिक्षण के लिए प्रति ब्रिन्च हैनसेन द्वारा समवर्ती पास्कल और जॉयस पर निर्मित भाषा होती है।
  • स्विफ्ट भाषा समकालिक और समानांतर संहिता को संचरित तरीके से लिखने के लिए अंतर्निहित भाषाओं का समर्थन करना पड़ता है। [16]
  • यूनिकॉन भाषा अनुसंधान के लिए होती है।
  • एनएसडीएल दूरसंचार आदान-प्रदान विकसित करने के लिए समकालिक अस्थायी संदेश का उपयोग करता है।
  • वीएचएसआईसी हार्डवेयर विवरण भाषा वीएचडीएल आई एसटीडी।
  • एक्स सी भाषा एक्स मॉस द्वारा विकसित भाषा का संगमिति-विस्तारित उपसमुच्चय क्रमिक प्रक्रियाओं के संचार पर आधारित कार्यक्रम अंतर्निहित है।

यह भी देखें

टिप्पणियाँ

  1. This is discounting parallelism internal to a processor core, such as pipelining or vectorized instructions. A one-core, one-processor machine may be capable of some parallelism, such as with a coprocessor, but the processor alone is not.


संदर्भ

  1. Operating System Concepts 9th edition, Abraham Silberschatz. "Chapter 4: Threads"
  2. Hansen, Per Brinch, ed. (2002). The Origin of Concurrent Programming. doi:10.1007/978-1-4757-3472-0. ISBN 978-1-4419-2986-0. S2CID 44909506.
  3. 3.0 3.1 Pike, Rob (2012-01-11). "Concurrency is not Parallelism". Waza conference, 11 January 2012. Retrieved from http://talks.golang.org/2012/waza.slide (slides) and http://vimeo.com/49718712 (video).
  4. "Parallelism vs. Concurrency". Haskell Wiki.
  5. Schneider, Fred B. (1997-05-06). On Concurrent Programming. Springer. ISBN 9780387949420.
  6. 6.0 6.1 Ben-Ari, Mordechai (2006). Principles of Concurrent and Distributed Programming (2nd ed.). Addison-Wesley. ISBN 978-0-321-31283-9.
  7. Patterson & Hennessy 2013, p. 503.
  8. Lamport, Leslie (1 September 1979). "How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs". IEEE Transactions on Computers. C-28 (9): 690–691. doi:10.1109/TC.1979.1675439. S2CID 5679366.
  9. "PODC Influential Paper Award: 2002", ACM Symposium on Principles of Distributed Computing, retrieved 2009-08-24
  10. Armstrong, Joe (2003). "Making reliable distributed systems in the presence of software errors" (PDF).
  11. Marlow, Simon (2013) Parallel and Concurrent Programming in Haskell : Techniques for Multicore and Multithreaded Programming ISBN 9781449335946
  12. https://juliacon.talkfunnel.com/2015/21-concurrent-and-parallel-programming-in-julia Concurrent and Parallel programming in Julia
  13. "संगामिति". docs.perl6.org. Retrieved 2017-12-24.
  14. Documentation » The Python Standard Library » Concurrent Execution
  15. Blum, Ben (2012). "Typesafe Shared Mutable State". Retrieved 2012-11-14.
  16. "संगामिति". 2022. Retrieved 2022-12-15.


स्रोत

  • Patterson, David A.; Hennessy, John L. (2013). कंप्यूटर संगठन और डिजाइन: हार्डवेयर/सॉफ्टवेयर इंटरफेस. The Morgan Kaufmann Series in Computer Architecture and Design (5 ed.). Morgan Kaufmann. ISBN 978-0-12407886-4.


अग्रिम पठन


बाहरी संबंध