डेडलॉक (Deadlock) क्या है?, What is deadlock in Hindi ?
“डेडलॉक ( Deadlock ) एक ऐसी प्रक्रिया है, जिसके अंदर कोई भी दो प्रोसेस जब जाती है तोआपस में पहले Complete होने के लिए लड़ाई करती हैं, और इसके कारण कोई भी Process पूरी तरह से कंप्लीट नहीं हो पाती है, और Resource को access नहीं कर पाती है ”
Table of Contents
डेडलॉक (Deadlock) Kya hai ? | deadlock kya hai in hindi
Deadlock एक ऐसी स्थिति है, जहां processes के एक समूह का execution स्थाई रूप से रुक गया है, क्योंकि इस समूह में प्रत्येक process इसके लिए कुछ आवश्यक संसाधनों को रखे हुए हैं, तथा बचे हुए बाकी संसाधन जो किसी अन्य इंतजार कर रही processes के द्वारा रखे हुए हैं, का इंतजार कर रही है। उदाहरण के तौर पर- यदि हम मान कर चलते हैं कि 3 student चित्र बनाने में कार्यरत हैं तथा उनके लिए लाल, हरे और नीले रंग की पेंसिल है। student 1 लाल और हरी ,student 2 को हरी और नीली, student 3 को नीली और लाल पेंसिल चाहिए। वे क्रमानुसार पेंसिल चुनते हैं परंतु वापस तभी करेंगे जब वे पूरा चित्र बना लेंगे। माना student 1 लाल पेंसिल, student 2 हरी पेंसिल, student 3 नीली पेंसिल चुनते है। अब student 1 ko हरी पेंसिल की जरूरत है ,जो की student 2 के पास है लेकिन student 2 नीली पेंसिल की प्रतीक्षा कर रहा है, जो की student 1 के पास है।
इस स्थिति का परिणाम यह होगा कि कोई भी चित्र पूर्ण नहीं कर पाएगा क्योंकि सभी के पास एक-एक पेंसिल है, तथा वे सभी दूसरे की पेंसिल की प्रतीक्षा कर रहे हैं।
यह पूरा उदाहरण computer system के समान है, जहां student को process माना जा सकता है, तथा पेंसिल को संसाधन माना जा सकता है।
System call क्या है ? process, File, Directory संबंधित System calls समझाइये
डेडलॉक (Deadlock) की शर्तें ( The Conditions for Deadlock )
Deadlock के उत्पन्न होने हेतु चार आवश्यक शर्तें हैं, जो एक साथ उपस्थित होनी चाहिए। इन्हें वैज्ञानिक Coffman ने प्रस्तुत किया है।
यह शर्ते हैं:
परस्पर अपवर्जिता ( mutual Exclusion )
प्रत्येक संसाधन या तो एक प्रोसेस को दिया गया होगा या उपलब्ध होगा।
नो प्रीएंप्शन (No Preemption)
इसमें process से संसाधन को forcibly (बलपूर्वक) नहीं लिया जा सकता।
होल्ड एंड वेट (Hold-and-Wait)
जब प्रोसेस अन्य संसाधनों के लिए इंतजार कर रही है तब पहले से रखे हुए संसाधनों को वह अपने पास रखती है।
सर्कुलर वेट (Circular wait)
इसमें processes की एक बंद श्रृंखला(closed chain) इस प्रकार होती है कि प्रत्येक प्रोसेस एक या एक से अधिक ऐसे संसाधनों को रखे हैं, जिसकी आवश्यकता श्रृंखला की अगली प्रोसेस के लिए है।
Deadlock को हल करने की विधियाँ ( Methods for Handling Deadlock in hindi )
Deadlock को हल करने के तीन विधियां है:
Deadlock Prevention
इसमें हम ऐसी तकनीक का प्रयोग करते हैं जिससे डेडलॉक (Deadlock) की स्थिति system में उत्पन्न नहीं हो पाती है।
Deadlock Detection
इसमें system deadlock की स्थिति में आ सकता है, तथा इसके बाद डेडलॉक (Deadlock) को दूर किया जाता है।
Deadlock Avoidance
इसमें resource के ऐसे प्रयोग पर रोक लगाई जाती है, जिनमें की डेडलॉक (Deadlock) की संभावना होती है। इस तकनीक में यह माना जाता है कि डेडलॉक (Deadlock) सिस्टम में कभी नहीं आता है। Deadlock की स्थिति उत्पन्न न हो इसके लिए सिस्टम में deadlock prevention या तो deadlock Avoidance तरीकों का प्रयोग किया जाता है।
Deadlock से बचाव (Deadlock Prevention)
Mutual Exclusion की शर्त लागू न करना (Prevent Mutual Exclusion Condition)
संसाधनों को दो समूह में बांटा जाता है sharable तथा non sharable । शेयरेबल रिसोर्सेस को mutual exclusive तरीके से उपयोग करने की आवश्यकता नहीं होती है क्योंकि इन्हें एक साथ उपयोग करने पर डेडलॉक (Deadlock) नहीं आता है। जैसे कई प्रोसेस read only (केवल पढ़ी जाने वाली) फाइल्स को एक ही समय में पढ़ सकती है तथा इससे deadlock की अवस्था भी नहीं आएगी। उदाहरण के तौर पर अगर प्रिंटर को एक ही समय में एक साथ कई प्रोसेस उपयोग करती है तब यह Mix printing देगा जो वांछित नहीं है। अतः mutual exclusion स्थिति को आने से नहीं रोकते हैं।
Hold and wait शर्त न लगाना (Prevent hold and wait condition)
इसमें हम उन प्रोसेस को अन्य resources के लिए इंतजार करने से रोकते हैं जिनके पास पहले से रिसोर्स है तथा वे और रिसोर्स चाहती हैं और यह इस तरह हम डेडलॉक (Deadlock) रोक सकते हैं।
No Preemption शर्त को शिथिल करना ( Prevent No Preemption Condition )
No Preemption को कई तरीकों से रोका जा सकता है:
यदि ऐसी प्रोसेस जिससे पास कुछ रिसोर्स है तथा उसे कुछ अन्य रिसोर्सेस की आवश्यकता है तो इस स्थिति में वर्तमान में उस प्रोसेस द्वारा रखे गए सभी रिसोर्स रीलज (मुक्त) कर दिए जाने चाहिए। प्रोसेस बाद में पुराने रिसोर्स तथा नए रिसोर्स के लिए एक साथ निवेदन कर सकती है।
दूसरा तरीका यह है कि अगर कोई process resource request करती है तब बलपूर्वक इन रिसोर्सेज को पूरी प्रोसेस से वापस ले लेता है तथा दूसरी प्रोसेस को suspend कर देता है। यह विधि और रिसोर्स पर प्रयोग की जाती है जिनकी state को सुरक्षित और बाद में restore आसानी से किया जा सकता है, जैसे कि CPU register और memory space । यह विधि printer तथा tape drives पर लागू नहीं होती है।
Circular Wait न होने देना ( Prevent Circular Wait )
Circular wait परिस्थिति से बचाव करने के लिए सभी resources types को क्रमबंद कर सकते हैं और प्रोसेसेस के द्वारा रिसोर्स के निवेदन के लिए इस क्रम का पालन किया जाता है।
उदाहरण के तौर पर एक सिस्टम, रिसोर्सेज को निम्न प्रकार से क्रमबद्ध कर सकता है।
Printer
Disk drive
Tape drive
CD ROM drive
एक प्रोसेस पहले डिस्क ड्राइव और उसके बाद CD ROM के लिए request करेगी परंतु यह पहले Tape drive और फिर Disk drive के लिए request नहीं कर सकती। इस scheme को प्रमाणित करने के लिए हम विपरीत कल्पना करेंगे । हम मान कर चलते हैं कि process P1 के पास resource Ri है और P2 के पास Resource Rj है प्रोसेस P1 को resources Rj और P2 को resource Ri चाहिए है। अगर (i>j) तब P1 और Resource Rj करने की अनुमति नहीं है क्योंकि यह Resource जो P1 के पास है उसमें कम है, और अगर (j>i) हो तो P2 को Ri Resource प्राप्त नहीं हो सकता है, क्योंकि यह Rj से कम है जो उसके पास है। पर यह दोनों परिस्थितियां एक साथ नहीं हो सकती है। अतः resource को क्रमबद्ध रूप से रखने पर डेडलॉक (Deadlock) को रोका जा सकता है, लेकिन ऐसा क्रम सुनिश्चित करना जो deadlock की स्थिति न उत्पन्न होने दें और सभी को संतुष्ट करें, बनाना मुश्किल होता है।
डेडलॉक (Deadlock) का डिटेक्शन ( Deadlock Detection)
इसमें system न तो deadlock prevention और न ही deadlock Avoidence विधि का प्रयोग करता है जो डेडलॉक (Deadlock) को होने से रोकते हैं। यह विधि डेडलॉक (Deadlock) को होने देती है तथाउन परिस्थितियों का विश्लेषण करती है जिनसे डेडलॉक (Deadlock) की परिस्थिति उत्पन्न हुई और फिर सिस्टम इस तरह से कार्य करता है जिससे डेडलॉक (Deadlock) की परिस्थिति से निकला जा सके।
इस तकनीक में दो Algorithm की आवश्यकता होती है:
एक Algorithm यह निर्धारित करती है कि सिस्टम में डेडलॉक (Deadlock) की स्थिति तो नहीं है।
Algorithm system को डेडलॉक (Deadlock) से निकालती है।
Deadlock को check करने के लिए एक प्रोग्राम को कॉल किया जाता है जिसकी calling निम्नलिखित दो तथ्यों पर आधारित है:
किस गति से डेडलॉक (Deadlock) उत्पन्न हो रहा है
कितनी process पर डेडलॉक (Deadlock) का असर होगा।
Deadlock Detection Algorithm को प्रत्येक रिसोर्स आवंटन पर लागू करने पर deadlock की उपस्थिति को ज्ञात किया जा सकता है। परंतु ऐसा बार बार करने से प्रोसेसर का समय व्यय होता है।
Deadlock का पता लगाने की Algorithm को दो प्रकारों में विभाजित आ जा सकता है।
जब प्रत्येक प्रकार का एक रिसोर्स हो। (One resource of each type)
जब प्रत्येक प्रकार के कई रिसोर्स हो। (multiple resources of each type)
डेडलॉक (Deadlock) से रिकवरी (Recovery from Deadlock)
एक बार यदि डेडलॉक (Deadlock) का पता लगता है तब किसी तरीके से डेडलॉक (Deadlock) को दूर किया जा सकता है। और सिस्टम पुनः रन होने लगेगा। डेडलॉक (Deadlock) को हटाने के लिए निम्नलिखित तरीकों का उपयोग किया जा सकता है।
सभी डेडलॉक (Deadlock) वाली प्रोसेस को समाप्त कर दिया जाए। इसका परिणाम यह होगा कि सभी कार्य समाप्त हो जाएगा तथा शायद फिर से यह कार्य करना होगा।
अगर डेडलॉक (Deadlock) की संभावना बनती है तो इसका हल यह है कि सभी डेडलॉक (Deadlock) प्रोसेस को पहले से परिभाषित जांच बिंदु तक वापस ले जाते हैं। यह प्रक्रिया Rollback कहलाती है। इसके बाद सभी प्रोसेसेस को पुनः शुरू किया जाता है। इस विधि से सही डेडलॉक (Deadlock) पुनः उत्पन्न हो सकता है। फिर भी पुनः ऐसी स्थिति उत्पन्न हो यह आवश्यक नहीं है क्योंकि सिस्टम में लगातार प्रोसेसिंग चलती रहती है। जिसके कारण यह निश्चित होता है यह स्थिति पुनः नहीं बनेगी। अतः यह विधि सभी परिस्थितियों में कार्य करती है।
इसमें डेडलॉक (Deadlock) वाली प्रोसेस को एक-एक करके हटा दिया जाता है तथा उसके संसाधनों को अन्य प्रोसेस को आवंटित कर दिया जाता है यह कार्य तब तक किया जाता है जब तक कि डेडलॉक (Deadlock) की स्थिति खत्म नहीं हो जाती। किस क्रम में प्रोसेस को समाप्त करने के लिए चुना जाए। इसके लिए निम्न में से कोई भी मापदंड का चयन कर सकते हैं।
जिसके लिए अभी तक सबसे कम प्रोसेसर समय न्याय हुआ हो।
प्रोसेस को पूर्ण होने के लिए कितने अतिरिक्त संसाधन चाहिए।
आउटपुट की सबसे कम लाइन अभी तक उत्पन्न हुई हो।
सबसे अधिक अनुमानित समय बचा हुआ।
सबसे कम priority हो।
जैसे-जैसे प्रोसेस समाप्त होती जाती है Deadlock Algorithmको पुनः चलाया जाता है जिससे पता चलता है कि डेडलॉक (Deadlock) अभी भी है या नहीं।
4. प्रोसेस के संसाधनों को एक-एक करके वापस लेते हैं जब तक कि डेडलॉक (Deadlock) की स्थिति समाप्त ना हो जाए। इसके लिए (iii)में वर्णित तरीकों का प्रयोग किया जा सकता है। हर बार रिसोर्स से वापस लेने के बाद deadlock detection algorithm को चलाया जाता है।
डेडलॉक (Deadlock) एवाइडेंस (deadlock avoidance)
Deadlock detection algorithm हम यह मानकर चलते हैं कि सभी संसाधनों का निवेदन एक बार में किया जाता है। परंतु अधिकतर Systems में एक बार में एक संसाधन की request की जाती है। अगर ऐसी कोई Algorithm हो तो system को यह सुनिश्चित करने में मदद करें कि संसाधनों का आवंटन करना सुरक्षित होगा कि नहीं, तभी वह आवंटन करे तब सिस्टम में deadlock कभी नहीं आएगा। दूसरे शब्दों में कहा जाए तो deadlock avoidance algorithm यह सुनिश्चित करती है कि संसाधन आवंटन करने पर circular wait की उपस्थिति ना हो।
डिटेक्शन और एवाइडेंस की तुलना (Comparing Prevention Detection and Avoidance)
Deadlock avoidance डेडलॉक (Deadlock) detection ये लाभप्रद है, क्योंकि इसमें जरूरी नहीं है कि प्रोसेस को Commit और Rollback किया जाए जैसे कि डेडलॉक (Deadlock) Decation में होता है और deadlock avoidance, deadlock prevention से लेस रिस्ट्रिक्टिव (restrictive) है avoidance, prevention की तुलना में ज्यादा Concurrency (कॉनकरेंसी) देता है।
परंतु डेडलॉक (Deadlock) avoidance की कुछ हानि भी है।
डेडलॉक (Deadlock) avoidance से होने वाली हानियाँ
इसमें सभी प्रोसेस को अधिकतम संसाधनों की मांग को पहले से ही पता होना चाहिए।
प्रोसेस जो ली गई है वे इनडिपेंडेंट (independent) होनी चाहिए, अर्थात उनके execution का क्रम या वे जिस क्रम में execute होती है वह किसी synchronization Requirement पर आश्रित नहीं होना चाहिए।
System सिस्टम में निश्चित संख्या में प्रोसेस थाना निश्चित संख्या में रिचार्ज होना चाहिए ।
FAQ
डेडलॉक (Deadlock) का पता कैसे लगाया जाता है ?
जैसे-जैसे प्रोसेस समाप्त होती जाती है Deadlock Algorithmको पुनः चलाया जाता है जिससे पता चलता है कि डेडलॉक (Deadlock) अभी भी है या नहीं।
डेडलॉक (Deadlock) क्या है ?
डेडलॉक (Deadlock) एक ऐसी प्रक्रिया है, जिसके अंदर कोई भी दो प्रोसेस जब जाती है तोआपस में पहले कंप्लीट होने के लिए लड़ाई करती हैं, और इसके कारण कोई भी प्रोसेस पूरी तरह से कंप्लीट नहीं हो पाती है |