What is Deadlock and its conditions
Deadlock
प्रत्येक Process को अपना Execution Complete करने के लिए कुछ Resources की आवश्यकता होती है | हालाँकि Resource Sequential Order में दिया जाता है |
- Process Resource के लिए Request करती है |
- OS Resource Available होने पर Resource Allocate करता है अन्यथा Process को Waiting Queue में भेज देता है |
- Process Resource को Use करती है और Execution Complete हो जाने के बाद Release कर देती है |
Deadlock एक ऐसी Situation होती है जहां प्रत्येक Process Resources के लिए Wait करती है जो किसी अन्य Process को Assign होता है | इस Situation में कोई भी Process Execute नहीं होती है क्योंकि जिस Resource की उसे आवश्यकता होती है वह किसी अन्य Process द्वारा Hold होता है और वह Process अपने Execution को Complete करने के लिए अन्य Resource के Free होने का Wait कर रही होती है |
Example
मान लीजिये P1,P2 और P3 तीन Process है | R1, R2 तथा R3 अलग-अलग Resource है | R1 को P1, R2 को P2 और R3 को P3 Assign है | कुछ समय बाद P1, R2 की मांग (Demand) करता है जिसका Use P2 द्वारा किया जा रहा है | P1 इसके बाद अपना Execution Stop कर देता है क्योंकि यह R2 के बिना अपने Execution को Complete नहीं हो सकता है | P2 भी R3 की मांग (Demand) करता है किसका use P3 द्वारा किया जा रहा है | P2 भी इसके बाद अपने Execution को Stop कर देता है क्योंकि इसका Execution R3 के Complete नहीं हो सकता है | P3 भी R3 की मांग (Demand) कर रहा होता है जिसका Use P1 द्वारा किया जा रहा है | और इसलिए P3 भी अपना Execution बंद कर देता है |
इस परिस्थिति (Scenario) में तीन process के बीच एक Cycle बन जाता है | कोई भी Process आगे नहीं बढ़ रही है सभी Waiting में है | Computer Unresponsive हो जाता है क्योंकि सभी Process Block हो जाती है | इस परस्थिति को Deadlock कहते है |
Conditions for Deadlock
-
Mutual Exclusion
एक Resource को केवल Mutual Exclusively (परस्पर) Manner में Multiple Process के बीच में Share की जाती है | परन्तु एक समय में केवल एक ही Process के द्वारा एक Resource का उपयोग किया जा सकता है |
2. Hold and Wait
एक Process एक ही समय में एक Resource को hold करके दूसरे Resource का Wait कर रही होती है |
3. No preemption
एक बार Schedule की गयी Process Complete होने तक Execute की जाएगी | इस बीच Schedular द्वारा अन्य Process को Schedule नहीं किया जा सकता है |
4. Circular Wait
सभी Process को Circular Manner में Resource के लिए Wait करना चाहिए ताकि Last Process द्वारा Demand किया जाने वाला Resource First Process द्वारा पहले से Hold हो |