एक मल्टिप्रोग्रामिंग ऑपरेटिंग सिस्टम में, कई प्रोसेसे निर्धारित रिसोर्सेस के उपयोग के लिए एक साथ प्रतीक्षा क सकती हैं। प्रोसेस द्वारा रिसोर्सेस की माँग करते समय यदि उपलब्ध नहीं हैं तो वह प्रोसेस वेट की स्थिति में प्रवेश कर जाती है। यह भी हो सकता है कि वेटिंग प्रोसेस जिस स्टेट पर है, वह स्टेट कभी भी न बदले, क्योंकि जिन रिसोसेंस की मांग वह प्रोसेस कर रही है, उनका उपयोग दूसरी वेटिंग प्रोसेस द्वारा किया जा रहा है। यही परिस्थिति डेडलॉक कहलाती है।
एक सिंपल रिसोर्स डेडलॉक:
ऑपरेटिंग सिस्टम में अधिकांश डेडलॉक, रिसोर्सेस निर्धारण संबंधी सामान्य विवाद के कारण विकसित होते हैं। (अर्थात् ऐसे रिसोर्सेस, जिनको एक समय में एक ही युजर उपयोग कर सकता है। इनको सिरियली रीयुजेबल रिसोर्सेस भी कहा जाता है।) इस रिसोर्स एलोकेशन में दो प्रोसेस् आयत में तथा दो रिसोर्सेस वृत्त में दिखाए गए हैं। रिसोर्स से प्रोसेस की ओर इंगित कर रहा एरो (तीर) यह दर्शाता है कि उस रिसोर्स का संबंध संबंधित प्रोसेस से है या उस प्रोसेस को वह रिसोर्स प्रदान किया जा चुका है। प्रोसेस से रिसोर्स की ओर इंगित कर रहा तीर यह दर्शाता है कि वह प्रोसेस उस रिसोर्स की माँग कर रही है, परंतु वह रिसोर्स उसे अभी तक एलोकेट (वितरित) नहीं किया गया है।
एक डेडलॉक सिस्टम को दर्शाता है, जहाँ प्रोसेस A रिसोर्स 1 को रखती है और उसे प्रोसेस जारी रखने के लिए रिसोर्स 2 की आवश्यकता होती है। दूसरी तरफ प्रोसेस B को रिसोर्स 2 प्रदान किया गया है और उसे आगे प्रोसेस जारी रखने के लिये रिसोर्स । की आवश्यकता है। प्रत्येक प्रोसेस दूसरी प्रोसेस द्वारा रिसोर्स के फ्री (मुक्त) किये जाने का इंतजार कर रही हैं, परंतु कोई भी प्रोसेस अपना रिसोर्स तब तक फ्री नहीं करेगी जब तक कि दूसरी प्रोसेस अपना रिसोर्स फ्री नहीं कर देती। यहीं स्थिति सभी प्रोसेसेस के साथ निर्मित होती है। यही चक्रिय (सर्क्युलर) वेट, डेडलॉक सिस्टम का गुण होता है। इस तरह रिसोर्सेस को प्रोसेस द्वारा दृढ़ता से अपने पास रखना डेडलॉक का कारण बनता है, इसलिए कभी-कभी एक डेडलॉक का अर्थ एक डेडली एम्ब्रेस (अलिंगन) से भी लगाया जाता है।
डेडलॉक के लिये शर्तें:
रिसोर्स प्रबंधन के कुछ निश्चित मापदण्डों के कारण डेडलॉक की स्थिति पैदा होती है। इस संदर्भ में तीन महत्वपूर्ण शर्तें निम्नलिखित हैं-
(1) म्यूचल एक्सक्लूशन : एक समय में एक ही प्रोसेस एक रिसोर्स का उपयोग कर सकती यदि एक रिसोर्स को कई प्रोसेस एक साथ समानांतर रूप प्रयोग कर सकती तो इससे डेडलॉक की स्थिति निर्मित नहीं होगी।
(2) रिसोर्स होल्डिंग और वेट: अधिक रिसोर्सेस की माँग करते समय प्रोसेसेस कुछ रिसोर्स का उपयोग कर रही होती हैं।
यदि प्रोसेस एक ही समय में अपनी आवश्यकता की सभी रिसोसेंस की माँग करती है तो वह डेडलॉक में शामिल नहीं हो सकती है। यदि किसी प्रोसेस को पहले से ही एक रिसोर्स एलोकेट है और वह एक अन्य की माँग कर रही है या एक अन्य रिसोर्स का इंतजार कर रही है तब डेडलॉक की स्थिति निर्मित होती है। यदि सभी रिसोर्सेस का समानांतर उपयोग हो रहा है, कोई भी प्रोसेस किसी रिसोर्स का इंतजार नहीं कर रही है, ऐसी स्थिति में डेडलॉक उत्पन्न नहीं हो सकता है।.
(3) नो प्रीएम्पशन : एक प्रोसेस से रिसोर्स को बलपूर्वक नहीं हटाया जा सकता है ।
यदि एक प्रोसेस दूसरी प्रोसेस से रिसोर्स को अलग कर सकती है, तब उसे रिसोर्सेस के लिए इंतजार करने की कोई आवश्यकता नहीं होगी और इस प्रकार डेडलॉक निर्मित ही नहीं होगा ।
ये शर्तें आवश्यक हैं, परन्तु पर्याप्त नहीं है अर्थात इनसे डेडलॉक संभव तो है परंतु ये स्वयं डेडलॉक का निर्माण नहीं कर सकती हैं। एक वास्तविक डेडलॉक के निर्माण के लिए एक चौथी शर्त लागू होना अनिवार्य है और वह है:
(4) सरक्यूलर वेट : प्रोसेसेस का एक क्लोज्ड (बंद) सर्कल बनता है, जहाँ प्रत्येक प्रोसेस को अपने से अगली प्रोसेस द्वारा उपयोग किये जा रहे रिसोर्स की आवश्यकता पड़ती है।
चूंकि एक डेडलॉक का निर्माण होने में इन चार शर्तों का पूरा होना अनिवार्य है, इसलिये हम इस निर्णय पर पहुँच सकते हैं कि यदि इनमें से एक या दो शर्ते लागू नहीं होती हैं, तो डेडलॉक से बचा जा सकता है। यद्यपि यह तर्क उचित है परंतु इसको प्रायोगिक स्तर पर सफल बनाने के लिए, छलावे या भ्रम की स्थिति से बचाव हेतु इसे सरल बनाने की युक्ति का उपयोग करना चाहिए ।
डेडलॉक को हल करने की पद्धतियाँ:
हमारे पास डेडलॉक का हल करने की तीन पद्धतियाँ हैं –
(I) डेडलॉक प्रिवेंशन (रोकथाम)
(II) डेडलॉक एवॉएडेंस (बचाव करना)
(III) डेडलॉक डिटेक्शन (पता लगाना )
शायद आप यह सोच रहे हैं कि ‘प्रिवेशन’ और ‘एवॉएडेस में क्या अन्तर हैं ? इस संदर्भ में ‘डेडलॉक प्रिवेशन’ से तात्पर्य है कि प्रचलित रिसोर्स एलोकेशन पॉलिसी के कारण डेडलॉक निर्मित नहीं हो सकते हैं। ‘डेडलॉक एवॉएडेंस’ से तात्पर्य है। कि जब डेडलॉक की सम्भावनाएँ अत्यधिक हैं, तब उससे भयभीत होने के स्थान पर सिस्टम उसे एवोइड करेगा। वास्तव में, प्रिवेंशन से यह स्पष्ट होता है कि उपरोक्त शर्तों में से एक को हमने नकार दिया है। एवॉएडेंस से यह स्पष्ट होता है कि ये शर्तें लागू तो होती हैं परंतु जब एक विशिष्ट रिसोर्स एलोकेशन के कारण डेडलॉक बनता है तब यह एलोकेशन समाप्त किया जाता है।
डेडलॉक डिटेक्शन इस समस्या के समाधान की एक भित्र धारणा है। इसके अन्तर्गत डेडलॉक को न तो रोका जाता है और न ही उससे बचा जाता है, परंतु डेडलॉक को बनने दिया आता है और फिर कुछ साधनों द्वारा उसे समाप्त किया जाता है।