Deadlock Prevention
यदि हम एक Table के साथ Deadlock को Simulate करते हैं | तो हम Table के चार Legs को चार States के साथ Simulate भी कर सकते हैं जो एक साथ होने पर Deadlock का Reason बनते हैं। हालांकि, अगर हम Table के Legs में से एक तोड़ते हैं तो टेबल निश्चित रूप से गिर जाएगी। Deadlock के साथ भी ऐसा ही होता है, अगर हम चार Necessary Condition में से एक को violate करने में सक्षम हो सकते हैं और उन्हें एक साथ नहीं होने देते हैं तो हम Deadlock को रोक सकते हैं।
आइए देखें कि हम प्रत्येक State को कैसे violate कर सकते हैं।
1. Mutual Exclusion
Resource के Point of View से Mutual Exclusion यह Fact है कि एक Resource का उपयोग कभी भी एक से अधिक Process के द्वारा एक साथ नहीं किया जा सकता है जो काफी उचित है लेकिन Deadlock के पीछे यही मुख्य कारण है। यदि एक Resource एक ही समय में एक से अधिक Process के द्वारा Use किया जा सकता है तो Process कभी भी किसी Resource का Wait नहीं कर रही होती।
हालांकि, अगर हम Mutually Exclusive की तरह Behave करने वाले Resources को Violate करने में सक्षम हो सकते हैं तो Deadlock को रोका जा सकता है।
2. Hold and Wait
Hold and Wait की State तब Occur होती है जब कोई Process एक Resource Hold रखती है और अपने Work को Complete करने के लिए किसी अन्य Resource की Wait करती है। Deadlock इसलिए होता है क्योंकि एक से अधिक Process हो सकती हैं जो एक Resource को Hold कर रही हैं और Circular Form में दूसरे की Wait कर रही हैं।
हालांकि, हमें कुछ Mechanism को Find करना होगा जिसके द्वारा एक Process या तो कोई Resource नहीं रखती है या Wait नहीं करती है। इसका मतलब है, Execution Start होने से पहले एक Process को सभी Required Resources दे दिए जाने चाहिए। जिससे की एक बार Execution Start होने के बाद एक Process को किसी Resource Wait न करना पड़े । इसे Practically Implement किया जा सकता है यदि कोई Process Starting में सभी Resources Declare कर दे । हालाँकि, यह बहुत Practically लगता है लेकिन Computer System में ऐसा नहीं किया जा सकता क्योंकि एक Process Starting में Required Resource को Declare नहीं कर सकती है।
3. No Preemption
Deadlock इस Fact के कारण Generate होता है कि एक Process के Execution Start होने के बाद उसे रोका नहीं जा सकता है। हालांकि, अगर हम Deadlock Generate करने वाली Process से Resource को दूर (Away) कर ले जाते हैं तो हम Deadlock को रोक सकते हैं। यह बिल्कुल भी अच्छा तरीका नहीं है क्योंकि अगर हम Process द्वारा Use किए जा रहे Resource को हटा दें तो अब तक किए गए सभी Work असंगत (Inconsistent) हो सकते हैं।
Example
किसी भी Process द्वारा Printer का उपयोग किया जा रहा है। यदि हम Printer को उस Process से वापस ले लेते हैं और इसे किसी अन्य Process को सौंप देते हैं तो Print किया गया सभी Data Inconsistent और Ineffective हो सकता है और यह भी Fact है कि Process फिर से Printing शुरू नहीं कर सकती है जहां से उसने छोड़ा है जो Low Performance का कारण बनता है।
4. Circular Wait
Circular Wait को Violate करने के लिए, हम प्रत्येक Process को Priority Number Assign कर सकते हैं। एक Process Low Priority वाले Resource के लिए Request नहीं कर सकती है। यह Ensure करता है कि कोई भी Process किसी ऐसे Resource का Request नहीं कर सकती है जिसका उपयोग किसी अन्य Process द्वारा किया जा रहा है जिससे कोई भी Circular Wait नहीं बनेगा और हम आसानी से Resources को Utilize करते हुए System को Deadlock से Prevent कर लेंगे ।