डेडलॉक: Difference between revisions
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
{{short description|State in which members are blocking each other}} | {{short description|State in which members are blocking each other}} | ||
{{distinguish| | {{distinguish|डेथलोक|ड्रेडलॉक}} | ||
{{about| | {{about|कंप्यूटर विज्ञान अवधारणा}} | ||
{{Use dmy dates|date=April 2021}} | {{Use dmy dates|date=April 2021}} | ||
[[File:Process deadlock.svg|thumb|right|निष्पादन जारी रखने के लिए दोनों प्रक्रियाओं को संसाधनों की आवश्यकता होती है। P1 को अतिरिक्त संसाधन R1 की आवश्यकता है और संसाधन R2 के कब्जे में है, P2 को अतिरिक्त संसाधन R2 की आवश्यकता है और R1 के अधिकार में है; कोई भी प्रक्रिया जारी नहीं रह सकती।]] | [[File:Process deadlock.svg|thumb|right|निष्पादन जारी रखने के लिए दोनों प्रक्रियाओं को संसाधनों की आवश्यकता होती है। P1 को अतिरिक्त संसाधन R1 की आवश्यकता है और संसाधन R2 के कब्जे में है, P2 को अतिरिक्त संसाधन R2 की आवश्यकता है और R1 के अधिकार में है; कोई भी प्रक्रिया जारी नहीं रह सकती।]] | ||
[[File:Deadlock at a four-way-stop.gif|thumbnail|right|दाएँ-पहले-बाएँ नीति का पालन करते हुए चार प्रक्रियाएँ (नीली रेखाएँ) एक संसाधन (ग्रे सर्कल) के लिए प्रतिस्पर्धा करती हैं। एक गतिरोध तब होता है जब सभी प्रक्रियाएँ संसाधन को एक साथ (काली रेखाएँ) लॉक कर देती हैं। गतिरोध को समरूपता को तोड़कर हल किया जा सकता है।]][[समवर्ती कंप्यूटिंग]] में, गतिरोध ऐसी कोई भी स्थिति है जिसमें संस्थाओं के कुछ समूह का कोई भी सदस्य आगे नहीं बढ़ सकता है क्योंकि प्रत्येक अन्य सदस्य के लिए प्रतीक्षा करता है, जिसमें स्वयं भी | [[File:Deadlock at a four-way-stop.gif|thumbnail|right|दाएँ-पहले-बाएँ नीति का पालन करते हुए चार प्रक्रियाएँ (नीली रेखाएँ) एक संसाधन (ग्रे सर्कल) के लिए प्रतिस्पर्धा करती हैं। एक गतिरोध तब होता है जब सभी प्रक्रियाएँ संसाधन को एक साथ (काली रेखाएँ) लॉक कर देती हैं। गतिरोध को समरूपता को तोड़कर हल किया जा सकता है।]][[समवर्ती कंप्यूटिंग]] में, गतिरोध ऐसी कोई भी स्थिति है जिसमें संस्थाओं के कुछ समूह का कोई भी सदस्य आगे नहीं बढ़ सकता है क्योंकि प्रत्येक अन्य सदस्य के लिए प्रतीक्षा करता है, जिसमें स्वयं भी सम्मिलित है, जैसे कि संदेश भेजना या अधिक सामान्य रूप से लॉक (कंप्यूटर विज्ञान) जारी करना। <ref name=coulouris>{{cite book|last=Coulouris|first=George|publisher=Pearson|year=2012|title=वितरित सिस्टम अवधारणा और डिजाइन|page=716|isbn=978-0-273-76059-7}}</ref> [[ बहु |बहु संसाधन]] सिस्टम, [[समानांतर कंप्यूटिंग]] और [[वितरित अभिकलन]] में गतिरोध एक सामान्य समस्या है, क्योंकि इन संदर्भों में सिस्टम प्रायः साझा संसाधनों की मध्यस्थता और समकालन (कंप्यूटर विज्ञान) को लागू करने के लिए सॉफ़्टवेयर या हार्डवेयर लॉक का उपयोग करते हैं। <ref name=para_enclo>{{cite book |last=Padua |first=David |url=https://books.google.com/books?id=Hm6LaufVKFEC&q=deadlock&pg=PA524 |publisher=Springer |year=2011 |title=समानांतर कंप्यूटिंग का विश्वकोश|page=524 |isbn=9780387097657 |access-date=16 October 2020 |archive-date=18 April 2021 |archive-url=https://web.archive.org/web/20210418033928/https://books.google.com/books?id=Hm6LaufVKFEC&q=deadlock&pg=PA524 |url-status=live }}</ref> | ||
[[ऑपरेटिंग सिस्टम]] में, गतिरोध तब होता है जब [[प्रक्रिया (कंप्यूटिंग)]] या [[थ्रेड (कंप्यूटिंग)]] एक प्रतीक्षा प्रक्रिया स्थिति में प्रवेश करती है क्योंकि एक अनुरोधित [[सिस्टम संसाधन]] दूसरी प्रतीक्षा प्रक्रिया द्वारा आयोजित किया जाता है, जो बदले में किसी अन्य प्रतीक्षा प्रक्रिया द्वारा रखे गए किसी अन्य संसाधन की प्रतीक्षा कर रहा है। गतिरोध एक ऐसी स्थिति है जो कई प्रक्रियाओं से बनी प्रणाली में हो सकती है जो साझा संसाधनों तक पहुंच सकती है। एक गतिरोध तब होता है जब दो या दो से अधिक प्रक्रियाएँ एक संसाधन जारी करने के लिए एक दूसरे की प्रतीक्षा कर रही होती हैं। कोई भी प्रक्रिया कोई प्रगति नहीं कर सकती है। यदि कोई प्रक्रिया अनिश्चित काल तक अपनी स्थिति को बदलने में असमर्थ रहती है क्योंकि उसके द्वारा अनुरोधित संसाधनों का उपयोग किसी अन्य प्रक्रिया द्वारा किया जा रहा है जो स्वयं प्रतीक्षा कर रही है, तो सिस्टम गतिरोध में कहा जाता है।<ref name="os_galvin">{{cite book|last=Silberschatz|first=Abraham|url=https://books.google.com/books?id=WjvX0HmVTlMC&q=deadlock+operating+systems|publisher=Wiley-India|year=2006|title=ऑपरेटिंग सिस्टम सिद्धांत|edition=7th|page=237|isbn=9788126509621|access-date=16 October 2020|archive-date=25 January 2022|archive-url=https://web.archive.org/web/20220125085137/https://books.google.com/books?id=WjvX0HmVTlMC&q=deadlock+operating+systems|url-status=live}}</ref> | |||
एक [[संचार प्रणाली]] में, संसाधनों के लिए विवाद के | एक [[संचार प्रणाली]] में, संसाधनों के लिए विवाद के स्थान पर मुख्य रूप से संकेतों के नुकसान या भ्रष्टाचार के कारण गतिरोध उत्पन्न होता है।<ref name=invi_comp>{{cite book |last=Schneider |first=G. Michael |url=https://books.google.com/books?id=gQK0pJONyhgC&q=deadlock+signal+lost&pg=PA271 |publisher=Cengage Learning |year=2009 |title=कंप्यूटर विज्ञान के लिए निमंत्रण|page=271 |isbn=978-0324788594 |access-date=16 October 2020 |archive-date=18 April 2021 |archive-url=https://web.archive.org/web/20210418025125/https://books.google.com/books?id=gQK0pJONyhgC&q=deadlock+signal+lost&pg=PA271 |url-status=live }}</ref> | ||
[[File:Two processes, two resources.gif|thumbnail|विपरीत क्रम में दो संसाधनों के लिए प्रतिस्पर्धा करने वाली दो प्रक्रियाएँ।{{ordered list|style=margin-top:0.5em|list_style_type=upper-alpha | [[File:Two processes, two resources.gif|thumbnail|विपरीत क्रम में दो संसाधनों के लिए प्रतिस्पर्धा करने वाली दो प्रक्रियाएँ।{{ordered list|style=margin-top:0.5em|list_style_type=upper-alpha | ||
| Line 41: | Line 41: | ||
गतिरोध का पता चलने के बाद, इसे निम्न विधियों में से किसी एक का उपयोग करके ठीक किया जा सकता है:{{Citation needed|date=May 2016}} | गतिरोध का पता चलने के बाद, इसे निम्न विधियों में से किसी एक का उपयोग करके ठीक किया जा सकता है:{{Citation needed|date=May 2016}} | ||
# प्रक्रिया समाप्ति: गतिरोध में | # प्रक्रिया समाप्ति: गतिरोध में सम्मिलित एक या अधिक प्रक्रियाओं को निरस्त किया जा सकता है। गतिरोध में सम्मिलित सभी प्रतिस्पर्धी प्रक्रियाओं (कंप्यूटिंग) को निरस्त करने का विकल्प चुन सकते हैं। यह सुनिश्चित करता है कि गतिरोध का समाधान निश्चितता और गति के साथ हो।{{Citation needed|date=May 2016}} लेकिन व्यय अधिक है क्योंकि आंशिक संगणना खो जाएगी। या, जब तक गतिरोध का समाधान नहीं हो जाता, तब तक एक समय में एक प्रक्रिया को निरस्त करना चुन सकते हैं। इस दृष्टिकोण में एक उच्च ओवरहेड है क्योंकि प्रत्येक गर्भपात के बाद एक एल्गोरिथ्म को यह निर्धारित करना चाहिए कि सिस्टम अभी भी गतिरोध में है या नहीं।{{Citation needed|date=May 2016}} समाप्ति के लिए एक उम्मीदवार का चयन करते समय कई कारकों पर विचार किया जाना चाहिए, जैसे कि प्राथमिकता और प्रक्रिया की उम्र।{{Citation needed|date=May 2016}} | ||
# रिसोर्स प्रीमेशन: विभिन्न प्रक्रियाओं के लिए आवंटित संसाधनों को क्रमिक रूप से प्रीमेप्ट किया जा सकता है और गतिरोध के टूटने तक अन्य प्रक्रियाओं को आवंटित किया जा सकता है।<ref>{{cite web|url=https://www.ibm.com/support/knowledgecenter/SSETD4_9.1.2/lsf_admin/resource_preemption_about.html|title=आईबीएम ज्ञान केंद्र|website=www.ibm.com|access-date=29 April 2018|url-status=live|archive-url=https://web.archive.org/web/20170319112925/https://www.ibm.com/support/knowledgecenter/SSETD4_9.1.2/lsf_admin/resource_preemption_about.html|archive-date=19 March 2017}}</ref>{{Failed verification|date=December 2021}} | # रिसोर्स प्रीमेशन: विभिन्न प्रक्रियाओं के लिए आवंटित संसाधनों को क्रमिक रूप से प्रीमेप्ट किया जा सकता है और गतिरोध के टूटने तक अन्य प्रक्रियाओं को आवंटित किया जा सकता है।<ref>{{cite web|url=https://www.ibm.com/support/knowledgecenter/SSETD4_9.1.2/lsf_admin/resource_preemption_about.html|title=आईबीएम ज्ञान केंद्र|website=www.ibm.com|access-date=29 April 2018|url-status=live|archive-url=https://web.archive.org/web/20170319112925/https://www.ibm.com/support/knowledgecenter/SSETD4_9.1.2/lsf_admin/resource_preemption_about.html|archive-date=19 March 2017}}</ref>{{Failed verification|date=December 2021}} | ||
| Line 54: | Line 54: | ||
(डी) लॉकिंग तंत्र की समरूपता को तोड़कर डेडलॉक को रोका जा सकता है।]]चार कॉफमैन स्थितियों में से एक को होने से रोककर डेडलॉक की रोकथाम काम करती है। | (डी) लॉकिंग तंत्र की समरूपता को तोड़कर डेडलॉक को रोका जा सकता है।]]चार कॉफमैन स्थितियों में से एक को होने से रोककर डेडलॉक की रोकथाम काम करती है। | ||
* पारस्परिक बहिष्करण शर्त को हटाने का अर्थ है कि किसी भी प्रक्रिया की किसी संसाधन तक अनन्य पहुँच नहीं होगी। यह उन संसाधनों के लिए असंभव साबित होता है जो [[ अटेरन ]] नहीं हो सकते। लेकिन बिखरे हुए संसाधनों के साथ भी, गतिरोध अभी भी हो सकता है। पारस्परिक बहिष्करण से बचने वाले एल्गोरिदम को गैर-अवरुद्ध सिंक्रनाइज़ेशन एल्गोरिदम कहा जाता है। | * पारस्परिक बहिष्करण शर्त को हटाने का अर्थ है कि किसी भी प्रक्रिया की किसी संसाधन तक अनन्य पहुँच नहीं होगी। यह उन संसाधनों के लिए असंभव साबित होता है जो [[ अटेरन ]] नहीं हो सकते। लेकिन बिखरे हुए संसाधनों के साथ भी, गतिरोध अभी भी हो सकता है। पारस्परिक बहिष्करण से बचने वाले एल्गोरिदम को गैर-अवरुद्ध सिंक्रनाइज़ेशन एल्गोरिदम कहा जाता है। | ||
* होल्ड एंड वेट या रिसोर्स होल्डिंग की स्थिति को उन सभी संसाधनों का अनुरोध करने के लिए प्रक्रियाओं की आवश्यकता के द्वारा हटाया जा सकता है, जिनकी उन्हें शुरू करने से पहले (या संचालन के किसी विशेष सेट को शुरू करने से पहले) आवश्यकता होगी। यह उन्नत ज्ञान | * होल्ड एंड वेट या रिसोर्स होल्डिंग की स्थिति को उन सभी संसाधनों का अनुरोध करने के लिए प्रक्रियाओं की आवश्यकता के द्वारा हटाया जा सकता है, जिनकी उन्हें शुरू करने से पहले (या संचालन के किसी विशेष सेट को शुरू करने से पहले) आवश्यकता होगी। यह उन्नत ज्ञान प्रायः संतुष्ट करना मुश्किल होता है और किसी भी मामले में संसाधनों का अक्षम उपयोग होता है। दूसरा तरीका यह है कि संसाधनों का अनुरोध करने के लिए प्रक्रियाओं की आवश्यकता तभी हो जब उसके पास कोई न हो; सबसे पहले, उन्हें उन सभी संसाधनों का अनुरोध करने से पहले अपने सभी वर्तमान संसाधनों को जारी करना होगा जिनकी उन्हें स्क्रैच से आवश्यकता होगी। यह भी कई बार अव्यवहारिक होता है। ऐसा इसलिए है क्योंकि संसाधन आवंटित किए जा सकते हैं और लंबे समय तक अप्रयुक्त रह सकते हैं। साथ ही, एक लोकप्रिय संसाधन की आवश्यकता वाली प्रक्रिया को अनिश्चित काल तक इंतजार करना पड़ सकता है, क्योंकि ऐसे संसाधन हमेशा किसी प्रक्रिया को आवंटित किए जा सकते हैं, जिसके परिणामस्वरूप [[संसाधन भुखमरी]] हो सकती है।<ref>{{cite book|last=Silberschatz|first=Abraham|url=https://books.google.com/books?id=WjvX0HmVTlMC&q=deadlock+operating+systems|publisher=Wiley-India|year=2006|title=ऑपरेटिंग सिस्टम सिद्धांत|edition=7|page=244|isbn=9788126509621|access-date=16 October 2020|archive-date=18 April 2021|archive-url=https://web.archive.org/web/20210418013932/https://books.google.com/books?id=WjvX0HmVTlMC&q=deadlock+operating+systems|url-status=live}}</ref> (ये एल्गोरिदम, जैसे कि [[क्रमबद्ध टोकन]], को ऑल-ऑर-नो एल्गोरिदम के रूप में जाना जाता है।) | ||
* नो प्रीमेशन (कंप्यूटिंग) की स्थिति से बचना मुश्किल या असंभव भी हो सकता है क्योंकि एक प्रक्रिया को एक निश्चित समय के लिए संसाधन रखने में सक्षम होना चाहिए, या प्रसंस्करण परिणाम असंगत हो सकता है या थ्रैशिंग (कंप्यूटर विज्ञान) हो सकता है। हालांकि, प्रीमेशन को लागू करने में असमर्थता प्राथमिकता एल्गोरिथम में हस्तक्षेप कर सकती है। लॉक आउट संसाधन की रोकथाम आम तौर पर [[रोलबैक (डेटा प्रबंधन)]] का तात्पर्य है, और इससे बचा जाना चाहिए क्योंकि यह ओवरहेड में बहुत महंगा है। प्रीमेशन की अनुमति देने वाले एल्गोरिदम में [[लॉक-फ्री और वेट-फ्री एल्गोरिदम]] और [[आशावादी समवर्ती नियंत्रण]] | * नो प्रीमेशन (कंप्यूटिंग) की स्थिति से बचना मुश्किल या असंभव भी हो सकता है क्योंकि एक प्रक्रिया को एक निश्चित समय के लिए संसाधन रखने में सक्षम होना चाहिए, या प्रसंस्करण परिणाम असंगत हो सकता है या थ्रैशिंग (कंप्यूटर विज्ञान) हो सकता है। हालांकि, प्रीमेशन को लागू करने में असमर्थता प्राथमिकता एल्गोरिथम में हस्तक्षेप कर सकती है। लॉक आउट संसाधन की रोकथाम आम तौर पर [[रोलबैक (डेटा प्रबंधन)]] का तात्पर्य है, और इससे बचा जाना चाहिए क्योंकि यह ओवरहेड में बहुत महंगा है। प्रीमेशन की अनुमति देने वाले एल्गोरिदम में [[लॉक-फ्री और वेट-फ्री एल्गोरिदम]] और [[आशावादी समवर्ती नियंत्रण]] सम्मिलित हैं। यदि कोई प्रक्रिया कुछ संसाधनों को धारण करती है और किसी अन्य संसाधन (संसाधनों) के लिए अनुरोध करती है जिसे तुरंत आवंटित नहीं किया जा सकता है, तो उस प्रक्रिया के सभी वर्तमान संसाधनों को जारी करके स्थिति को हटाया जा सकता है। | ||
* अंतिम स्थिति सर्कुलर प्रतीक्षा स्थिति है। सर्कुलर प्रतीक्षा से बचने वाले दृष्टिकोणों में महत्वपूर्ण वर्गों के दौरान रुकावटों को अक्षम करना और संसाधनों का आंशिक क्रम निर्धारित करने के लिए पदानुक्रम का उपयोग करना | * अंतिम स्थिति सर्कुलर प्रतीक्षा स्थिति है। सर्कुलर प्रतीक्षा से बचने वाले दृष्टिकोणों में महत्वपूर्ण वर्गों के दौरान रुकावटों को अक्षम करना और संसाधनों का आंशिक क्रम निर्धारित करने के लिए पदानुक्रम का उपयोग करना सम्मिलित है। यदि कोई स्पष्ट पदानुक्रम मौजूद नहीं है, तो संसाधनों के स्मृति पते का भी क्रम निर्धारित करने के लिए उपयोग किया गया है और गणना के बढ़ते क्रम में संसाधनों का अनुरोध किया जाता है।<ref name="os_galvin"/>भोजन दार्शनिकों की समस्या#संसाधन पदानुक्रम समाधान|दिज्क्स्ट्रा के समाधान का भी उपयोग किया जा सकता है। | ||
=== गतिरोध परिहार === | === गतिरोध परिहार === | ||
| Line 66: | Line 66: | ||
== लाइवलॉक == | == लाइवलॉक == | ||
{{redirect|Livelock|the video game|Livelock (video game)}} | {{redirect|Livelock|the video game|Livelock (video game)}} | ||
एक लाइवलॉक एक गतिरोध के समान है, सिवाय इसके कि लाइवलॉक में | एक लाइवलॉक एक गतिरोध के समान है, सिवाय इसके कि लाइवलॉक में सम्मिलित प्रक्रियाओं की स्थिति एक दूसरे के संबंध में लगातार बदलती रहती है, कोई भी प्रगति नहीं करता है। | ||
यह शब्द 1975 के पेपर में एडवर्ड ए। एशक्रॉफ्ट द्वारा गढ़ा गया था<ref>{{cite journal|title=समांतर कार्यक्रमों के बारे में दावा साबित करना|journal=Journal of Computer and System Sciences|volume=10|pages=110–135|doi=10.1016/S0022-0000(75)80018-3|year=1975|last1=Ashcroft|first1=E.A.|doi-access=free}}</ref> एयरलाइन बुकिंग सिस्टम की जांच के संबंध में।<ref>{{cite book|chapter=On the absence of livelocks in parallel programs|doi=10.1007/BFb0022469|title=समवर्ती संगणना का शब्दार्थ|volume=70|pages=172–190|series=Lecture Notes in Computer Science|year=1979|last1=Kwong|first1=Y. S.|isbn=3-540-09511-X}}</ref> लाइवलॉक संसाधन भुखमरी का एक विशेष मामला है; सामान्य परिभाषा केवल यह बताती है कि एक विशिष्ट प्रक्रिया प्रगति नहीं कर रही है।<ref>{{cite web|url=http://citeseer.ist.psu.edu/anderson01sharedmemory.html|first=James H.|last=Anderson|author2=Yong-jik Kim|title=Shared-memory mutual exclusion: Major research trends since 1986|year=2001|url-status=live|archive-url=https://web.archive.org/web/20060525013335/http://citeseer.ist.psu.edu/anderson01sharedmemory.html|archive-date=25 May 2006}}</ref> | यह शब्द 1975 के पेपर में एडवर्ड ए। एशक्रॉफ्ट द्वारा गढ़ा गया था<ref>{{cite journal|title=समांतर कार्यक्रमों के बारे में दावा साबित करना|journal=Journal of Computer and System Sciences|volume=10|pages=110–135|doi=10.1016/S0022-0000(75)80018-3|year=1975|last1=Ashcroft|first1=E.A.|doi-access=free}}</ref> एयरलाइन बुकिंग सिस्टम की जांच के संबंध में।<ref>{{cite book|chapter=On the absence of livelocks in parallel programs|doi=10.1007/BFb0022469|title=समवर्ती संगणना का शब्दार्थ|volume=70|pages=172–190|series=Lecture Notes in Computer Science|year=1979|last1=Kwong|first1=Y. S.|isbn=3-540-09511-X}}</ref> लाइवलॉक संसाधन भुखमरी का एक विशेष मामला है; सामान्य परिभाषा केवल यह बताती है कि एक विशिष्ट प्रक्रिया प्रगति नहीं कर रही है।<ref>{{cite web|url=http://citeseer.ist.psu.edu/anderson01sharedmemory.html|first=James H.|last=Anderson|author2=Yong-jik Kim|title=Shared-memory mutual exclusion: Major research trends since 1986|year=2001|url-status=live|archive-url=https://web.archive.org/web/20060525013335/http://citeseer.ist.psu.edu/anderson01sharedmemory.html|archive-date=25 May 2006}}</ref> | ||
Revision as of 08:52, 25 May 2023
समवर्ती कंप्यूटिंग में, गतिरोध ऐसी कोई भी स्थिति है जिसमें संस्थाओं के कुछ समूह का कोई भी सदस्य आगे नहीं बढ़ सकता है क्योंकि प्रत्येक अन्य सदस्य के लिए प्रतीक्षा करता है, जिसमें स्वयं भी सम्मिलित है, जैसे कि संदेश भेजना या अधिक सामान्य रूप से लॉक (कंप्यूटर विज्ञान) जारी करना। [1] बहु संसाधन सिस्टम, समानांतर कंप्यूटिंग और वितरित अभिकलन में गतिरोध एक सामान्य समस्या है, क्योंकि इन संदर्भों में सिस्टम प्रायः साझा संसाधनों की मध्यस्थता और समकालन (कंप्यूटर विज्ञान) को लागू करने के लिए सॉफ़्टवेयर या हार्डवेयर लॉक का उपयोग करते हैं। [2]
ऑपरेटिंग सिस्टम में, गतिरोध तब होता है जब प्रक्रिया (कंप्यूटिंग) या थ्रेड (कंप्यूटिंग) एक प्रतीक्षा प्रक्रिया स्थिति में प्रवेश करती है क्योंकि एक अनुरोधित सिस्टम संसाधन दूसरी प्रतीक्षा प्रक्रिया द्वारा आयोजित किया जाता है, जो बदले में किसी अन्य प्रतीक्षा प्रक्रिया द्वारा रखे गए किसी अन्य संसाधन की प्रतीक्षा कर रहा है। गतिरोध एक ऐसी स्थिति है जो कई प्रक्रियाओं से बनी प्रणाली में हो सकती है जो साझा संसाधनों तक पहुंच सकती है। एक गतिरोध तब होता है जब दो या दो से अधिक प्रक्रियाएँ एक संसाधन जारी करने के लिए एक दूसरे की प्रतीक्षा कर रही होती हैं। कोई भी प्रक्रिया कोई प्रगति नहीं कर सकती है। यदि कोई प्रक्रिया अनिश्चित काल तक अपनी स्थिति को बदलने में असमर्थ रहती है क्योंकि उसके द्वारा अनुरोधित संसाधनों का उपयोग किसी अन्य प्रक्रिया द्वारा किया जा रहा है जो स्वयं प्रतीक्षा कर रही है, तो सिस्टम गतिरोध में कहा जाता है।[3]
एक संचार प्रणाली में, संसाधनों के लिए विवाद के स्थान पर मुख्य रूप से संकेतों के नुकसान या भ्रष्टाचार के कारण गतिरोध उत्पन्न होता है।[4]
- A single process goes through.
- The later process has to wait.
- A deadlock occurs when the first process locks the first resource at the same time as the second process locks the second resource.
- The deadlock can be resolved by cancelling and restarting the first process.
गतिरोध के लिए व्यक्तिगत रूप से आवश्यक और संयुक्त रूप से पर्याप्त शर्तें
किसी संसाधन पर गतिरोध की स्थिति केवल तभी उत्पन्न हो सकती है जब निम्नलिखित सभी स्थितियाँ एक साथ एक सिस्टम में उत्पन्न होती हैं:[5]
- पारस्परिक बहिष्करण: गैर-साझा करने योग्य मोड में कम से कम एक संसाधन होना चाहिए; अर्थात्, एक समय में केवल एक ही प्रक्रिया संसाधन का उपयोग कर सकती है।[6] अन्यथा, आवश्यक होने पर प्रक्रियाओं को संसाधन का उपयोग करने से नहीं रोका जाएगा। किसी भी समय केवल एक प्रक्रिया संसाधन का उपयोग कर सकती है।[7]
- होल्ड एंड वेट या रिसोर्स होल्डिंग: एक प्रक्रिया वर्तमान में कम से कम एक संसाधन रखती है और अतिरिक्त संसाधनों का अनुरोध करती है जो अन्य प्रक्रियाओं द्वारा आयोजित किए जा रहे हैं।
- नो प्रीमेशन (कम्प्यूटिंग): किसी संसाधन को केवल धारण करने वाली प्रक्रिया द्वारा स्वेच्छा से जारी किया जा सकता है।
- सर्कुलर प्रतीक्षा: प्रत्येक प्रक्रिया को एक संसाधन के लिए प्रतीक्षा करनी चाहिए जो किसी अन्य प्रक्रिया द्वारा आयोजित की जा रही है, जो बदले में संसाधन जारी करने के लिए पहली प्रक्रिया की प्रतीक्षा कर रही है। सामान्य तौर पर, प्रतीक्षा प्रक्रियाओं का एक सेट (गणित) होता है, P = {P1, पी2, …, पीN}, ऐसा है कि पी1 P के पास मौजूद संसाधन की प्रतीक्षा कर रहा है2, पी2 P के पास मौजूद संसाधन की प्रतीक्षा कर रहा है3 और इतने पर जब तक पीN P के पास मौजूद संसाधन की प्रतीक्षा कर रहा है1.[3][8]
एडवर्ड जी कॉफ़मैन, जूनियर द्वारा 1971 के एक लेख में इन चार स्थितियों को उनके पहले विवरण से कॉफ़मैन शर्तों के रूप में जाना जाता है।[8]
जबकि ये स्थितियाँ एकल-आवृत्ति संसाधन प्रणालियों पर गतिरोध उत्पन्न करने के लिए पर्याप्त हैं, वे केवल संसाधनों के कई उदाहरणों वाले सिस्टम पर गतिरोध की संभावना का संकेत देती हैं।[9]
डेडलॉक हैंडलिंग
अधिकांश मौजूदा ऑपरेटिंग सिस्टम गतिरोध को नहीं रोक सकते।[10] जब एक गतिरोध होता है, तो विभिन्न ऑपरेटिंग सिस्टम अलग-अलग गैर-मानक तरीके से उनका जवाब देते हैं। अधिकांश दृष्टिकोण चार सामान्य स्थितियों में से एक को होने से रोककर काम करते हैं, विशेष रूप से चौथा।[11] प्रमुख दृष्टिकोण इस प्रकार हैं।
गतिरोध की उपेक्षा
इस दृष्टिकोण में, यह माना जाता है कि गतिरोध कभी नहीं होगा। यह शुतुरमुर्ग एल्गोरिथम का एक अनुप्रयोग भी है।[11][12] यह दृष्टिकोण शुरू में MINIX और UNIX द्वारा उपयोग किया गया था।[8]इसका उपयोग तब किया जाता है जब गतिरोध की घटनाओं के बीच का समय अंतराल बड़ा होता है और हर बार होने वाली डेटा हानि सहनीय होती है।
गतिरोधों को अनदेखा करना सुरक्षित रूप से किया जा सकता है यदि गतिरोधों का औपचारिक सत्यापन कभी नहीं होता है। एक उदाहरण आरटीआईसी ढांचा है।[13]
जांच
गतिरोध का पता लगाने के तहत, गतिरोध होने की अनुमति है। फिर सिस्टम की स्थिति की जांच की जाती है ताकि यह पता लगाया जा सके कि गतिरोध हुआ है और बाद में इसे ठीक किया गया है। एक एल्गोरिदम कार्यरत है जो संसाधन आवंटन और प्रक्रिया की स्थिति को ट्रैक करता है, यह पता चला गतिरोध को दूर करने के लिए वापस रोल करता है और एक या अधिक प्रक्रियाओं को पुनरारंभ करता है। एक गतिरोध का पता लगाना जो पहले से ही हो चुका है, आसानी से संभव है क्योंकि प्रत्येक प्रक्रिया ने जिन संसाधनों को लॉक किया है और/या वर्तमान में अनुरोध किया है, वे ऑपरेटिंग सिस्टम के संसाधन अनुसूचक के लिए जाने जाते हैं।[12]
गतिरोध का पता चलने के बाद, इसे निम्न विधियों में से किसी एक का उपयोग करके ठीक किया जा सकता है:[citation needed]
- प्रक्रिया समाप्ति: गतिरोध में सम्मिलित एक या अधिक प्रक्रियाओं को निरस्त किया जा सकता है। गतिरोध में सम्मिलित सभी प्रतिस्पर्धी प्रक्रियाओं (कंप्यूटिंग) को निरस्त करने का विकल्प चुन सकते हैं। यह सुनिश्चित करता है कि गतिरोध का समाधान निश्चितता और गति के साथ हो।[citation needed] लेकिन व्यय अधिक है क्योंकि आंशिक संगणना खो जाएगी। या, जब तक गतिरोध का समाधान नहीं हो जाता, तब तक एक समय में एक प्रक्रिया को निरस्त करना चुन सकते हैं। इस दृष्टिकोण में एक उच्च ओवरहेड है क्योंकि प्रत्येक गर्भपात के बाद एक एल्गोरिथ्म को यह निर्धारित करना चाहिए कि सिस्टम अभी भी गतिरोध में है या नहीं।[citation needed] समाप्ति के लिए एक उम्मीदवार का चयन करते समय कई कारकों पर विचार किया जाना चाहिए, जैसे कि प्राथमिकता और प्रक्रिया की उम्र।[citation needed]
- रिसोर्स प्रीमेशन: विभिन्न प्रक्रियाओं के लिए आवंटित संसाधनों को क्रमिक रूप से प्रीमेप्ट किया जा सकता है और गतिरोध के टूटने तक अन्य प्रक्रियाओं को आवंटित किया जा सकता है।[14][failed verification]
रोकथाम
चार कॉफमैन स्थितियों में से एक को होने से रोककर डेडलॉक की रोकथाम काम करती है।
- पारस्परिक बहिष्करण शर्त को हटाने का अर्थ है कि किसी भी प्रक्रिया की किसी संसाधन तक अनन्य पहुँच नहीं होगी। यह उन संसाधनों के लिए असंभव साबित होता है जो अटेरन नहीं हो सकते। लेकिन बिखरे हुए संसाधनों के साथ भी, गतिरोध अभी भी हो सकता है। पारस्परिक बहिष्करण से बचने वाले एल्गोरिदम को गैर-अवरुद्ध सिंक्रनाइज़ेशन एल्गोरिदम कहा जाता है।
- होल्ड एंड वेट या रिसोर्स होल्डिंग की स्थिति को उन सभी संसाधनों का अनुरोध करने के लिए प्रक्रियाओं की आवश्यकता के द्वारा हटाया जा सकता है, जिनकी उन्हें शुरू करने से पहले (या संचालन के किसी विशेष सेट को शुरू करने से पहले) आवश्यकता होगी। यह उन्नत ज्ञान प्रायः संतुष्ट करना मुश्किल होता है और किसी भी मामले में संसाधनों का अक्षम उपयोग होता है। दूसरा तरीका यह है कि संसाधनों का अनुरोध करने के लिए प्रक्रियाओं की आवश्यकता तभी हो जब उसके पास कोई न हो; सबसे पहले, उन्हें उन सभी संसाधनों का अनुरोध करने से पहले अपने सभी वर्तमान संसाधनों को जारी करना होगा जिनकी उन्हें स्क्रैच से आवश्यकता होगी। यह भी कई बार अव्यवहारिक होता है। ऐसा इसलिए है क्योंकि संसाधन आवंटित किए जा सकते हैं और लंबे समय तक अप्रयुक्त रह सकते हैं। साथ ही, एक लोकप्रिय संसाधन की आवश्यकता वाली प्रक्रिया को अनिश्चित काल तक इंतजार करना पड़ सकता है, क्योंकि ऐसे संसाधन हमेशा किसी प्रक्रिया को आवंटित किए जा सकते हैं, जिसके परिणामस्वरूप संसाधन भुखमरी हो सकती है।[15] (ये एल्गोरिदम, जैसे कि क्रमबद्ध टोकन, को ऑल-ऑर-नो एल्गोरिदम के रूप में जाना जाता है।)
- नो प्रीमेशन (कंप्यूटिंग) की स्थिति से बचना मुश्किल या असंभव भी हो सकता है क्योंकि एक प्रक्रिया को एक निश्चित समय के लिए संसाधन रखने में सक्षम होना चाहिए, या प्रसंस्करण परिणाम असंगत हो सकता है या थ्रैशिंग (कंप्यूटर विज्ञान) हो सकता है। हालांकि, प्रीमेशन को लागू करने में असमर्थता प्राथमिकता एल्गोरिथम में हस्तक्षेप कर सकती है। लॉक आउट संसाधन की रोकथाम आम तौर पर रोलबैक (डेटा प्रबंधन) का तात्पर्य है, और इससे बचा जाना चाहिए क्योंकि यह ओवरहेड में बहुत महंगा है। प्रीमेशन की अनुमति देने वाले एल्गोरिदम में लॉक-फ्री और वेट-फ्री एल्गोरिदम और आशावादी समवर्ती नियंत्रण सम्मिलित हैं। यदि कोई प्रक्रिया कुछ संसाधनों को धारण करती है और किसी अन्य संसाधन (संसाधनों) के लिए अनुरोध करती है जिसे तुरंत आवंटित नहीं किया जा सकता है, तो उस प्रक्रिया के सभी वर्तमान संसाधनों को जारी करके स्थिति को हटाया जा सकता है।
- अंतिम स्थिति सर्कुलर प्रतीक्षा स्थिति है। सर्कुलर प्रतीक्षा से बचने वाले दृष्टिकोणों में महत्वपूर्ण वर्गों के दौरान रुकावटों को अक्षम करना और संसाधनों का आंशिक क्रम निर्धारित करने के लिए पदानुक्रम का उपयोग करना सम्मिलित है। यदि कोई स्पष्ट पदानुक्रम मौजूद नहीं है, तो संसाधनों के स्मृति पते का भी क्रम निर्धारित करने के लिए उपयोग किया गया है और गणना के बढ़ते क्रम में संसाधनों का अनुरोध किया जाता है।[3]भोजन दार्शनिकों की समस्या#संसाधन पदानुक्रम समाधान|दिज्क्स्ट्रा के समाधान का भी उपयोग किया जा सकता है।
गतिरोध परिहार
गतिरोध निवारण के समान, गतिरोध परिहार दृष्टिकोण यह सुनिश्चित करता है कि प्रणाली में गतिरोध उत्पन्न नहीं होगा। शब्द गतिरोध परिहार भाषाई संदर्भ में गतिरोध निवारण के बहुत करीब प्रतीत होता है, लेकिन वे गतिरोध से निपटने के संदर्भ में बहुत भिन्न हैं। गतिरोध परिहार किसी भी स्थिति को लागू नहीं करता है जैसा कि रोकथाम में देखा गया है लेकिन, यहां प्रत्येक संसाधन अनुरोध का सावधानीपूर्वक विश्लेषण किया जाता है ताकि यह देखा जा सके कि गतिरोध पैदा किए बिना इसे सुरक्षित रूप से पूरा किया जा सकता है या नहीं।
गतिरोध से बचाव के लिए आवश्यक है कि ऑपरेटिंग सिस्टम को अग्रिम रूप से अतिरिक्त जानकारी दी जाए कि कौन से संसाधन अपने जीवनकाल के दौरान संसाधनों का अनुरोध और उपयोग करेंगे। डेडलॉक परिहार एल्गोरिथम प्रत्येक अनुरोध का विश्लेषण करके जांच करता है कि यदि अनुरोधित संसाधन आवंटित किया गया है तो भविष्य में डेडलॉक होने की कोई संभावना नहीं है। इस दृष्टिकोण की कमी यह है कि भविष्य में संसाधनों का अनुरोध कैसे किया जाए, इसके बारे में पहले से जानकारी की आवश्यकता है। बैंकर्स एल्गोरिथम सबसे अधिक उपयोग किए जाने वाले डेडलॉक परिहार एल्गोरिथम में से एक है।[16]
लाइवलॉक
एक लाइवलॉक एक गतिरोध के समान है, सिवाय इसके कि लाइवलॉक में सम्मिलित प्रक्रियाओं की स्थिति एक दूसरे के संबंध में लगातार बदलती रहती है, कोई भी प्रगति नहीं करता है।
यह शब्द 1975 के पेपर में एडवर्ड ए। एशक्रॉफ्ट द्वारा गढ़ा गया था[17] एयरलाइन बुकिंग सिस्टम की जांच के संबंध में।[18] लाइवलॉक संसाधन भुखमरी का एक विशेष मामला है; सामान्य परिभाषा केवल यह बताती है कि एक विशिष्ट प्रक्रिया प्रगति नहीं कर रही है।[19] Livelock कुछ एल्गोरिदम के साथ एक जोखिम है जो गतिरोध का पता लगाता है और उससे उबरता है। यदि एक से अधिक प्रक्रियाएँ कार्रवाई करती हैं, तो डेडलॉक डिटेक्शन कलन विधि को बार-बार ट्रिगर किया जा सकता है। यह सुनिश्चित करके इससे बचा जा सकता है कि केवल एक प्रक्रिया (मनमाने ढंग से या प्राथमिकता से चुनी गई) कार्रवाई करती है।[20]
वितरित डेडलॉक
वितरित लेन-देन या समवर्ती नियंत्रण का उपयोग किए जाने पर वितरित डेडलॉक वितरित सिस्टम में हो सकते हैं।
वितरित डेडलॉक्स का पता या तो डेडलॉक डिटेक्टर पर स्थानीय प्रतीक्षा के लिए ग्राफ से ग्लोबल वेट-फ़ॉर ग्राफ़ बनाकर या एज चेज़िंग जैसे वितरित एल्गोरिथम द्वारा लगाया जा सकता है।
फैंटम गतिरोध गतिरोध हैं जो सिस्टम आंतरिक देरी के कारण वितरित सिस्टम में गलत तरीके से पहचाने जाते हैं लेकिन वास्तव में मौजूद नहीं होते हैं।
उदाहरण के लिए, यदि कोई प्रक्रिया एक संसाधन R1 जारी करती है और R2 के लिए एक अनुरोध जारी करती है, और पहला संदेश खो जाता है या विलंबित हो जाता है, तो एक समन्वयक (डेडलॉक का पता लगाने वाला) गलत तरीके से गतिरोध का निष्कर्ष निकाल सकता है (यदि R1 होने के दौरान R2 के लिए अनुरोध एक कारण होगा गतिरोध)।
यह भी देखें
- एपोरिया
- बैंकर का एल्गोरिदम
- कैच -22 (तर्क)
- वृत्तीय संदर्भ
- भोजन दार्शनिकों की समस्या
- फाइल लॉकिंग
- ग्रिडलॉक (वाहन यातायात में)
- हैंग (कंप्यूटिंग)
- [[गतिरोध]]
- अनंत लूप
- रैखिकता
- मॉडल चेकर का उपयोग औपचारिक रूप से यह सत्यापित करने के लिए किया जा सकता है कि सिस्टम कभी गतिरोध में प्रवेश नहीं करेगा
- शुतुरमुर्ग एल्गोरिथ्म
- प्राथमिकता उलटा
- दौड़ की स्थिति
- पाठक-लेखक ताला
- नींद नाई की समस्या
- गतिरोध
- तुल्यकालन (कंप्यूटर विज्ञान)
- टर्न रेस्ट्रिक्शन रूटिंग
संदर्भ
- ↑ Coulouris, George (2012). वितरित सिस्टम अवधारणा और डिजाइन. Pearson. p. 716. ISBN 978-0-273-76059-7.
- ↑ Padua, David (2011). समानांतर कंप्यूटिंग का विश्वकोश. Springer. p. 524. ISBN 9780387097657. Archived from the original on 18 April 2021. Retrieved 16 October 2020.
- ↑ 3.0 3.1 3.2 Silberschatz, Abraham (2006). ऑपरेटिंग सिस्टम सिद्धांत (7th ed.). Wiley-India. p. 237. ISBN 9788126509621. Archived from the original on 25 January 2022. Retrieved 16 October 2020.
- ↑ Schneider, G. Michael (2009). कंप्यूटर विज्ञान के लिए निमंत्रण. Cengage Learning. p. 271. ISBN 978-0324788594. Archived from the original on 18 April 2021. Retrieved 16 October 2020.
- ↑ Silberschatz, Abraham (2006). ऑपरेटिंग सिस्टम सिद्धांत (7 ed.). Wiley-India. p. 239. ISBN 9788126509621. Archived from the original on 18 April 2021. Retrieved 16 October 2020.
- ↑ ऑपरेटिंग सिस्टम अवधारणाओं. Wiley. 2012. p. 319. ISBN 978-1-118-06333-0.
- ↑ "ECS 150 Spring 1999: Four Necessary and Sufficient Conditions for Deadlock". nob.cs.ucdavis.edu. Archived from the original on 29 April 2018. Retrieved 29 April 2018.
- ↑ 8.0 8.1 8.2 Shibu, K. (2009). एंबेडेड सिस्टम का परिचय (1st ed.). Tata McGraw-Hill Education. p. 446. ISBN 9780070145894. Archived from the original on 18 April 2021. Retrieved 16 October 2020.
- ↑ "Operating Systems: Deadlocks". www.cs.uic.edu. Archived from the original on 28 May 2020. Retrieved 25 April 2020.
If a resource category contains more than one instance then the presence of a cycle in the resource-allocation graph indicates the possibility of a deadlock, but does not guarantee one. Consider, for example, Figures 7.3 and 7.4 below:
- ↑ Silberschatz, Abraham (2006). ऑपरेटिंग सिस्टम सिद्धांत (7 ed.). Wiley-India. p. 237. ISBN 9788126509621. Archived from the original on 18 April 2021. Retrieved 16 October 2020.
- ↑ 11.0 11.1 Stuart, Brian L. (2008). ऑपरेटिंग सिस्टम के सिद्धांत (1st ed.). Cengage Learning. p. 446. ISBN 9781418837693. Archived from the original on 18 April 2021. Retrieved 16 October 2020.
- ↑ 12.0 12.1 {{cite book |last=Tanenbaum |first=Andrew S. |url=https://books.google.com/books?id=l6sDRvKvCQ0C&q=Tanenbaum+ostrich&pg=PA177 |publisher=Pearson Education |year=1995 |title=वितरित ऑपरेटिंग सिस्टम|edition=1st |page=117 |isbn=9788177581799 |access-date=16 October 2020 |archive-date=18 April 2021 |archive-url=https://web.archive.org/web/20210418011235/https://books.google.com/books?id=l6sDRvKvCQ0C&q=Tanenbaum+ostrich&pg=PA177 |url-status=live }
- ↑ "प्रस्तावना - रीयल-टाइम इंटरप्ट-संचालित संगामिति". Archived from the original on 18 September 2020. Retrieved 1 October 2020.
- ↑ "आईबीएम ज्ञान केंद्र". www.ibm.com. Archived from the original on 19 March 2017. Retrieved 29 April 2018.
- ↑ Silberschatz, Abraham (2006). ऑपरेटिंग सिस्टम सिद्धांत (7 ed.). Wiley-India. p. 244. ISBN 9788126509621. Archived from the original on 18 April 2021. Retrieved 16 October 2020.
- ↑ "ऑपरेटिंग सिस्टम (OS) में डेडलॉक परिहार एल्गोरिदम". Electronics Mind. 26 January 2022.
- ↑ Ashcroft, E.A. (1975). "समांतर कार्यक्रमों के बारे में दावा साबित करना". Journal of Computer and System Sciences. 10: 110–135. doi:10.1016/S0022-0000(75)80018-3.
- ↑ Kwong, Y. S. (1979). "On the absence of livelocks in parallel programs". समवर्ती संगणना का शब्दार्थ. Lecture Notes in Computer Science. Vol. 70. pp. 172–190. doi:10.1007/BFb0022469. ISBN 3-540-09511-X.
- ↑ Anderson, James H.; Yong-jik Kim (2001). "Shared-memory mutual exclusion: Major research trends since 1986". Archived from the original on 25 May 2006.
- ↑ Zöbel, Dieter (October 1983). "The Deadlock problem: a classifying bibliography". ACM SIGOPS Operating Systems Review. 17 (4): 6–15. doi:10.1145/850752.850753. ISSN 0163-5980. S2CID 38901737.
अग्रिम पठन
- Kaveh, Nima; Emmerich, Wolfgang. "Deadlock Detection in Distributed Object Systems" (PDF). London: University College London.
{{cite journal}}: Cite journal requires|journal=(help) - Bensalem, Saddek; Fernandez, Jean-Claude; Havelund, Klaus; Mounier, Laurent (2006). Confirmation of deadlock potentials detected by runtime analysis. pp. 41–50. CiteSeerX 10.1.1.431.3757. doi:10.1145/1147403.1147412. ISBN 978-1595934147. S2CID 2544690.
{{cite book}}:|journal=ignored (help) - Coffman, Edward G. Jr.; Elphick, Michael J.; Shoshani, Arie (1971). "System Deadlocks" (PDF). ACM Computing Surveys. 3 (2): 67–78. doi:10.1145/356586.356588. S2CID 15975305.
- Mogul, Jeffrey C.; Ramakrishnan, K. K. (1997). "Eliminating receive livelock in an interrupt-driven kernel". ACM Transactions on Computer Systems. 15 (3): 217–252. CiteSeerX 10.1.1.156.667. doi:10.1145/263326.263335. ISSN 0734-2071. S2CID 215749380.
- Havender, James W. (1968). "Avoiding deadlock in multitasking systems". IBM Systems Journal. 7 (2): 74. doi:10.1147/sj.72.0074.
- Holliday, JoAnne L.; El Abbadi, Amr. "Distributed Deadlock Detection". Encyclopedia of Distributed Computing. Archived from the original on 2 November 2015. Retrieved 29 December 2004.
- Knapp, Edgar (1987). "Deadlock detection in distributed databases". ACM Computing Surveys. 19 (4): 303–328. CiteSeerX 10.1.1.137.6874. doi:10.1145/45075.46163. ISSN 0360-0300. S2CID 2353246.
- Ling, Yibei; Chen, Shigang; Chiang, Jason (2006). "On Optimal Deadlock Detection Scheduling". IEEE Transactions on Computers. 55 (9): 1178–1187. CiteSeerX 10.1.1.259.4311. doi:10.1109/tc.2006.151. S2CID 7813284.
बाहरी संबंध
- "Advanced Synchronization in Java Threads" by Scott Oaks and Henry Wong
- Deadlock Detection Agents
- DeadLock at the Portland Pattern Repository
- Etymology of "Deadlock"