डेडलॉक: Difference between revisions
(TEXT) |
No edit summary |
||
(6 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
[[File:Process deadlock.svg|thumb|right|निष्पादन जारी रखने के लिए दोनों प्रक्रियाओं को संसाधनों की आवश्यकता होती है। ''P1'' को अतिरिक्त संसाधन ''R1'' की आवश्यकता है और संसाधन R2 के कब्जे में है, ''P2'' को अतिरिक्त संसाधन ''R2'' की आवश्यकता है और ''R1'' के अधिकार में है; कोई भी प्रक्रिया जारी नहीं रह सकती।|216x216px]] | |||
{{ | [[File:Deadlock at a four-way-stop.gif|thumbnail|right|दाएँ-पहले-बाएँ नीति का पालन करते हुए चार प्रक्रियाएँ (नीली रेखाएँ) एक संसाधन (ग्रे वृत्त) के लिए प्रतिस्पर्धा करती हैं। एक डेडलॉक तब होता है जब सभी प्रक्रियाएँ संसाधन को एक साथ (काली रेखाएँ) बंद कर देती हैं। डेडलॉक को समरूपता को तोड़कर हल किया जा सकता है।|213x213px]][[समवर्ती कंप्यूटिंग]] में, '''डेडलॉक''' ऐसी कोई भी स्थिति है जिसमें संस्थाओं के कुछ समूह का कोई भी सदस्य आगे नहीं बढ़ सकता है क्योंकि प्रत्येक अन्य सदस्य के लिए प्रतीक्षा करता है, जिसमें स्वयं भी सम्मिलित है, जैसे कि संदेश भेजना या अधिक सामान्य रूप से लॉक (कंप्यूटर विज्ञान) जारी करना। <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 | ||
|एक ही प्रक्रिया से पारित होती है। | |एक ही प्रक्रिया से पारित होती है। | ||
|बाद की प्रक्रिया के लिए इंतजार करना पड़ता है। | |बाद की प्रक्रिया के लिए इंतजार करना पड़ता है। | ||
|डेडलॉक तब होता है जब पहली प्रक्रिया पहले संसाधन को उसी समय बंद कर देती है जब दूसरी प्रक्रिया दूसरे संसाधन को बंद कर देती है।|पहली प्रक्रिया को रद्द करके और पुनः आरंभ करके गतिरोध को हल किया जा सकता है।}}]] | |डेडलॉक तब होता है जब पहली प्रक्रिया पहले संसाधन को उसी समय बंद कर देती है जब दूसरी प्रक्रिया दूसरे संसाधन को बंद कर देती है।|पहली प्रक्रिया को रद्द करके और पुनः आरंभ करके गतिरोध को हल किया जा सकता है।}}|344x344px]] | ||
== | == डेडलॉक के लिए व्यक्तिगत रूप से आवश्यक और संयुक्त रूप से पर्याप्त स्थिति == | ||
किसी संसाधन पर | किसी संसाधन पर डेडलॉक की स्थिति केवल तभी उत्पन्न हो सकती है जब निम्नलिखित सभी स्थितियाँ एक साथ एक प्रणाली में उत्पन्न होती हैं:<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=239|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>{{Cite book|title=ऑपरेटिंग सिस्टम अवधारणाओं|publisher=Wiley|year=2012|isbn=978-1-118-06333-0|pages=319}}</ref> अन्यथा, आवश्यक होने पर प्रक्रियाओं को संसाधन का उपयोग करने से नहीं रोका जाएगा। किसी भी समय केवल एक प्रक्रिया संसाधन का उपयोग कर सकती है।<ref>{{cite web|url=http://nob.cs.ucdavis.edu/classes/ecs150-1999-02/dl-cond.html|title=ECS 150 Spring 1999: Four Necessary and Sufficient Conditions for Deadlock|website=nob.cs.ucdavis.edu|access-date=29 April 2018|url-status=live|archive-url=https://web.archive.org/web/20180429180831/http://nob.cs.ucdavis.edu/classes/ecs150-1999-02/dl-cond.html|archive-date=29 April 2018}}</ref> | # पारस्परिक बहिष्करण: गैर-साझा करने योग्य प्रणाली में कम से कम एक संसाधन होना चाहिए; अर्थात्, एक समय में केवल एक ही प्रक्रिया संसाधन का उपयोग कर सकती है।<ref>{{Cite book|title=ऑपरेटिंग सिस्टम अवधारणाओं|publisher=Wiley|year=2012|isbn=978-1-118-06333-0|pages=319}}</ref> अन्यथा, आवश्यक होने पर प्रक्रियाओं को संसाधन का उपयोग करने से नहीं रोका जाएगा। किसी भी समय केवल एक प्रक्रिया संसाधन का उपयोग कर सकती है।<ref>{{cite web|url=http://nob.cs.ucdavis.edu/classes/ecs150-1999-02/dl-cond.html|title=ECS 150 Spring 1999: Four Necessary and Sufficient Conditions for Deadlock|website=nob.cs.ucdavis.edu|access-date=29 April 2018|url-status=live|archive-url=https://web.archive.org/web/20180429180831/http://nob.cs.ucdavis.edu/classes/ecs150-1999-02/dl-cond.html|archive-date=29 April 2018}}</ref> | ||
# कोई पूर्वक्रय (कम्प्यूटिंग) नहीं: किसी संसाधन को केवल धारण करने वाली प्रक्रिया द्वारा स्वेच्छा से जारी किया जा सकता है। | # कोई पूर्वक्रय (कम्प्यूटिंग) नहीं: किसी संसाधन को केवल धारण करने वाली प्रक्रिया द्वारा स्वेच्छा से जारी किया जा सकता है। | ||
Line 23: | Line 18: | ||
एडवर्ड जी कॉफ़मैन, जूनियर द्वारा 1971 के एक लेख में इन चार स्थितियों को उनके पहले विवरण से कॉफ़मैन परिस्थिति के रूप में जाना जाता है।<ref name="embb"/> | एडवर्ड जी कॉफ़मैन, जूनियर द्वारा 1971 के एक लेख में इन चार स्थितियों को उनके पहले विवरण से कॉफ़मैन परिस्थिति के रूप में जाना जाता है।<ref name="embb"/> | ||
जबकि ये स्थितियाँ एकल-आवृत्ति संसाधन प्रणालियों पर | जबकि ये स्थितियाँ एकल-आवृत्ति संसाधन प्रणालियों पर डेडलॉक उत्पन्न करने के लिए पर्याप्त हैं, वे केवल संसाधनों के कई उदाहरणों वाले प्रणाली पर डेडलॉक की संभावना का संकेत देती हैं।<ref>{{Cite web|url=https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/7_Deadlocks.html|title=Operating Systems: Deadlocks|website=www.cs.uic.edu|access-date=2020-04-25|quote=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:|archive-date=28 May 2020|archive-url=https://web.archive.org/web/20200528052638/https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/7_Deadlocks.html|url-status=live}}</ref> | ||
== डेडलॉक प्रबंधन == | == डेडलॉक प्रबंधन == | ||
अधिकांश वर्तमान ऑपरेटिंग प्रणाली | अधिकांश वर्तमान ऑपरेटिंग प्रणाली डेडलॉक को नहीं रोक सकते। <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=237|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=pric_os>{{cite book |last=Stuart |first=Brian L. |url=https://books.google.com/books?id=B5NC5-UfMMwC&q=coffman+conditions&pg=PA112 |publisher=Cengage Learning |year=2008 |title=ऑपरेटिंग सिस्टम के सिद्धांत|edition=1st |page=446 |isbn=9781418837693 |access-date=16 October 2020 |archive-date=18 April 2021 |archive-url=https://web.archive.org/web/20210418033945/https://books.google.com/books?id=B5NC5-UfMMwC&q=coffman+conditions&pg=PA112 |url-status=live }}</ref> प्रमुख दृष्टिकोण इस प्रकार हैं। | ||
=== डेडलॉक की उपेक्षा === | |||
इस दृष्टिकोण में, यह माना जाता है कि डेडलॉक कभी नहीं होगा। यह ऑस्ट्रिच कलन विधि का एक अनुप्रयोग भी है। <ref name="pric_os" /><ref name="distri_tanen">{{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 }</ref> यह दृष्टिकोण प्रारम्भ में [[MINIX|मिनिक्स]] और [[UNIX|यूनिक्स]] द्वारा उपयोग किया गया था। <ref name="embb"/> इसका उपयोग तब किया जाता है जब डेडलॉक की घटनाओं के बीच का समय अंतराल बड़ा होता है और हर बार होने वाली डेटा हानि सहनीय होती है। | |||
डेडलॉकों को अनदेखा करना सुरक्षित रूप से किया जा सकता है यदि डेडलॉकों का [[औपचारिक सत्यापन]] कभी नहीं होता है। एक उदाहरण आरटीआईसी ढांचा है।<ref>{{Cite web|url=https://rtic.rs/0.5/book/en/|title=प्रस्तावना - रीयल-टाइम इंटरप्ट-संचालित संगामिति|access-date=1 October 2020|archive-date=18 September 2020|archive-url=https://web.archive.org/web/20200918143731/https://rtic.rs/0.5/book/en/|url-status=live}}</ref> | |||
=== जांच === | === जांच === | ||
डेडलॉक का पता लगाने के अंतर्गत, डेडलॉक होने की अनुमति है। फिर प्रणाली की स्थिति की जांच की जाती है ताकि यह पता लगाया जा सके कि डेडलॉक हुआ है और बाद में इसे ठीक किया गया है। एक कलन विधि कार्यरत है जो संसाधन आवंटन और प्रक्रिया की स्थिति को पथानुसरण करता है, यह पता लगाए गए डेडलॉक को दूर करने के लिए वापस रोल करता है और एक या अधिक प्रक्रियाओं को पुनरारंभ करता है। एक डेडलॉक का पता लगाना जो पहले से ही हो चुका है, आसानी से संभव है क्योंकि प्रत्येक प्रक्रिया ने जिन संसाधनों को बंद किया है और/या वर्तमान में अनुरोध किया है, वे ऑपरेटिंग सिस्टम के संसाधन अनुसूचक के लिए जाने जाते हैं।<ref name=distri_tanen /> | |||
डेडलॉक का पता चलने के बाद, इसे निम्न विधियों में से किसी एक का उपयोग करके ठीक किया जा सकता है: | |||
# प्रक्रिया समाप्ति: | # प्रक्रिया समाप्ति: डेडलॉक में सम्मिलित एक या अधिक प्रक्रियाओं को निरस्त किया जा सकता है। डेडलॉक में सम्मिलित सभी प्रतिस्पर्धी प्रक्रियाओं (कंप्यूटिंग) को निरस्त करने का विकल्प चुन सकते हैं। यह सुनिश्चित करता है कि डेडलॉक का समाधान निश्चितता और गति के साथ है। लेकिन व्यय अधिक है क्योंकि आंशिक संगणना खो जाएगी। या, जब तक डेडलॉक का समाधान नहीं हो जाता, तब तक एक समय में एक प्रक्रिया को निरस्त करना चुन सकते हैं। इस दृष्टिकोण में एक उच्च शिरोपरि है क्योंकि प्रत्येक अवर्द्धित के बाद एक कलन विधि को यह निर्धारित करना चाहिए कि प्रणाली अभी भी डेडलॉक में है या नहीं। समाप्ति के लिए एक उम्मीदवार का चयन करते समय कई कारकों पर विचार किया जाना चाहिए, जैसे कि प्राथमिकता और प्रक्रिया की उम्र। | ||
# स्रोत अग्रक्रय: विभिन्न प्रक्रियाओं के लिए आवंटित संसाधनों को क्रमिक रूप से रोका जा सकता है और | # स्रोत अग्रक्रय: विभिन्न प्रक्रियाओं के लिए आवंटित संसाधनों को क्रमिक रूप से रोका जा सकता है और डेडलॉक के टूटने तक अन्य प्रक्रियाओं को आवंटित किया जा सकता है।<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> | ||
=== रोकथाम === | === रोकथाम === | ||
{{main|डेडलॉक रोकथाम कलन विधि}} | {{main|डेडलॉक रोकथाम कलन विधि}} | ||
[[File:Avoiding deadlock.gif| | [[File:Avoiding deadlock.gif|171x171px|thumbnail|right|(ए) पहले पाओ की नीति का पालन करते हुए दो प्रक्रियाएँ एक संसाधन के लिए प्रतिस्पर्धा करती हैं।(बी) डेडलॉक तब होता है जब दोनों प्रक्रियाएं संसाधन को एक साथ लॉक कर देती हैं। | ||
(सी) तालों की समरूपता को तोड़कर | (सी) तालों की समरूपता को तोड़कर डेडलॉक को हल किया जा सकता है। | ||
(डी) लॉकिंग तंत्र की समरूपता को तोड़कर डेडलॉक को रोका जा सकता है।]]चार कॉफमैन स्थितियों में से एक को होने से रोककर डेडलॉक की रोकथाम काम करती है। | (डी) लॉकिंग तंत्र की समरूपता को तोड़कर डेडलॉक को रोका जा सकता है।]]चार कॉफमैन स्थितियों में से एक को होने से रोककर डेडलॉक की रोकथाम काम करती है। | ||
* पारस्परिक बहिष्करण परिस्तिथि को हटाने का अर्थ है कि किसी भी प्रक्रिया की किसी संसाधन तक अनन्य पहुँच नहीं होगी। यह उन संसाधनों के लिए असंभव सिद्ध होता है जो [[ अटेरन ]]नहीं हो सकते। लेकिन बिखरे हुए संसाधनों के साथ भी, | * पारस्परिक बहिष्करण परिस्तिथि को हटाने का अर्थ है कि किसी भी प्रक्रिया की किसी संसाधन तक अनन्य पहुँच नहीं होगी। यह उन संसाधनों के लिए असंभव सिद्ध होता है जो [[ अटेरन ]]नहीं हो सकते। लेकिन बिखरे हुए संसाधनों के साथ भी, डेडलॉक अभी भी हो सकता है। पारस्परिक बहिष्करण से बचने वाले कलन विधि को गैर-अवरुद्ध समकालन कलन विधि कहा जाता है। | ||
* होल्ड एंड वेट या रिसोर्स होल्डिंग की स्थिति को उन सभी संसाधनों का अनुरोध करने के लिए प्रक्रियाओं की आवश्यकता के द्वारा हटाया जा सकता है, जिनकी उन्हें प्रारम्भ करने से पहले (या संचालन के किसी विशेष सम्मुच्चय को प्रारम्भ करने से पहले) आवश्यकता होगी। यह उन्नत ज्ञान प्रायः संतुष्ट करना कठिन होता है और किसी भी स्तिथि में संसाधनों का अक्षम उपयोग होता है। दूसरा तरीका यह है कि संसाधनों का अनुरोध करने के लिए प्रक्रियाओं की आवश्यकता तभी हो जब उसके पास कोई न हो; सबसे पहले, उन्हें उन सभी संसाधनों का अनुरोध करने से पहले अपने सभी वर्तमान संसाधनों को जारी करना होगा जिनकी उन्हें प्रारम्भ से आवश्यकता होगी। यह भी कई बार अव्यवहारिक होता है। ऐसा इसलिए है क्योंकि संसाधन आवंटित किए जा सकते हैं और लंबे समय तक अप्रयुक्त रह सकते हैं। साथ ही, एक लोकप्रिय संसाधन की आवश्यकता वाली प्रक्रिया को अनिश्चित काल तक इंतजार करना पड़ सकता है, क्योंकि ऐसे संसाधन हमेशा किसी प्रक्रिया को आवंटित किए जा सकते हैं, जिसके परिणामस्वरूप [[संसाधन भुखमरी]] हो सकती है।<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>{{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"/> दिज्क्स्ट्रा के समाधान का भी उपयोग किया जा सकता है। | * अंतिम स्थिति वृत्ताकार प्रतीक्षा स्थिति है। वृत्ताकार प्रतीक्षा से बचने वाले दृष्टिकोणों में महत्वपूर्ण वर्गों के दौरान रुकावटों को अक्षम करना और संसाधनों का आंशिक क्रम निर्धारित करने के लिए पदानुक्रम का उपयोग करना सम्मिलित है। यदि कोई स्पष्ट पदानुक्रम उपस्थित नहीं है, तो संसाधनों के स्मृति पते का भी क्रम निर्धारित करने के लिए उपयोग किया गया है और गणना के बढ़ते क्रम में संसाधनों का अनुरोध किया जाता है। <ref name="os_galvin"/> दिज्क्स्ट्रा के समाधान का भी उपयोग किया जा सकता है। | ||
=== | === डेडलॉक परिहार === | ||
डेडलॉक निवारण के समान, डेडलॉक परिहार दृष्टिकोण यह सुनिश्चित करता है कि प्रणाली में डेडलॉक उत्पन्न नहीं होगा। शब्द डेडलॉक परिहार भाषाई संदर्भ में डेडलॉक निवारण के बहुत करीब प्रतीत होता है, लेकिन वे डेडलॉक से निपटने के संदर्भ में बहुत भिन्न हैं। डेडलॉक परिहार किसी भी स्थिति को लागू नहीं करता है जैसा कि रोकथाम में देखा गया है लेकिन, यहां प्रत्येक संसाधन अनुरोध का सावधानीपूर्वक विश्लेषण किया जाता है ताकि यह देखा जा सके कि डेडलॉक उत्पन्न किए बिना इसे सुरक्षित रूप से पूरा किया जा सकता है या नहीं। | |||
डेडलॉक से बचाव के लिए आवश्यक है कि ऑपरेटिंग प्रणाली को अग्रिम रूप से अतिरिक्त जानकारी दी जाए कि कौन से संसाधन अपने जीवनकाल के दौरान संसाधनों का अनुरोध और उपयोग करेंगे। डेडलॉक परिहार कलन विधि प्रत्येक अनुरोध का विश्लेषण करके जांच करता है कि यदि अनुरोधित संसाधन आवंटित किया गया है तो भविष्य में डेडलॉक होने की कोई संभावना नहीं है। इस दृष्टिकोण की कमी यह है कि भविष्य में संसाधनों का अनुरोध कैसे किया जाए, इसके बारे में पहले से जानकारी की आवश्यकता है। बैंकर्स कलन विधि सबसे अधिक उपयोग किए जाने वाले डेडलॉक परिहार कलन विधि में से एक है।<ref>{{Cite web|url=https://www.electronicsmind.com/2022/01/deadlock-avoidance-algorithms-in-operating-system.html|title=ऑपरेटिंग सिस्टम (OS) में डेडलॉक परिहार एल्गोरिदम|date=26 January 2022|website=Electronics Mind}}</ref> | |||
== लाइवलॉक == | == लाइवलॉक == | ||
{{redirect|लाइवलॉक|वीडियो गेम|लाइवलॉक (वीडियो गेम)}} | {{redirect|लाइवलॉक|वीडियो गेम|लाइवलॉक (वीडियो गेम)}} | ||
लाइवलॉक एक | लाइवलॉक एक डेडलॉक के समान है, अतिरिक्त इसके कि लाइवलॉक में सम्मिलित प्रक्रियाओं की स्थिति एक दूसरे के संबंध में लगातार बदलती रहती है, कोई भी प्रगति नहीं करता है। | ||
यह शब्द 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> | ||
लाइवलॉक कुछ कलन विधि के साथ एक जोखिम है जो | लाइवलॉक कुछ कलन विधि के साथ एक जोखिम है जो डेडलॉक का पता लगाता है और उससे उबरता है। यदि एक से अधिक प्रक्रियाएँ कार्रवाई करती हैं, तो डेडलॉक अभिज्ञान[[ कलन विधि | कलन विधि]] को बार-बार प्रेरित किया जा सकता है। यह सुनिश्चित करके इससे बचा जा सकता है कि केवल एक प्रक्रिया (स्वेच्छाचारी ढंग से या प्राथमिकता से चुनी गई) कार्रवाई करती है।<ref>{{cite journal|doi=10.1145/850752.850753 |title=The Deadlock problem: a classifying bibliography | first = Dieter |last = Zöbel | journal = ACM SIGOPS Operating Systems Review |volume=17 |issue=4 |date=October 1983 |issn=0163-5980 |pages = 6–15|s2cid=38901737 |doi-access=free }}</ref> | ||
== वितरित डेडलॉक == | == वितरित डेडलॉक == | ||
वितरित लेन-देन या समवर्ती नियंत्रण का उपयोग किए जाने पर वितरित डेडलॉक वितरित प्रणाली में हो सकते हैं। | वितरित लेन-देन या समवर्ती नियंत्रण का उपयोग किए जाने पर वितरित डेडलॉक वितरित प्रणाली में हो सकते हैं। | ||
Line 76: | Line 62: | ||
वितरित डेडलॉक्स का पता या तो डेडलॉक संसूचक पर स्थानीय [[प्रतीक्षा के लिए ग्राफ|प्रतीक्षा के लिए लेखाचित्र]] से सार्वभौमिक वेट-फ़ॉर लेखाचित्र बनाकर या सीमा उत्कीर्णन जैसे वितरित कलन विधि द्वारा लगाया जा सकता है। | वितरित डेडलॉक्स का पता या तो डेडलॉक संसूचक पर स्थानीय [[प्रतीक्षा के लिए ग्राफ|प्रतीक्षा के लिए लेखाचित्र]] से सार्वभौमिक वेट-फ़ॉर लेखाचित्र बनाकर या सीमा उत्कीर्णन जैसे वितरित कलन विधि द्वारा लगाया जा सकता है। | ||
फैंटम | फैंटम डेडलॉक वे डेडलॉक हैं जो प्रणाली आंतरिक देरी के कारण वितरित प्रणाली में गलत तरीके से पहचाने जाते हैं लेकिन वास्तव में उपस्थित नहीं होते हैं। | ||
उदाहरण के लिए, यदि कोई प्रक्रिया एक संसाधन R1 जारी करती है और R2 के लिए एक अनुरोध जारी करती है, और पहला संदेश खो जाता है या विलंबित हो जाता है, तो एक समन्वयक (डेडलॉक का पता लगाने वाला) गलत तरीके से | उदाहरण के लिए, यदि कोई प्रक्रिया एक संसाधन ''R1'' जारी करती है और ''R2'' के लिए एक अनुरोध जारी करती है, और पहला संदेश खो जाता है या विलंबित हो जाता है, तो एक समन्वयक (डेडलॉक का पता लगाने वाला) गलत तरीके से डेडलॉक का निष्कर्ष निकाल सकता है (यदि R1 होने के दौरान ''R2'' के लिए अनुरोध एक कारण होगा डेडलॉक)। | ||
== यह भी देखें == | == यह भी देखें == | ||
Line 106: | Line 92: | ||
==संदर्भ== | ==संदर्भ== | ||
{{reflist}} | {{reflist}} | ||
==अग्रिम पठन== | ==अग्रिम पठन== | ||
* {{cite journal|title=Deadlock Detection in Distributed Object Systems|publisher=University College London|location=London|url=http://www.cs.ucl.ac.uk/staff/w.emmerich/publications/ESEC01/ModelChecking/esec.pdf|first1=Nima|last1=Kaveh|first2=Wolfgang|last2=Emmerich}} | * {{cite journal|title=Deadlock Detection in Distributed Object Systems|publisher=University College London|location=London|url=http://www.cs.ucl.ac.uk/staff/w.emmerich/publications/ESEC01/ModelChecking/esec.pdf|first1=Nima|last1=Kaveh|first2=Wolfgang|last2=Emmerich}} | ||
Line 117: | Line 101: | ||
* {{cite journal|last=Knapp|first=Edgar|year=1987|title=Deadlock detection in distributed databases| journal=ACM Computing Surveys|volume=19|issue=4|pages=303–328|issn=0360-0300|doi=10.1145/45075.46163|citeseerx=10.1.1.137.6874|s2cid=2353246}} | * {{cite journal|last=Knapp|first=Edgar|year=1987|title=Deadlock detection in distributed databases| journal=ACM Computing Surveys|volume=19|issue=4|pages=303–328|issn=0360-0300|doi=10.1145/45075.46163|citeseerx=10.1.1.137.6874|s2cid=2353246}} | ||
* {{cite journal|last1=Ling|first1=Yibei|last2=Chen|first2=Shigang|last3=Chiang|first3=Jason|year=2006|title=On Optimal Deadlock Detection Scheduling|journal=IEEE Transactions on Computers|volume=55|issue=9|pages=1178–1187|doi=10.1109/tc.2006.151|citeseerx=10.1.1.259.4311|s2cid=7813284}} | * {{cite journal|last1=Ling|first1=Yibei|last2=Chen|first2=Shigang|last3=Chiang|first3=Jason|year=2006|title=On Optimal Deadlock Detection Scheduling|journal=IEEE Transactions on Computers|volume=55|issue=9|pages=1178–1187|doi=10.1109/tc.2006.151|citeseerx=10.1.1.259.4311|s2cid=7813284}} | ||
==बाहरी संबंध== | ==बाहरी संबंध== | ||
* "[http://www.onjava.com/pub/a/onjava/2004/10/20/threads2.html Advanced Synchronization in Java Threads]" by Scott Oaks and Henry Wong | * "[http://www.onjava.com/pub/a/onjava/2004/10/20/threads2.html Advanced Synchronization in Java Threads]" by Scott Oaks and Henry Wong | ||
Line 124: | Line 106: | ||
* [[c2:DeadLock|DeadLock]] at the Portland Pattern Repository | * [[c2:DeadLock|DeadLock]] at the Portland Pattern Repository | ||
* [http://www.etymonline.com/index.php?term=deadlock Etymology of "Deadlock"] | * [http://www.etymonline.com/index.php?term=deadlock Etymology of "Deadlock"] | ||
[[Category:All articles with failed verification]] | [[Category:All articles with failed verification]] | ||
Line 137: | Line 116: | ||
[[Category:Collapse templates]] | [[Category:Collapse templates]] | ||
[[Category:Created On 15/05/2023]] | [[Category:Created On 15/05/2023]] | ||
[[Category:Lua-based templates]] | |||
[[Category:Machine Translated Page]] | [[Category:Machine Translated Page]] | ||
[[Category:Missing redirects]] | |||
[[Category:Multi-column templates]] | |||
[[Category:Pages using div col with small parameter]] | |||
[[Category:Pages with script errors]] | |||
[[Category:Templates Vigyan Ready]] | |||
[[Category:Templates that add a tracking category]] | |||
[[Category:Templates using TemplateData]] | |||
[[Category:Templates using under-protected Lua modules]] | |||
[[Category:Wikipedia fully protected templates|Div col]] |
Latest revision as of 13:09, 7 November 2023
समवर्ती कंप्यूटिंग में, डेडलॉक ऐसी कोई भी स्थिति है जिसमें संस्थाओं के कुछ समूह का कोई भी सदस्य आगे नहीं बढ़ सकता है क्योंकि प्रत्येक अन्य सदस्य के लिए प्रतीक्षा करता है, जिसमें स्वयं भी सम्मिलित है, जैसे कि संदेश भेजना या अधिक सामान्य रूप से लॉक (कंप्यूटर विज्ञान) जारी करना। [1] बहु संसाधन प्रणाली, समानांतर कंप्यूटिंग और वितरित अभिकलन में डेडलॉक एक सामान्य समस्या है, क्योंकि इन संदर्भों में प्रणाली प्रायः साझा संसाधनों की मध्यस्थता और समकालन (कंप्यूटर विज्ञान) को लागू करने के लिए सॉफ़्टवेयर या हार्डवेयर लॉक का उपयोग करते हैं। [2]
ऑपरेटिंग सिस्टम में, डेडलॉक तब होता है जब प्रक्रिया (कंप्यूटिंग) या थ्रेड (कंप्यूटिंग) एक प्रतीक्षा प्रक्रिया स्थिति में प्रवेश करती है क्योंकि एक अनुरोधित प्रणाली संसाधन दूसरी प्रतीक्षा प्रक्रिया द्वारा आयोजित किया जाता है, जो बदले में किसी अन्य प्रतीक्षा प्रक्रिया द्वारा रखे गए किसी अन्य संसाधन की प्रतीक्षा कर रहा है। डेडलॉक एक ऐसी स्थिति है जो कई प्रक्रियाओं से बनी प्रणाली में हो सकती है जो साझा संसाधनों तक पहुंच सकती है। एक डेडलॉक तब होता है जब दो या दो से अधिक प्रक्रियाएँ एक संसाधन जारी करने के लिए एक दूसरे की प्रतीक्षा कर रही होती हैं। कोई भी प्रक्रिया कोई प्रगति नहीं कर सकती है। यदि कोई प्रक्रिया अनिश्चित काल तक अपनी स्थिति को बदलने में असमर्थ रहती है क्योंकि उसके द्वारा अनुरोधित संसाधनों का उपयोग किसी अन्य प्रक्रिया द्वारा किया जा रहा है जो स्वयं प्रतीक्षा कर रही है, तो प्रणाली डेडलॉक में कहा जाता है।[3]
एक संचार प्रणाली में, संसाधनों के लिए विवाद के स्थान पर मुख्य रूप से संकेतों के नुकसान या भ्रष्टाचार के कारण डेडलॉक उत्पन्न होता है।[4]
डेडलॉक के लिए व्यक्तिगत रूप से आवश्यक और संयुक्त रूप से पर्याप्त स्थिति
किसी संसाधन पर डेडलॉक की स्थिति केवल तभी उत्पन्न हो सकती है जब निम्नलिखित सभी स्थितियाँ एक साथ एक प्रणाली में उत्पन्न होती हैं:[5]
- पारस्परिक बहिष्करण: गैर-साझा करने योग्य प्रणाली में कम से कम एक संसाधन होना चाहिए; अर्थात्, एक समय में केवल एक ही प्रक्रिया संसाधन का उपयोग कर सकती है।[6] अन्यथा, आवश्यक होने पर प्रक्रियाओं को संसाधन का उपयोग करने से नहीं रोका जाएगा। किसी भी समय केवल एक प्रक्रिया संसाधन का उपयोग कर सकती है।[7]
- कोई पूर्वक्रय (कम्प्यूटिंग) नहीं: किसी संसाधन को केवल धारण करने वाली प्रक्रिया द्वारा स्वेच्छा से जारी किया जा सकता है।
- वृत्ताकार प्रतीक्षा: प्रत्येक प्रक्रिया को एक संसाधन के लिए प्रतीक्षा करनी चाहिए जो किसी अन्य प्रक्रिया द्वारा आयोजित की जा रही है, जो बदले में संसाधन जारी करने के लिए पहली प्रक्रिया की प्रतीक्षा कर रही है। सामान्य तौर पर, प्रतीक्षा प्रक्रियाओं का एक सम्मुच्चय (गणित) P = {P1, P2, …, PN} होता है, यह इस प्रकार है कि P1 P2 के पास उपस्थित संसाधन की प्रतीक्षा कर रहा है, P2 P3 के पास उपस्थित संसाधन की प्रतीक्षा कर रहा है और इतने पर जब तक PN P1 के पास उपस्थित संसाधन की प्रतीक्षा कर रहा है। [3][8]
एडवर्ड जी कॉफ़मैन, जूनियर द्वारा 1971 के एक लेख में इन चार स्थितियों को उनके पहले विवरण से कॉफ़मैन परिस्थिति के रूप में जाना जाता है।[8]
जबकि ये स्थितियाँ एकल-आवृत्ति संसाधन प्रणालियों पर डेडलॉक उत्पन्न करने के लिए पर्याप्त हैं, वे केवल संसाधनों के कई उदाहरणों वाले प्रणाली पर डेडलॉक की संभावना का संकेत देती हैं।[9]
डेडलॉक प्रबंधन
अधिकांश वर्तमान ऑपरेटिंग प्रणाली डेडलॉक को नहीं रोक सकते। [10] जब एक डेडलॉक होता है, तो विभिन्न ऑपरेटिंग प्रणाली अलग-अलग गैर-मानक तरीके से उनका जवाब देते हैं। अधिकांश दृष्टिकोण चार सामान्य स्थितियों में से एक को (विशेष रूप से चौथे को) होने से रोककर काम करते हैं। [11] प्रमुख दृष्टिकोण इस प्रकार हैं।
डेडलॉक की उपेक्षा
इस दृष्टिकोण में, यह माना जाता है कि डेडलॉक कभी नहीं होगा। यह ऑस्ट्रिच कलन विधि का एक अनुप्रयोग भी है। [11][12] यह दृष्टिकोण प्रारम्भ में मिनिक्स और यूनिक्स द्वारा उपयोग किया गया था। [8] इसका उपयोग तब किया जाता है जब डेडलॉक की घटनाओं के बीच का समय अंतराल बड़ा होता है और हर बार होने वाली डेटा हानि सहनीय होती है।
डेडलॉकों को अनदेखा करना सुरक्षित रूप से किया जा सकता है यदि डेडलॉकों का औपचारिक सत्यापन कभी नहीं होता है। एक उदाहरण आरटीआईसी ढांचा है।[13]
जांच
डेडलॉक का पता लगाने के अंतर्गत, डेडलॉक होने की अनुमति है। फिर प्रणाली की स्थिति की जांच की जाती है ताकि यह पता लगाया जा सके कि डेडलॉक हुआ है और बाद में इसे ठीक किया गया है। एक कलन विधि कार्यरत है जो संसाधन आवंटन और प्रक्रिया की स्थिति को पथानुसरण करता है, यह पता लगाए गए डेडलॉक को दूर करने के लिए वापस रोल करता है और एक या अधिक प्रक्रियाओं को पुनरारंभ करता है। एक डेडलॉक का पता लगाना जो पहले से ही हो चुका है, आसानी से संभव है क्योंकि प्रत्येक प्रक्रिया ने जिन संसाधनों को बंद किया है और/या वर्तमान में अनुरोध किया है, वे ऑपरेटिंग सिस्टम के संसाधन अनुसूचक के लिए जाने जाते हैं।[12]
डेडलॉक का पता चलने के बाद, इसे निम्न विधियों में से किसी एक का उपयोग करके ठीक किया जा सकता है:
- प्रक्रिया समाप्ति: डेडलॉक में सम्मिलित एक या अधिक प्रक्रियाओं को निरस्त किया जा सकता है। डेडलॉक में सम्मिलित सभी प्रतिस्पर्धी प्रक्रियाओं (कंप्यूटिंग) को निरस्त करने का विकल्प चुन सकते हैं। यह सुनिश्चित करता है कि डेडलॉक का समाधान निश्चितता और गति के साथ है। लेकिन व्यय अधिक है क्योंकि आंशिक संगणना खो जाएगी। या, जब तक डेडलॉक का समाधान नहीं हो जाता, तब तक एक समय में एक प्रक्रिया को निरस्त करना चुन सकते हैं। इस दृष्टिकोण में एक उच्च शिरोपरि है क्योंकि प्रत्येक अवर्द्धित के बाद एक कलन विधि को यह निर्धारित करना चाहिए कि प्रणाली अभी भी डेडलॉक में है या नहीं। समाप्ति के लिए एक उम्मीदवार का चयन करते समय कई कारकों पर विचार किया जाना चाहिए, जैसे कि प्राथमिकता और प्रक्रिया की उम्र।
- स्रोत अग्रक्रय: विभिन्न प्रक्रियाओं के लिए आवंटित संसाधनों को क्रमिक रूप से रोका जा सकता है और डेडलॉक के टूटने तक अन्य प्रक्रियाओं को आवंटित किया जा सकता है।[14]
रोकथाम
चार कॉफमैन स्थितियों में से एक को होने से रोककर डेडलॉक की रोकथाम काम करती है।
- पारस्परिक बहिष्करण परिस्तिथि को हटाने का अर्थ है कि किसी भी प्रक्रिया की किसी संसाधन तक अनन्य पहुँच नहीं होगी। यह उन संसाधनों के लिए असंभव सिद्ध होता है जो अटेरन नहीं हो सकते। लेकिन बिखरे हुए संसाधनों के साथ भी, डेडलॉक अभी भी हो सकता है। पारस्परिक बहिष्करण से बचने वाले कलन विधि को गैर-अवरुद्ध समकालन कलन विधि कहा जाता है।
- होल्ड एंड वेट या रिसोर्स होल्डिंग की स्थिति को उन सभी संसाधनों का अनुरोध करने के लिए प्रक्रियाओं की आवश्यकता के द्वारा हटाया जा सकता है, जिनकी उन्हें प्रारम्भ करने से पहले (या संचालन के किसी विशेष सम्मुच्चय को प्रारम्भ करने से पहले) आवश्यकता होगी। यह उन्नत ज्ञान प्रायः संतुष्ट करना कठिन होता है और किसी भी स्तिथि में संसाधनों का अक्षम उपयोग होता है। दूसरा तरीका यह है कि संसाधनों का अनुरोध करने के लिए प्रक्रियाओं की आवश्यकता तभी हो जब उसके पास कोई न हो; सबसे पहले, उन्हें उन सभी संसाधनों का अनुरोध करने से पहले अपने सभी वर्तमान संसाधनों को जारी करना होगा जिनकी उन्हें प्रारम्भ से आवश्यकता होगी। यह भी कई बार अव्यवहारिक होता है। ऐसा इसलिए है क्योंकि संसाधन आवंटित किए जा सकते हैं और लंबे समय तक अप्रयुक्त रह सकते हैं। साथ ही, एक लोकप्रिय संसाधन की आवश्यकता वाली प्रक्रिया को अनिश्चित काल तक इंतजार करना पड़ सकता है, क्योंकि ऐसे संसाधन हमेशा किसी प्रक्रिया को आवंटित किए जा सकते हैं, जिसके परिणामस्वरूप संसाधन भुखमरी हो सकती है।[15] (ये कलन विधि, जैसे कि क्रमबद्ध टोकन, को ऑल-ऑर-नो कलन विधि के रूप में जाना जाता है।)
- नो प्रीमेशन (कंप्यूटिंग) की स्थिति से बचना कठिन या असंभव भी हो सकता है क्योंकि एक प्रक्रिया को एक निश्चित समय के लिए संसाधन रखने में सक्षम होना चाहिए, या प्रसंस्करण परिणाम असंगत हो सकता है या थ्रैशिंग (कंप्यूटर विज्ञान) हो सकता है। हालांकि, प्रीमेशन को लागू करने में असमर्थता प्राथमिकता कलन विधि में हस्तक्षेप कर सकती है। लॉक आउट संसाधन की रोकथाम सामान्यतः रोलबैक (डेटा प्रबंधन) का तात्पर्य है, और इससे बचा जाना चाहिए क्योंकि यह शिरोपरी में बहुत महंगा है। प्रीमेशन की अनुमति देने वाले कलन विधि में लॉक-फ्री और वेट-फ्री कलन विधि और आशावादी समवर्ती नियंत्रण सम्मिलित हैं। यदि कोई प्रक्रिया कुछ संसाधनों को धारण करती है और किसी अन्य संसाधन (संसाधनों) के लिए अनुरोध करती है जिसे तुरंत आवंटित नहीं किया जा सकता है, तो उस प्रक्रिया के सभी वर्तमान संसाधनों को जारी करके स्थिति को हटाया जा सकता है।
- अंतिम स्थिति वृत्ताकार प्रतीक्षा स्थिति है। वृत्ताकार प्रतीक्षा से बचने वाले दृष्टिकोणों में महत्वपूर्ण वर्गों के दौरान रुकावटों को अक्षम करना और संसाधनों का आंशिक क्रम निर्धारित करने के लिए पदानुक्रम का उपयोग करना सम्मिलित है। यदि कोई स्पष्ट पदानुक्रम उपस्थित नहीं है, तो संसाधनों के स्मृति पते का भी क्रम निर्धारित करने के लिए उपयोग किया गया है और गणना के बढ़ते क्रम में संसाधनों का अनुरोध किया जाता है। [3] दिज्क्स्ट्रा के समाधान का भी उपयोग किया जा सकता है।
डेडलॉक परिहार
डेडलॉक निवारण के समान, डेडलॉक परिहार दृष्टिकोण यह सुनिश्चित करता है कि प्रणाली में डेडलॉक उत्पन्न नहीं होगा। शब्द डेडलॉक परिहार भाषाई संदर्भ में डेडलॉक निवारण के बहुत करीब प्रतीत होता है, लेकिन वे डेडलॉक से निपटने के संदर्भ में बहुत भिन्न हैं। डेडलॉक परिहार किसी भी स्थिति को लागू नहीं करता है जैसा कि रोकथाम में देखा गया है लेकिन, यहां प्रत्येक संसाधन अनुरोध का सावधानीपूर्वक विश्लेषण किया जाता है ताकि यह देखा जा सके कि डेडलॉक उत्पन्न किए बिना इसे सुरक्षित रूप से पूरा किया जा सकता है या नहीं।
डेडलॉक से बचाव के लिए आवश्यक है कि ऑपरेटिंग प्रणाली को अग्रिम रूप से अतिरिक्त जानकारी दी जाए कि कौन से संसाधन अपने जीवनकाल के दौरान संसाधनों का अनुरोध और उपयोग करेंगे। डेडलॉक परिहार कलन विधि प्रत्येक अनुरोध का विश्लेषण करके जांच करता है कि यदि अनुरोधित संसाधन आवंटित किया गया है तो भविष्य में डेडलॉक होने की कोई संभावना नहीं है। इस दृष्टिकोण की कमी यह है कि भविष्य में संसाधनों का अनुरोध कैसे किया जाए, इसके बारे में पहले से जानकारी की आवश्यकता है। बैंकर्स कलन विधि सबसे अधिक उपयोग किए जाने वाले डेडलॉक परिहार कलन विधि में से एक है।[16]
लाइवलॉक
लाइवलॉक एक डेडलॉक के समान है, अतिरिक्त इसके कि लाइवलॉक में सम्मिलित प्रक्रियाओं की स्थिति एक दूसरे के संबंध में लगातार बदलती रहती है, कोई भी प्रगति नहीं करता है।
यह शब्द 1975 के पेपर में एडवर्ड ए. एशक्रॉफ्ट द्वारा एयरलाइन बुकिंग प्रणाली की जांच के संबंध में गढ़ा गया था। [17][18] लाइवलॉक संसाधन भुखमरी की एक विशेष स्तिथि है; सामान्य परिभाषा केवल यह बताती है कि एक विशिष्ट प्रक्रिया प्रगति नहीं कर रही है।[19]
लाइवलॉक कुछ कलन विधि के साथ एक जोखिम है जो डेडलॉक का पता लगाता है और उससे उबरता है। यदि एक से अधिक प्रक्रियाएँ कार्रवाई करती हैं, तो डेडलॉक अभिज्ञान कलन विधि को बार-बार प्रेरित किया जा सकता है। यह सुनिश्चित करके इससे बचा जा सकता है कि केवल एक प्रक्रिया (स्वेच्छाचारी ढंग से या प्राथमिकता से चुनी गई) कार्रवाई करती है।[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 2020-04-25.
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"