लाइवलॉक: क्या है, उदाहरण, डेडलॉक से अंतर

लाइवलॉक क्या है?

A livelock यह एक ऐसी स्थिति है जहाँ एक विशेष लॉक के लिए अनुरोध को बार-बार अस्वीकार कर दिया जाता है, क्योंकि कई ओवरलैपिंग शेयर्ड लॉक एक दूसरे में हस्तक्षेप करते रहते हैं। प्रक्रियाएँ अपनी स्थिति बदलती रहती हैं, जो उन्हें कार्य पूरा करने से और रोकती है। यह उन्हें कार्य पूरा करने से और रोकता है।

लाइवलॉक के उदाहरण

उदाहरण 1:

लाइवलॉक का सबसे आसान उदाहरण दो लोग होंगे जो एक गलियारे में आमने-सामने मिलते हैं, और वे दोनों एक दूसरे को पास देने के लिए एक तरफ हट जाते हैं। वे बिना किसी प्रगति के एक तरफ से दूसरी तरफ चले जाते हैं क्योंकि वे उस समय एक ही दिशा में आगे बढ़ रहे होते हैं। यहाँ, वे कभी एक दूसरे को पार नहीं करते हैं।

उदाहरण 2:

लाइवलॉक के उदाहरण

आप ऊपर की छवि में देख सकते हैं, दी गई दो प्रक्रियाओं में से प्रत्येक को दो संसाधनों की आवश्यकता होती है, और वे उनके लिए आवश्यक लॉक प्राप्त करने का प्रयास करने के लिए प्रिमिटिव पोलिंग एंटर रजिस्ट्री का उपयोग करते हैं। यदि प्रयास विफल हो जाता है, तो विधि फिर से काम करती है।

  1. प्रक्रिया A होल्ड Y संसाधन
  2. प्रक्रिया B संसाधन X रखती है
  3. प्रक्रिया A को X संसाधन की आवश्यकता है
  4. प्रक्रिया B को Y संसाधन की आवश्यकता है

मान लें कि, प्रक्रिया A पहले चलती है और डेटा संसाधन X प्राप्त करती है और फिर प्रक्रिया B चलती है और संसाधन Y प्राप्त करती है, इससे कोई फर्क नहीं पड़ता कि कौन सी प्रक्रिया पहले चलती है, उनमें से कोई भी आगे नहीं बढ़ती है।

हालाँकि, दोनों में से कोई भी प्रक्रिया अवरुद्ध नहीं है। वे बिना किसी प्रगति के बार-बार CPU संसाधनों का उपयोग करते हैं, लेकिन किसी भी प्रसंस्करण अवरोध को भी रोकते हैं।

इसलिए, यह स्थिति ऐसी नहीं है गतिरोध क्योंकि एक भी प्रक्रिया अवरुद्ध नहीं है, लेकिन हम गतिरोध के समतुल्य स्थिति का सामना करते हैं, जो कि LIVELOCK है।

लाइवलॉक का कारण क्या है?

लाइवलॉक तब होता है जब किसी विशिष्ट सिस्टम में अनुमत प्रक्रियाओं की कुल संख्या को प्रक्रिया तालिका में प्रविष्टियों की कुल संख्या द्वारा परिभाषित किया जाना चाहिए। इसलिए, प्रक्रिया तालिका स्लॉट को परिमित संसाधन के रूप में संदर्भित किया जाना चाहिए।

गतिरोध (डेडलॉक) क्या है?

डेडलॉक एक ऐसी स्थिति है जो ओएस में तब होती है जब कोई भी प्रक्रिया प्रतीक्षा अवस्था में प्रवेश करती है क्योंकि कोई अन्य प्रतीक्षारत प्रक्रिया मांगे गए संसाधन को पकड़ रही होती है। डेडलॉक मल्टी-प्रोसेसिंग में एक आम समस्या है जहाँ कई प्रक्रियाएँ एक विशिष्ट प्रकार के परस्पर अनन्य संसाधन को साझा करती हैं जिसे सॉफ्ट लॉक या सॉफ़्टवेयर के रूप में जाना जाता है।

गतिरोध का उदाहरण

  • वास्तविक दुनिया का उदाहरण यातायात है, जो केवल एक ही दिशा में जा रहा है।
  • यहां पुल को एक संसाधन माना जाता है।
  • इसलिए, जब डेडलॉक होता है, तो इसे आसानी से हल किया जा सकता है यदि एक कार पीछे हट जाए (संसाधनों को रोककर वापस रोलबैक करें)।
  • यदि गतिरोध की स्थिति उत्पन्न हो तो कई कारों को पीछे ले जाना पड़ सकता है।
  • अतः भुखमरी सम्भव है।
गतिरोध का उदाहरण
गतिरोध का उदाहरण

भुखमरी क्या है?

भुखमरी एक ऐसी स्थिति है जहाँ सभी कम प्राथमिकता वाली प्रक्रियाएँ अवरुद्ध हो जाती हैं, और उच्च प्राथमिकता वाली प्रक्रियाएँ आगे बढ़ती हैं। किसी भी सिस्टम में, उच्च/निम्न प्राथमिकता वाले संसाधनों के लिए अनुरोध गतिशील रूप से होते रहते हैं। इसलिए, यह तय करने के लिए किसी नीति की आवश्यकता होती है कि किसे कब सहायता मिलेगी।

कुछ एल्गोरिदम का उपयोग करते हुए, कुछ प्रक्रियाओं को वांछित सेवाएँ नहीं मिल सकती हैं, भले ही वे डेडलॉक न हों। भुखमरी तब होती है जब कुछ थ्रेड्स साझा संसाधनों को लंबे समय तक अनुपलब्ध बना देते हैं।

भुखमरी का उदाहरण

उदाहरण के लिए, एक ऑब्जेक्ट एक सिंक्रोनाइज़्ड विधि प्रदान करता है जिसे वापस आने में लंबा समय लग सकता है। यदि एक थ्रेड अक्सर इस विधि का उपयोग करता है, तो अन्य थ्रेड जिन्हें उसी ऑब्जेक्ट तक बार-बार सिंक्रोनाइज़्ड एक्सेस की आवश्यकता होती है, अक्सर ब्लॉक हो जाएंगे।

डेडलॉक, स्टार्वेशन और लाइवलॉक के बीच अंतर

  • डेडलॉक वह स्थिति है जो ऑपरेटिंग सिस्टम में तब उत्पन्न होती है जब कोई प्रक्रिया प्रतीक्षा अवस्था में प्रवेश करती है, क्योंकि मांगा गया संसाधन किसी अन्य प्रतीक्षारत प्रक्रिया द्वारा रोक रखा जाता है।
  • दूसरी ओर, लाइवलॉक लगभग डेडलॉक के समान ही होता है, सिवाय इसके कि लाइवलॉक में शामिल प्रक्रियाओं की अवस्थाएं हमेशा एक दूसरे में बदलती रहती हैं, कोई भी प्रगति नहीं करती।
  • अतः, लाइवलॉक संसाधन की कमी का एक अनोखा मामला है।

सारांश

  • परिभाषा: लाइवलॉक एक ऐसी स्थिति है, जहां एक विशेष लॉक के लिए अनुरोध को बार-बार अस्वीकार कर दिया जाता है, क्योंकि कई ओवरलैपिंग साझा लॉक एक-दूसरे में हस्तक्षेप करते रहते हैं।
  • लाइवलॉक तब होता है जब किसी विशिष्ट सिस्टम में अनुमत प्रक्रियाओं की कुल संख्या को प्रक्रिया तालिका में प्रविष्टियों की कुल संख्या द्वारा परिभाषित किया जाना चाहिए
  • डेडलॉक वह स्थिति है जो ऑपरेटिंग सिस्टम में तब उत्पन्न होती है जब कोई प्रक्रिया प्रतीक्षा अवस्था में प्रवेश कर जाती है, क्योंकि कोई अन्य प्रतीक्षारत प्रक्रिया मांगे गए संसाधन को रोके हुए होती है।
  • वास्तविक दुनिया का उदाहरण यातायात है, जो केवल एक ही दिशा में जा रहा है।
  • लाइवलॉक का एक उदाहरण दो व्यक्ति होंगे जो एक गलियारे में आमने-सामने मिलते हैं, और दोनों एक-दूसरे को जाने देने के लिए एक तरफ हट जाते हैं।
  • भुखमरी एक ऐसी स्थिति है जहां सभी निम्न प्राथमिकता वाली प्रक्रियाएं अवरुद्ध हो जाती हैं, और उच्च प्राथमिकता वाली प्रक्रियाएं आगे बढ़ती रहती हैं।