Deadlock क्या है ? | What is Deadlock in OS | Methods for Handling Deadlocks

डेडलॉक क्या है ? (What is Deadlock):

Operating system द्वारा एक से अधिक programs को एक समय में execute किया जा सकता है। Computer में जब एक से अधिक programs execute हो रहे होते हैं तो कभी-कभी एक ही प्रकार के resource का उपयोग एक से अधिक program के द्वारा एक ही समय में किया जाता है, ऐसी परिस्थितियों में deadlock की संभावना रहती है। इसे निम्न चित्र में समझते हैं:

Deadlock क्या है ?
Deadlock in operating system

उपरोक्त चित्र में एक ही resource का उपयोग तीन अलग-अलग programs के द्वारा किया जा रहा है। क्योंकि जब program1 उस resource को उपयोग करता है उसी समय यदि उसकी आवश्यकता program2 को होती है तो वह उस resource के program1 के द्वारा release होने का इंतजार करता रहता है और resource की उसी समय किसी तीसरे program को उसकी आवश्कयता होती है तो उसे पहले से waiting में खड़े program 2 के उपयोग करने और release करने का wait करना होगा। 

ऐसी परिस्थिति में operating system को यह समझ में नहीं आता है कि क्या करें, तो वह ऐसी परिस्थिति में किन्हीं दो program की processing को बंद कर देता है। जिसे deadlock कहते हैं। 

ऐसे स्थिति को इस प्रकार से समझ सकते हैं जैसे आपके पास network printer है और एक system जो network से जुड़ा हुआ है वह उस printer को एक साथ 100 pages print करने का निर्देश दिया है जिसे पूर्ण print करने में printer को लगभग 5 minute लगेगा। इस स्थिति में printer (resource) का उपयोग कोई अन्य system 5 minute तक नहीं कर सकता। 

इसलिए यदि इस दौरान कोई अन्य system से print command देता भी है तो उसे 5 minute के लिए wait state में रहना होगा। Operating system और database developer के सामने deadlock एक बहुत बड़ी चुनौती होती है। Deadlock को समाप्त करने के लिए ही data को एक विशेष प्रकार के structure में रखा जाता है।

What are the conditions that can lead to a deadlock situation in a system?

सन् 1971 में Coffman ने deadlock के लिए निम्न चार स्थितियों की पहचान की:

i) Mutual Execution Condition:

कम से कम एक ऐसा संसाधन होना चाहिए जो साझा करने योग्य ना हो। जिससे कोई एक process किसी भी समय उस संसाधन का उपयोग कर सके।

ii) Hold and Wait Condition:

किसी process के द्वारा कम से कम एक resource को पकड़ कर रखा गया है और उसके द्वारा अन्य processes के लिए request भेजा गया हो।

iii) No-preemptive Condition:

Process के द्वारा जब किसी resource को पकड़ कर रखा गया है जिसे स्वेच्छा से किसी अन्य process के इस्तेमाल के लिए छोड़ दिया जाता है।

iv) Circular wait Condition:

इसमें प्रक्रिया की एक सूची होती है इसमें प्रत्येक प्रक्रिया resource के उपयोग एक के बाद एक करते जाते हैं। जब एक प्रक्रिया resource का उपयोग कर रहा है तो दूसरा इंतजार करता है जब तक कि पहले प्रक्रिया द्वारा उसे release न कर दिया जाये।

What are the methods for handling deadlock?

  • Deadlock को system के लिए बहुत ही खराब स्थिति माना जाता है। इसलिए इसे handle करना आवश्यक है अन्यथा system को अधिक नुकसान हो सकता है। Deadlock को निम्न प्रकार handle कर सकते है:
  • हमेंशा ध्यान रखें की system किसी भी प्रकार के deadlock में न प्रवेश कर सके। इसके लिए deadlock को सही करने या उस पर ध्यान न देने का program system में उपयोग करें। 
  • यदि सिस्टम deadlock में प्रवेश कर रहा है तो पहले उसे प्रवेश करने की अनुमति प्रदान करें फिर उसे ठीक करने का प्रयास करें।
  • अधिकांश operating system को इस प्रकारं design किया जाता है कि उसमें deadlock की समस्या नहीं होती इसलिए समस्या की तरफ ध्यान न देते हुए यह सोचे की सिस्टम में deadlock की स्थिति नहीं आ सकती। यदि आ गई है तो system को पुनः आरंभ करने की प्रक्रिया करें।

Deadlock Prevention in Operating System:

Deadlock को रोकना चाहते हैं तो निम्न चार स्थितियों का ध्यान रखना चाहिए, यदि निम्न चार स्थितियों में से यदि आप किसी एक स्थिति को भी लागू करते हैं तो आप deadlock होने से बचा सकते हैं:

i) आपसी बहिष्कार (Mutual Exclusion):

इसका अर्थ होता है कि संसाधनों को साझा न किया जाये, अर्थात् साझा (share) न किये जाने वाले संसाधनों को ही उपयोग में लाना चाहिए। जैसे printer को यदि share किये हैं तो वह share न करने वाले कार्य को एक के बाद एक करें तो बेहतर होगा। इससे deadlock की स्थिति निर्मित नहीं होती।

ii) पकड़ो और इंतजार (Hold and Wait):

इस बात पर पूरा ध्यान दिया जाना चाहिए कि जब कोई एक प्रक्रिया किसी एक संसाधन का उपयोग कर रहा है तो वह किसी अन्य संसाधन को पकड़ के न रखा हो। जैसे execution को आरंभ करने से पहले resource को उपयोग के लिए एक protocol की आवश्यकता होती है। 

इसमें request एवं allocate करके प्रत्येक प्रक्रिया को एक protocol प्रदान किया जाता है। इसलिए जब कोई protocol किसी resource को उपयोग करने के लिए request करना है तो उसे यह देखना होता है कि resource का उपयोग कोई प्रक्रिया पहले से तो नहीं कर रहा है अर्थात् प्रक्रिया के none होने की स्थिति में ही उसका उपयोग किया जाना चाहिए।

iii) पहले हमला नहीं (No Preemption):

किसी process के द्वारा resource (संसाधन) का उपयोग किया जा रहा है और यदि उसे किसी अन्य resource की आवश्यकता पड़ती है तो उसे तुरंत अन्य resource उपलब्ध नहीं कराना चाहिए और वर्तमान में आरंभ किये सभी resource के process को रोककर छोड़ देना चाहिए। इसके पश्चात् जो भी प्रक्रिया अभी इंतजार में है उन्हें resources के list में सम्मिलित करना चाहिए।

Process को पुनः आरंभ किया जाता है जब पुराने resources को उपयोग करने के लिए अनुरोध किया गया है और इसके साथ ही नये resources के लिए request भेजा गया है।

(iv) एक परिक्रमा में इंतजार (Circular wait):

Circular wait की स्थिति में अनेक resource को एक के बाद एक उपयोग में लाया जाता है ऐसे में deadlock की स्थिति तब निर्मित होती है जब किसी resource को अधिक समय के लिए wait की स्थिति में रखा गया है, ऐसे में यह सुनिश्चित् कर ले कि resource का उपयोग एक के बाद एक किया जाता रहे।

Deadlock Prevention in operating system
Deadlock Prevention

इस चित्र में system एक साथ अनेक resource, printer hard disk और CD drive का उपयोग कर रहा है तो printer print command देने के पश्चात् Hard disk का उपयोग करेगा उस समय CD-Drive wait की स्थिति में रहेगा। 

इसी प्रकार CD-Drive का इस्तेमाल करते समय printer और hard disk wait की स्थिति में रहेंगे। इस प्रकार के process से deadlock की स्थिति को समाप्त किया जा सकता है।

Deadlocks Avoidance Operating System:

Deadlock की समस्या आने से पहले उसका पता लगाना आवश्यक होता है। Deadlock की समस्या का पता लगाकर उसका हल निकालने के लिए तैयार algorithm को deadlock prevention algorithm कहेंगे और पता लगाकर उस पर ध्यान न देने के लिए तैयार algorithm को deadlock avoidance algorithm कहते हैं।

Resource को किस प्रकार प्राप्त करना है इसके लिए कुछ अतिरिक्त priority निर्धारित करने की आवश्यकता system में होती है साथ ही अधिकांश उपयोगी और सामान्य नमूने में प्रत्येक प्रक्रिया के लिए resource की अधिकतम संख्या निर्धारित करना चाहिए।

Resource-allocation state का dynamically परिक्षण करने के पश्चात् उसे circular-wait की स्थिति पहुँचने से रोकने की स्थिति को ध्यान में रखते हुएं इसका algorithm तैयार करना होता है। Resource allocation state की संख्या मांग की अधिकतम संख्या के आधार पर और वर्तमान में उपलब्ध allocation resource के आधार पर निर्धारित किया जाता है।

Recovery from deadlock in OS:

Deadlock की स्थिति निर्मित ना हो इसके लिए हम deadlock prevention और deadlock avoidance दोनों तकनीक का उपयोग करते हैं और यदि उसके बाद भी deadlock की स्थिति आ जाती है तो इसके लिए recovery process किया जाता है।

Recovery करने के लिए सबसे पहले यह देखते हैं कि सभी resource का उपयोग किस प्रकार किया जा रहा है यदि सभी single instance में है तो wait-for-graph विधि प्रयोग में लाते हैं। इसके अतिरिक्त deadlock को समाप्त करने के लिए निम्न दो विकल्प मौजूद होते हैं:

  1. Process Termination
  2. Resource Preemption

1) Process Termination:

Operating System जब circular wait की स्थिति निर्मित होती है तो process लगातार चलते रहता है ऐसे में एक या एक से अधिक process को निरस्त करके deadlock की स्थिति को समाप्त कर सकते हैं।

2) Resource Preemption:

यदि किसी resource के द्वारा एक या एक से अधिक deadlock process दिया गया है तो उस resource के उपयोग को समाप्त करने की कोशिश करके आप deadlock को समाप्त कर सकते हैं।

Combined approach  to deadlock handling in os :

Deadlock handling के लिए निम्न तीन बुनियादी दृष्टिकोण (combined approach) का होना आवश्यक है:

  1. Prevention
  2. Avoidance
  3. Detection

Post a Comment

0 Comments