[Deadlocks] क्या है? Operating System [Deadlocks] in Hindi

Deadlocks क्या है? [Deadlocks in Hindi]

Deadlocks क्या है?

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

Deadlocks क्या है?

उपरोक्त चित्र में एक ही resource का यूज़ तीन अलग-अलग programs के द्वारा किया जा रहा है। क्योंकि जब program1 उस resource को यूज़ करता है उसी समय यदि उसकी आवश्यकता program2 को होती है तो वह उस resource के program1 के द्वारा release होने का इंतजार करता रहता है और उसी समय किसी तीसरे program को उस resource की आवश्यकता होती है तो उसे पहले से wating में खड़े program2 के यूज़ करने और release करने का wait करना होगा। ऐसी परिस्थिति में ऑपरेटिंग सिस्टम को यह समझ मे नहीं आता है कि क्या करें, तो वह ऐसी स्थितियों में किन्ही दो program की प्रोसेसिंग को बंद कर देता है जिसे Deadlock कहते हैं।

[Deadlocks] in Hindi

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

ऑपरेटिंग सिस्टम और डेटाबेस डेवलपर के सामने डेडलॉकल एक बहुत बड़ी चुनौती होती है। इस प्रकार से Deadlock को समाप्त करने के लिए ही डाटा को एक विशेष प्रकार के structure में रखा लिया जाता है।

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

(1) Mutual Execution Condition:

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

(2) Hold and Wait Condition:

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

(3) No-preemptive Condition:

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

(4) Circular wait Condition:

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

Methods for Handling Deadlocks:

Deadlock को हमारे सिस्टम के लिए बहुत ही खराब स्थिति माना जाता है। इसलिए इसे हमारे द्वारा हैंडल करना आवश्यक है अन्यथा system को अधिक नुकसान हो सकता है। Deadlock को निम्न प्रकार हैंडल कर सकते हैं:

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

Deadlocks Prevention:

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

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

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

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

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

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

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

प्रोसेस को पुनः चालू करने हेतु किया जाता है जब पुराने resources को यूज़ करने के लिए अनुरोध किया गया है और इसके साथ ही नये resources के लिए रिक्वेस्ट भेजा गया है।

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

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

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

Deadlock Avoidance:

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

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

Recovery From Deadlocks:

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

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

  1. Process Termination
  2. Resource Preemption

(1) Process Terminition:

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

(2) Resource Preemption:

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

A Combined Approach to Deadlock Handling:

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

  1. Prevention
  2. Avoidance
  3. Detection

Leave a Comment