गतिरोध Operaटिंग सिस्टम: सर्कुलर वेट क्या है (उदाहरण)
गतिरोध (डेडलॉक) क्या है?
गतिरोध यह एक ऐसी स्थिति है जो ओएस में तब होती है जब कोई भी प्रक्रिया प्रतीक्षा अवस्था में प्रवेश करती है क्योंकि कोई अन्य प्रतीक्षारत प्रक्रिया मांगे गए संसाधन को पकड़ रही होती है। डेडलॉक मल्टी-प्रोसेसिंग में एक आम समस्या है जहाँ कई प्रक्रियाएँ एक विशिष्ट प्रकार के परस्पर अनन्य संसाधन को साझा करती हैं जिसे सॉफ्ट लॉक या सॉफ़्टवेयर के रूप में जाना जाता है।
गतिरोध का उदाहरण
- वास्तविक दुनिया का उदाहरण यातायात है, जो केवल एक ही दिशा में जा रहा है।
- यहां पुल को एक संसाधन माना जाता है।
- इसलिए, जब डेडलॉक होता है, तो इसे आसानी से हल किया जा सकता है यदि एक कार पीछे हट जाए (संसाधनों को रोककर वापस रोलबैक करें)।
- यदि गतिरोध की स्थिति उत्पन्न हो तो कई कारों को पीछे ले जाना पड़ सकता है।
- अतः भुखमरी सम्भव है।
सर्कुलर प्रतीक्षा क्या है?
एक प्रक्रिया संसाधन की प्रतीक्षा कर रही है, जो दूसरी प्रक्रिया द्वारा धारण किया गया है, जो तीसरी प्रक्रिया द्वारा धारण किए गए संसाधन की भी प्रतीक्षा कर रही है आदि। यह तब तक जारी रहेगा जब तक कि अंतिम प्रक्रिया पहली प्रक्रिया द्वारा धारण किए गए संसाधन की प्रतीक्षा नहीं कर रही है। इससे एक चक्राकार श्रृंखला बनती है।
उदाहरण के लिए, प्रक्रिया A को संसाधन B आवंटित किया जाता है क्योंकि वह संसाधन A का अनुरोध कर रही है। इसी तरह, प्रक्रिया B को संसाधन A आवंटित किया जाता है, और वह संसाधन B का अनुरोध कर रही है। इससे एक वृत्ताकार प्रतीक्षा लूप निर्मित होता है।
परिपत्र प्रतीक्षा का उदाहरण
उदाहरण के लिए, एक कंप्यूटर में तीन USB ड्राइव और तीन प्रक्रियाएँ हैं। तीनों प्रक्रियाओं में से प्रत्येक USB ड्राइव में से एक को रखने में सक्षम है। इसलिए, जब प्रत्येक प्रक्रिया किसी अन्य ड्राइव का अनुरोध करती है, तो तीनों प्रक्रियाओं में डेडलॉक की स्थिति होगी क्योंकि प्रत्येक प्रक्रिया USB ड्राइव के रिलीज़ होने की प्रतीक्षा करेगी, जो वर्तमान में उपयोग में है। इसके परिणामस्वरूप एक गोलाकार श्रृंखला बन जाएगी।
ऑपरेटिंग सिस्टम में डेडलॉक का पता लगाना
डेडलॉक की घटना का पता रिसोर्स शेड्यूलर द्वारा लगाया जा सकता है। रिसोर्स शेड्यूलर OS को विभिन्न प्रक्रियाओं को आवंटित सभी संसाधनों पर नज़र रखने में मदद करता है। इसलिए, जब डेडलॉक का पता चलता है, तो इसे नीचे दिए गए तरीकों का उपयोग करके हल किया जा सकता है:
ऑपरेटिंग सिस्टम में डेडलॉक की रोकथाम
डेडलॉक होने से पहले उसे रोकना महत्वपूर्ण है। सिस्टम हर ट्रांजेक्शन को निष्पादित होने से पहले जांचता है ताकि यह सुनिश्चित हो सके कि यह डेडलॉक की स्थिति में न ले जाए। इस तरह से कि एक छोटा सा बदलाव भी डेडलॉक की स्थिति में ले जा सकता है, जो भविष्य में डेडलॉक की ओर ले जा सकता है, यह प्रक्रिया को निष्पादित करने की अनुमति नहीं देता है।
यह उन विधियों का समूह है जो यह सुनिश्चित करते हैं कि कम से कम एक स्थिति अवश्य पूरी हो।
कोई पूर्व-निवारक कार्रवाई नहीं
कोई पूर्वग्रहण नहीं - किसी संसाधन को उसे धारण करने वाली प्रक्रिया द्वारा केवल स्वेच्छा से ही जारी किया जा सकता है, जब वह प्रक्रिया अपना कार्य समाप्त कर ले
- यदि कोई प्रक्रिया, जो कुछ संसाधनों को धारण कर रही है, किसी अन्य संसाधन का अनुरोध करती है जिसे उसे तत्काल आवंटित नहीं किया जा सकता, तो उस स्थिति में, सभी संसाधन जारी कर दिए जाएंगे।
- पूर्वनिर्धारित संसाधनों को प्रतीक्षारत प्रक्रिया के लिए संसाधनों की सूची की आवश्यकता होती है।
- प्रक्रिया तभी पुनः आरंभ होगी जब वह अपना पुराना संसाधन तथा अनुरोधित नया संसाधन पुनः प्राप्त कर सकेगी।
- यदि प्रक्रिया किसी अन्य संसाधन का अनुरोध कर रही है, तो जब वह उपलब्ध हो, तो उसे अनुरोधकर्ता प्रक्रिया को दे दिया गया।
- यदि यह किसी अन्य प्रक्रिया द्वारा रोक कर रखा गया है जो किसी अन्य संसाधन की प्रतीक्षा कर रही है, तो हम इसे छोड़ देते हैं और अनुरोध करने वाली प्रक्रिया को दे देते हैं।
पारस्परिक बहिष्कार
म्यूचुअल एक्सक्लूजन म्यूटेक्स का पूर्ण रूप है। यह एक विशेष प्रकार का बाइनरी सेमाफोर है जिसका उपयोग साझा संसाधन तक पहुंच को नियंत्रित करने के लिए किया जाता है। इसमें विस्तारित प्राथमिकता व्युत्क्रम समस्याओं से बचने के लिए प्राथमिकता विरासत तंत्र शामिल है। यह वर्तमान उच्च प्राथमिकता वाले कार्यों को यथासंभव कम समय के लिए अवरुद्ध अवस्था में रखने की अनुमति देता है।
साझा किए गए संसाधन, जैसे कि केवल पढ़ने योग्य फ़ाइलें, कभी भी गतिरोध की स्थिति उत्पन्न नहीं करती हैं, लेकिन प्रिंटर और टेप ड्राइव जैसे संसाधनों को एकल प्रक्रिया द्वारा विशेष पहुंच की आवश्यकता होती है।
रुको और प्रतीक्षा करो
इस स्थिति में, प्रक्रियाओं को एक या एक से अधिक संसाधनों को धारण करने से रोका जाना चाहिए, जबकि एक साथ एक या अधिक संसाधनों की प्रतीक्षा करनी होती है।
परिपत्र प्रतीक्षा
यह सभी संसाधन प्रकारों का कुल क्रम लागू करता है। सर्कुलर प्रतीक्षा के लिए यह भी आवश्यक है कि प्रत्येक प्रक्रिया गणना के बढ़ते क्रम में संसाधनों का अनुरोध करे।
गतिरोध से बचाव Algorithms
डेडलॉक होने के बाद कार्रवाई करने के बजाय डेडलॉक से बचना बेहतर है। इसके लिए अतिरिक्त जानकारी की आवश्यकता होती है, जैसे संसाधनों का उपयोग कैसे किया जाना चाहिए। डेडलॉक से बचाव सबसे सरल और सबसे उपयोगी मॉडल है जिसमें प्रत्येक प्रक्रिया प्रत्येक प्रकार के संसाधनों की अधिकतम संख्या घोषित करती है जिनकी उसे आवश्यकता हो सकती है।
परिहार Algorithms
गतिरोध-निवारण एल्गोरिथ्म आपको संसाधन-आवंटन स्थिति का गतिशील रूप से आकलन करने में मदद करता है, ताकि कभी भी चक्राकार-प्रतीक्षा की स्थिति न हो।
संसाधन प्रकार का एकल उदाहरण.
- संसाधन-आवंटन ग्राफ़ का उपयोग करें
- चक्र आवश्यक हैं जो डेडलॉक के लिए पर्याप्त हैं
एक संसाधन प्रकार के एकाधिक उदाहरण.
- चक्र आवश्यक हैं लेकिन डेडलॉक के लिए कभी पर्याप्त नहीं हैं।
- का उपयोग करता है बैंकर एल्गोरिथ्म
भुखमरी और गतिरोध के बीच अंतर
यहां, गतिरोध और भुखमरी के बीच कुछ महत्वपूर्ण अंतर हैं:
गतिरोध | भुखमरी |
---|---|
गतिरोध की स्थिति तब उत्पन्न होती है जब कोई एक प्रक्रिया अवरुद्ध हो जाती है। | भुखमरी एक ऐसी स्थिति है जहां सभी निम्न प्राथमिकता वाली प्रक्रियाएं अवरुद्ध हो जाती हैं, और उच्च प्राथमिकता वाली प्रक्रियाएं निष्पादित होती हैं। |
गतिरोध एक अनंत प्रक्रिया है। | भुखमरी एक लम्बी प्रतीक्षा है, लेकिन यह कोई अनंत प्रक्रिया नहीं है। |
हर गतिरोध में सदैव भुखमरी होती है। | हर भुखमरी में जरूरी नहीं कि कोई गतिरोध हो। |
तब गतिरोध होता है जब पारस्परिक बहिष्कार, होल्ड और प्रतीक्षा होती है। यहाँ, प्रीएम्पशन और सर्कुलर वेट एक साथ नहीं होते हैं। | ऐसा अनियंत्रित प्राथमिकता और संसाधन प्रबंधन के कारण होता है। |
डेडलॉक के लाभ
डेडलॉक विधि का उपयोग करने के पक्ष/लाभ इस प्रकार हैं
- यह स्थिति उन प्रक्रियाओं के लिए अच्छी तरह से काम करती है जो गतिविधि का एकल विस्फोट करती हैं
- डेडलॉक के लिए किसी पूर्वग्रह की आवश्यकता नहीं है।
- सुविधाजनक विधि जब उन संसाधनों पर लागू की जाती है जिनकी स्थिति को आसानी से सहेजा और बहाल किया जा सकता है
- संकलन-समय जांच के माध्यम से लागू करना संभव है
- किसी रन-टाइम संगणना की आवश्यकता नहीं है क्योंकि समस्या का समाधान सिस्टम डिज़ाइन में ही हो जाता है
गतिरोध के नुकसान
डेडलॉक विधि का उपयोग करने के नुकसान/कमियां यहां दी गई हैं
- प्रक्रिया आरंभ में देरी
- प्रक्रियाओं को भविष्य की संसाधन आवश्यकता का पता होना चाहिए
- आवश्यकता से अधिक बार पूर्व-अधिग्रहण
- वृद्धिशील संसाधन अनुरोधों को अस्वीकार करता है
- अंतर्निहित पूर्वक्रय हानियाँ.
सारांश
- गतिरोध परिभाषा: यह एक ऐसी स्थिति है जो OS जब कोई प्रक्रिया प्रतीक्षा अवस्था में प्रवेश करती है क्योंकि कोई अन्य प्रतीक्षा प्रक्रिया मांगे गए संसाधन को धारण किए हुए होती है
- चक्राकार प्रतीक्षा तब होती है जब एक प्रक्रिया संसाधन की प्रतीक्षा कर रही होती है, जो दूसरी प्रक्रिया द्वारा धारण किया जाता है, जो तीसरी प्रक्रिया द्वारा धारण किए गए संसाधन की भी प्रतीक्षा कर रही होती है, आदि।
- संसाधन अनुसूचक द्वारा डेडलॉक की घटना का पता लगाया जा सकता है।
- गतिरोध उत्पन्न होने से पहले ही उसे रोकना महत्वपूर्ण है।
- किसी संसाधन को उसे धारण करने वाली प्रक्रिया द्वारा स्वैच्छिक रूप से तभी छोड़ा जा सकता है, जब वह प्रक्रिया अपना कार्य पूरा कर ले।
- म्यूचुअल एक्सक्लूजन म्यूटेक्स का पूर्ण रूप है। यह एक विशेष प्रकार का बाइनरी है सिकंदरा जिसका उपयोग साझा संसाधन तक पहुंच को नियंत्रित करने के लिए किया जाता है।
- होल्ड और वेट एक ऐसी स्थिति है, जहां प्रक्रियाओं को एक या एक से अधिक संसाधनों को होल्ड करने से रोका जाना चाहिए, जबकि एक साथ एक या अधिक संसाधनों की प्रतीक्षा करनी होती है।
- डेडलॉक परिहार सबसे सरल और सबसे उपयोगी मॉडल है जिसमें प्रत्येक प्रक्रिया प्रत्येक प्रकार के संसाधनों की अधिकतम संख्या घोषित करती है जिनकी उसे आवश्यकता हो सकती है।
- गतिरोध-निवारण एल्गोरिथ्म आपको संसाधन-आवंटन स्थिति का गतिशील रूप से आकलन करने में मदद करता है, ताकि कभी भी चक्राकार-प्रतीक्षा की स्थिति न हो।
- गतिरोध एक अनंत प्रक्रिया है, जबकि भुखमरी एक लंबी प्रतीक्षा है, लेकिन अनंत प्रक्रिया नहीं है।