निष्पादन को जारी रखने के लिए दोनों प्रक्रियाओं को संसाधनों की आवश्यकता होती है। P1 को अतिरिक्त संसाधन R1 की आवश्यकता है और संसाधन R2 के कब्जे में है, P2 को अतिरिक्त संसाधन R2 की आवश्यकता है और R1 के कब्जे में है; दोनों में से कोई भी प्रक्रिया जारी नहीं रह सकती।
दाएं-पहले-बाएं नीति का पालन करते हुए, चार प्रक्रियाएं (नीली रेखाएं) एक संसाधन (धूसर वृत्त) के लिए प्रतिस्पर्धा करती हैं। एक डेडलॉक (गतिरोध) तब होता है जब सभी प्रक्रियाएं संसाधन को एक साथ लॉक करती हैं (काली रेखाएं)। समरूपता को तोड़कर डेडलॉक (गतिरोध) का समाधान किया जा सकता है।

समवर्ती कंप्यूटिंग में, डेडलॉक या गतिरोध एक ऐसी स्थिति होती है जिसमें एक समूह का प्रत्येक सदस्य कोई काम कर्ने के लिये स्वयं सहित किसी अन्य सदस्य की प्रतीक्षा कर रहा होता है, जैसे कि संदेश भेजना या आमतौर पर लॉक जारी करना। [1] डेडलॉक मल्टीप्रोसेसिंग सिस्टम, समानांतर कंप्यूटिंग, और वितरित सिस्टम में एक आम समस्या है, जहां सॉफ्टवेयर और हार्डवेयर लॉक का उपयोग साझा संसाधनों को मध्यस्थ बनाने और प्रक्रिया सिंक्रनाइज़ेशन को लागू करने के लिए किया जाता है। [2]

ऑपरेटिंग सिस्टम में, एक डेडलॉक या गतिरोध तब होता है जब कोई प्रक्रिया या थ्रेड प्रतीक्षा स्थिति में प्रवेश करता है, क्योंकि एक अनुरोधित सिस्टम संसाधन को किसी अन्य प्रतीक्षा प्रक्रिया ने रोका हुआ है, जो खुद किसी अन्य प्रतीक्षा प्रक्रिया द्वारा रोके गये किसी अन्य संसाधन की प्रतीक्षा कर रहा है। यदि कोई प्रक्रिया अनिश्चित समय तक अपने स्थिति को बदलने में असमर्थ है, क्योंकि इसके द्वारा प्रार्थित किए गए संसाधनों का उपयोग किसी अन्य प्रतीक्षा प्रक्रिया द्वारा किया जा रहा है, तो सिस्टम को डेडलॉक या गतिरोध में कहा जाता है। [3]

एक संचार प्रणाली में, गतिरोध मुख्य रूप से खोए या भ्रष्ट संकेतों के कारण होते हैं, संसाधन विवाद से नही। [4]

दो प्रक्रियाएं जो विपरीत क्रम में दो संसाधनों के लिए प्रतिस्पर्धा कर रही हैं।
  1. एक प्रक्रिया होति है।
  2. बाद की प्रक्रिया को इंतजार करना पड़ता है।
  3. एक डेडलॉक या गतिरोध तब होता है जब पहली प्रक्रिया उसी समय पहले संसाधन को लॉक करती है जब दूसरी प्रक्रिया दूसरे संसाधन को लॉक करती है।
  4. पहली प्रक्रिया को रद्द और पुनः आरंभ करके डेडलॉक को हल किया जा सकता है।

आवश्यक शर्तें

संपादित करें

एक संसाधन पर गतिरोध की स्थिति तब ही उत्पन्न हो सकती है, जब निम्न स्थितियाँ एक सिस्टम में एक साथ हो: [5]

  1. म्यूचुअल बहिष्करण : कम से कम एक संसाधन को गैर-साझाकरण मोड में रोका जाना चाहिए। अन्यथा, आवश्यक होने पर संसाधन का उपयोग करने से प्रक्रियाओं को रोका नहीं जाएगा। केवल एक प्रक्रिया किसी भी समय पर संसाधन का उपयोग कर सकती है। [6]
  2. पकड़ना और रुकना या संसाधन पकडना : एक प्रक्रिया वर्तमान में कम से कम एक संसाधन को रोकी हुई है और अतिरिक्त संसाधनों का अनुरोध कर रही है जो अन्य प्रक्रियाओं द्वारा रोकी जा रही हैं।
  3. कोई पूर्वधारणा नहीं: एक संसाधन को केवल स्वेच्छा से ही इसे धारण करने वाली प्रक्रिया द्वारा छोडा जा सकता है।
  4. परिपत्र प्रतीक्षा: प्रत्येक प्रक्रिया को एक संसाधन की प्रतीक्षा करनी चाहिए जो किसी अन्य प्रक्रिया द्वारा रोकी जा रही है, जो बदले में पहली प्रक्रिया द्वरा संसाधन को छोडने की प्रतीक्षा कर रही है। सामान्य तौर पर, प्रतीक्षा प्रक्रियाओं का एक सेट होता है, P = {P1, P2, …, PN}, जिसमें P1 ,P2 द्वारा आयोजित संसाधन की प्रतीक्षा कर रहा है, P2 ,P3 द्वारा आयोजित संसाधन की प्रतीक्षा कर रहा है और इसी तरह P N, P 1 द्वारा रखे गए संसाधन की प्रतीक्षा कर रहा है। [3] [7]

इन चार शर्तों को एडवर्ड जी कॉफमैन, जूनियर [7] द्वारा 1971 के लेख में अपने पहले विवरण से कॉफ़मैन की स्थिति के रूप में जाना जाता है ।

हालांकि ये स्थितियाँ एकल-उदाहरण संसाधन सिस्टम पर गतिरोध उत्पन्न करने के लिए पर्याप्त हैं, वे केवल संसाधनों के कई उदाहरण वाले सिस्टम पर गतिरोध की संभावना को इंगित करते हैं।[8]

डेडलॉक से निपटना

संपादित करें

अधिकांश वर्तमान ऑपरेटिंग सिस्टम गतिरोध को रोक नहीं सकते हैं।[9] जब एक गतिरोध होता है, तो विभिन्न ऑपरेटिंग सिस्टम विभिन्न गैर-मानक तरीकों से उनका जवाब देते हैं। अधिकांश दृष्टिकोण चार कॉफ़मैन स्थितियों में से एक को रोकने का काम करते हैं, विशेष रूप से चौथा।[10] प्रमुख दृष्टिकोण इस प्रकार हैं।

डेडलॉक की अनदेखी

संपादित करें

इस दृष्टिकोण में, यह माना जाता है कि डेडलॉक कभी नहीं होगा। यह ऑस्ट्रिच एल्गोरिथ्म[11][12] का भी एक अनुप्रयोग है। इस दृष्टिकोण का उपयोग शुरू में MINIX और UNIX[13] द्वारा किया गया था। इसका उपयोग तब किया जाता है जब डेडलॉक की घटनाओं के बीच का समय अंतराल बड़ा हो और हर बार होने वाले डेटा का नुकसान सहनीय हो।

डेडलॉक की खोज

संपादित करें

डेडलॉक का पता लगाने के तहत, डेडलॉक को उत्पन्न करने की अनुमति दी जाती है। फिर सिस्टम की स्थिति का पता लगाया जाता है कि क्या एक डेडलॉक हुआ है और बाद में इसे सही किया जाता है। एक एल्गोरिथ्म नियोजित किया जाता है जो संसाधन आवंटन और प्रक्रिया स्थिति को ट्रैक करता है, वह वापस लौटाता है और पता लगाए गए डेडलॉक को हटाने के लिए एक या अधिक प्रक्रियाओं को पुनरारंभ करता है। एक ऐसे डेडलॉक का पता लगाना जो पहले ही घटित हो चुका है, आसानी से संभव है क्योंकि जिन संसाधनों को प्रत्येक प्रक्रिया ने बंद कर दिया है और / या वर्तमान में अनुरोध किया है उन्के बारे में ऑपरेटिंग सिस्टम के संसाधन अनुसूचक को पता है। [14]

एक डेडलॉक का पता चलने के बाद, उसे ठीक किया जा सकता है [ उद्धरण वांछित ]

बाहरी कड़ियाँ

संपादित करें
  1. Coulouris, George (2012). Distributed Systems Concepts and Design. Pearson. पृ॰ 716. आई॰ऍस॰बी॰ऍन॰ 978-0-273-76059-7.
  2. Padua, David (2011). Encyclopedia of Parallel Computing. Springer. पृ॰ 524. आई॰ऍस॰बी॰ऍन॰ 9780387097657. अभिगमन तिथि 28 January 2012.
  3. Silberschatz, Abraham (2006). Operating System Principles (7th संस्करण). Wiley-India. पृ॰ 237. आई॰ऍस॰बी॰ऍन॰ 9788126509621. अभिगमन तिथि 29 January 2012.
  4. Schneider, G. Michael (2009). Invitation to Computer Science. Cengage Learning. पृ॰ 271. आई॰ऍस॰बी॰ऍन॰ 978-0324788594. अभिगमन तिथि 28 January 2012.
  5. Silberschatz, Abraham (2006). Operating System Principles (7 संस्करण). Wiley-India. पृ॰ 239. आई॰ऍस॰बी॰ऍन॰ 9788126509621. अभिगमन तिथि 29 January 2012.
  6. "ECS 150 Spring 1999: Four Necessary and Sufficient Conditions for Deadlock". nob.cs.ucdavis.edu. मूल से 29 April 2018 को पुरालेखित. अभिगमन तिथि 29 April 2018.
  7. Shibu, K. (2009). Intro To Embedded Systems (1st संस्करण). Tata McGraw-Hill Education. पृ॰ 446. आई॰ऍस॰बी॰ऍन॰ 9780070145894. अभिगमन तिथि 28 January 2012.
  8. "Operating Systems: Deadlocks". www.cs.uic.edu. अभिगमन तिथि 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:
  9. Silberschatz, Abraham (2006). Operating System Principles (7 संस्करण). Wiley-India. पृ॰ 237. आई॰ऍस॰बी॰ऍन॰ 9788126509621. अभिगमन तिथि 29 January 2012.
  10. Stuart, Brian L. (2008). Principles of operating systems (1st संस्करण). Cengage Learning. पृ॰ 446. आई॰ऍस॰बी॰ऍन॰ 9781418837693. अभिगमन तिथि 28 January 2012.
  11. Stuart, Brian L. (2008). Principles of operating systems (1st संस्करण). Cengage Learning. पृ॰ 446. आई॰ऍस॰बी॰ऍन॰ 9781418837693. अभिगमन तिथि 28 January 2012.
  12. Tanenbaum, Andrew S. (1995). Distributed Operating Systems (1st संस्करण). Pearson Education. पृ॰ 117. आई॰ऍस॰बी॰ऍन॰ 9788177581799. अभिगमन तिथि 28 January 2012.
  13. Shibu, K. (2009). Intro To Embedded Systems (1st संस्करण). Tata McGraw-Hill Education. पृ॰ 446. आई॰ऍस॰बी॰ऍन॰ 9780070145894. अभिगमन तिथि 28 January 2012.
  14. Tanenbaum, Andrew S. (1995). Distributed Operating Systems (1st संस्करण). Pearson Education. पृ॰ 117. आई॰ऍस॰बी॰ऍन॰ 9788177581799. अभिगमन तिथि 28 January 2012.