Deadlock एक ऐसा सिचुएशन है जिसमे कुछ सेट ऑफ़ प्रोसेस ब्लाक हो जाते है क्योंकी सरे प्रोसेस अपने रिसोर्स को होल्ड कर के दुसरे रिसोर्स का वेट करते है जो के दुसरे प्रोसेस के द्वारा आलरेडी occupied होता है| ये एक ऐसी कंडीशन है जिसमे एक से ज्यादा प्रोसेस एक ही रिसोर्स के लिए फाइट करते है आर जिसके रिजल्ट में हमारा सिस्टम Deadlock में चला जाता है|
उदाहरण के लिए ऐसे कंडीशन को मान लें जहाँ पे एक पतली सड़क है और उस सड़क प एक वक़्त में कोई एक गाड़ी आ या जा सकती है| अगर कोई गाड़ी आ रही है तो दूसरी साइड की गाड़ी को तबतक वेट करना पड़ेगा जबतक के आने वाली गाड़ी गुज़र न जाये| तो ऐसे कंडीशन को सोचयए के अगर उस सड़क पे अगर दोनों साइड से गाड़ी आ जाये तो एक टाइम ऐसा आयेगा के दोनों गाडयां आमने सामने होंगी और दोनों रुक जाएँगी| ऐसा ही सिचुएशन ऑपरेटिंग सिस्टम में भी होता है जहाँ पे एक से ज्यादा प्रोसेस रिसोर्सेज को होल्ड कर लेता है और दुसरे प्रोसेस द्वारा होल्ड किये गये रिसोर्स का वेट करते है|
ऊपर दिए गये डायग्राम से आप deadlock के कंडीशन को अच्छे से समझ जायेंगे| इस डायग्राम में दो प्रोसेस p1 और p2 दिखाया जा रहा है रिसोर्स R1 एंड R2 दो रिसोर्स है| यहाँ पे रिसोर्स R1 प्रोसेस P1 के लिये allocate किया गया है और रिसोर्स R2 प्रोसेस p2 को allocate किया गया है|लेकिन इस कम को करने के लिए
प्रोसेस p1 को रिसोर्स R2 की ज़रुरत है और प्रोसेस p2 को रिसोर्स R1 की ज़रुरत है ये काम तब ही हो सकता है जब प्रोसेस p1 को रिसोर्स R2 मिल जाये और प्रोसेस p2 को रिसोर्स R1.
डेडलॉक कब होता है
डेडलॉक होने के लिए निचे दिए गये conditions का simultaneously होना ज़रूरी है| ये conditions डेडलॉकके लिए नेसेसरी कंडीशनरहै|
Mutual Exclusion: इस कंडीशन में एक या एक से ज्यादा रिसोर्सेज non-sharable होते है|एक वक़्त में सिर्फ एक प्रोसेस रिसोर्स को यूज़ कर सकता है|
Hold and Wait:एक प्रोसेस atleast एक रिसोर्स को होल्ड कर के रखे हुआ हो आर दुसरे रिसोर्स के लिए वेट कर रहा|
No Preemption:एक रिसोर्स को प्रोसेस से तब तक नहीं लिया जा सकता जब तक वो खुद रिसोर्स को रिलीज़ न कर दे|
Circular Wait: प्रोसेस जो रिसोर्स के लिए वेट कर रहे हो वो circular form में हो |
Deadlock डिटेक्शन मेथड
अगर रिसोर्स के सिंगल instance हो: डेडलॉक को डिटेक्ट करने का सब से आसान और सफ्फीसिएंट वे है सर्कुलर वेट का पता करना जो के algorithm रन करने से पता चल जाता है|अगर रिसोर्स एलोकेशन ग्राफ में सर्कुलर वेट आता है तो ये सफ्फीसिएंट कंडीशन है डेडलॉक के लिए|
अगर रिसोर्स के multiple instance हो : डेडलॉक को डिटेक्ट करने का सर्कुलर वेट एक necessary कंडीशन है पर सफ्फीसिएंट नहीं अगर एक से ज़्यादा instance अवेलेबल हो तो|
Deadlock recovery मेथड
killing the प्रोसेस: डेडलॉक से रिकवरी के लिए हम प्रोसेस को kill करते है| एक एक कर के सरे प्रोसेस को kill करने से हम डेडलॉक से बहार आ सकते है|
Resource Preemption: रिसोर्स को उस प्रोसेस से Preempt कर देना जो डेडलॉक में इन्वोल्व हो | और उस Preempted रिसोर्स को दुसरे रिसोर्स को allocate कर देना एक हल हो सकता है| ताकि वे सिस्टम को डेडलॉक से बहार लाने के चांसेस हो। और ऐसे कंडीशन में सिस्टम स्टारवेशन में चला जाता है|