Deadlock

Deadlock Definition Hindi

एक deadlock एक ऐसी स्थिति है जहां कोई program उस resource तक नहीं पहुंच सकता है जिसे उसे जारी रखने की आवश्यकता होती है। जब कोई active application गतिरोध से टकराता है, तो वह “hang” हो सकता है या unresponsive हो सकता है।

किसी program के भीतर किसी विशिष्ट प्रक्रिया द्वारा एक्सेस किए जाने पर, सहेजे गए या cached data जैसे संसाधनों को lock किया जा सकता है। डेटा को लॉक करना अन्य प्रक्रियाओं को समय से पहले डेटा को overwrite करने से रोकता है। यदि किसी प्रक्रिया या query को लॉक किए गए डेटा तक पहुंचने की आवश्यकता है, लेकिन डेटा लॉक करने की प्रक्रिया इसे जाने नहीं देगी, तो एक गतिरोध हो सकता है।

उदाहरण के लिए, निम्न स्थिति दो प्रक्रियाओं के बीच deadlock का कारण बनेगी:

  • प्रक्रिया 1 प्रक्रिया 2 से संसाधन बी का अनुरोध करती है।
  • संसाधन B लॉक है जबकि प्रक्रिया 2 चल रही है।
  • प्रक्रिया 2 को प्रक्रिया 1 से संसाधन A की आवश्यकता है ताकि वह चल सके।
  • संसाधन A लॉक है जबकि प्रक्रिया 1 चल रही है।

नतीजा यह है कि प्रक्रिया 1 और प्रक्रिया 2 एक दूसरे के खत्म होने की प्रतीक्षा कर रहे हैं। चूंकि कोई भी प्रक्रिया तब तक जारी नहीं रह सकती जब तक कि दूसरा पूरा न हो जाए, एक गतिरोध पैदा हो जाता है।
गतिरोध से बचना

Developers अपने programming logic में locking की स्थिति से बचकर deadlock को रोक सकते हैं। उदाहरण के लिए, दो प्रक्रियाओं के एक-दूसरे पर निर्भर होने के बजाय, source code लिखा जा सकता है ताकि प्रत्येक thread दूसरे theread के संसाधनों की आवश्यकता से पहले समाप्त हो जाए। यह सुनिश्चित करके कि जरूरत पड़ने पर डेटा सुलभ हो, प्रोग्रामर अपने applications को hang होने या crash होने से बचा सकते हैं।

नोट: deadlock तब भी हो सकता है जब किसी database पर दो या अधिक query चलाई जाती हैं। लेन-देन संबंधी database सक्रिय रिकॉर्ड को लॉक कर देते हैं, अन्य प्रश्नों को उन तक पहुंचने से रोकते हैं। यदि कोई प्रक्रिया लॉक किए गए रिकॉर्ड तक नहीं पहुंच सकती है, तो डेटाबेस डेडलॉक हो सकता है