सेमाफोर क्या है?
सेमाफोर केवल एक चर है जो गैर-नकारात्मक है और थ्रेड्स के बीच साझा किया गया है। एक सेमाफोर एक संकेतन तंत्र है, और एक धागा जो कि एक सेमाफोर पर इंतजार कर रहा है, उसे दूसरे धागे से संकेत दिया जा सकता है। यह प्रक्रिया सिंक्रनाइज़ेशन के लिए दो परमाणु संचालन, 1) प्रतीक्षा और 2) संकेत का उपयोग करता है।
एक सेमाफोर या तो संसाधन तक पहुंच की अनुमति देता है या अस्वीकार करता है, जो इस बात पर निर्भर करता है कि इसे कैसे सेट किया जाता है।
इस ट्यूटोरियल में, आप सीखेंगे:
- म्यूटेक्स क्या है?
- सेमाफोर का उपयोग
- म्यूटेक्स का उपयोग
- सेमीफोर बनाम म्यूटेक्स के बीच अंतर
- म्यूटेक्स और सेमाफोर के बारे में आम गलतफहमी
- सेमाफोर के फायदे
- म्यूटेक्स के लाभ
- सेमाफोरस का नुकसान
- म्यूटेक्स के नुकसान
म्यूटेक्स क्या है?
Mutex का फुल फॉर्म Mutual Exclusion Object है। यह एक विशेष प्रकार का बाइनरी सेमाफोर है जो साझा संसाधन तक पहुंच को नियंत्रित करने के लिए उपयोग किया जाता है। इसमें विस्तारित प्राथमिकता उलटा समस्याओं से बचने के लिए एक प्राथमिकता विरासत तंत्र शामिल है। यह वर्तमान उच्च प्राथमिकता वाले कार्यों को कम से कम समय के लिए अवरुद्ध स्थिति में रखने की अनुमति देता है। हालांकि, प्राथमिकता विरासत में प्राथमिकता-उलटा सही नहीं है, लेकिन केवल इसके प्रभाव को कम करता है।
कुंजी प्रसार
- म्यूटेक्स एक लॉकिंग मैकेनिज्म है जबकि सेमाफोर एक सिग्नलिंग मैकेनिज्म है
- म्यूटेक्स केवल एक वस्तु है जबकि सेमाफोर एक पूर्णांक है
- म्यूटेक्स का कोई उपप्रकार नहीं है जबकि सेमाफोर के दो प्रकार हैं, जो कि सेमाफोर और बाइनरी सेमाफोर की गिनती कर रहे हैं।
- सेमाफोर प्रतीक्षा और सिग्नल संचालन संशोधन का समर्थन करता है, जबकि म्यूटेक्स केवल उस प्रक्रिया द्वारा संशोधित किया जाता है जो एक संसाधन का अनुरोध या जारी कर सकता है।
- सेमाफ़ोर मान को प्रतीक्षा () और सिग्नल () संचालन का उपयोग करके संशोधित किया गया है, दूसरी ओर, म्यूटेक्स संचालन लॉक या अनलॉक किए गए हैं।
सेमाफोर का उपयोग
एकल बफर के मामले में, हम 4 केबी बफर को चार 1 केबी बफ़र्स में अलग कर सकते हैं। सेमाफोर को इन चार बफ़र्स के साथ जोड़ा जा सकता है। इससे उपयोगकर्ता और निर्माता एक ही समय में विभिन्न बफ़र्स पर काम कर सकते हैं।
म्यूटेक्स का उपयोग
एक म्यूटेक्स आपसी बहिष्करण प्रदान करता है, जो निर्माता या उपभोक्ता हो सकते हैं जिनके पास कुंजी (म्यूटेक्स) हो सकती है और अपने काम के साथ आगे बढ़ सकते हैं। जब तक निर्माता बफर को भरता है, तब तक उपयोगकर्ता को इंतजार करना पड़ता है, और इसके विपरीत। म्यूटेक्स लॉक में, हर समय, केवल एक ही धागा पूरे बफर के साथ काम कर सकता है।
सेमीफोर बनाम म्यूटेक्स के बीच अंतर
मापदंडों | सिकंदरा | म्युटेक्स |
---|---|---|
तंत्र | यह एक प्रकार का सिग्नलिंग तंत्र है। | यह एक लॉकिंग मैकेनिज्म है। |
डेटा प्रकार | सेमीफोर एक पूर्णांक चर है। | म्यूटेक्स सिर्फ एक वस्तु है। |
परिवर्तन | प्रतीक्षा और सिग्नल ऑपरेशन एक सेमाफोर को संशोधित कर सकते हैं। | यह केवल उस प्रक्रिया द्वारा संशोधित किया जाता है जो किसी संसाधन का अनुरोध या जारी कर सकता है। |
संसाधन प्रबंधन | यदि कोई संसाधन मुक्त नहीं है, तो प्रक्रिया के लिए एक संसाधन की आवश्यकता होती है जिसे प्रतीक्षा ऑपरेशन को निष्पादित करना चाहिए। यह तब तक इंतजार करना चाहिए जब तक कि अर्धवृत्त की गिनती 0 से अधिक न हो। | यदि यह बंद है, तो प्रक्रिया को इंतजार करना होगा। प्रक्रिया को एक कतार में रखा जाना चाहिए। इसे तभी एक्सेस करना होगा जब म्यूटेक्स अनलॉक हो। |
थ्रेड | आपके पास कई प्रोग्राम थ्रेड हो सकते हैं। | आपके पास म्यूटेक्स में कई प्रोग्राम थ्रेड हो सकते हैं लेकिन एक साथ नहीं। |
स्वामित्व | संसाधन को जारी करने या प्राप्त करने की किसी भी प्रक्रिया द्वारा मूल्य को बदला जा सकता है। | ऑब्जेक्ट लॉक केवल प्रक्रिया द्वारा जारी किया जाता है, जिसने उस पर लॉक प्राप्त किया है। |
प्रकार | सेमाफोर के प्रकार अर्धवृत्त और बाइनरी सेमाफोर की गिनती कर रहे हैं। | म्यूटेक्स का कोई उपप्रकार नहीं है। |
ऑपरेशन | सेमाफ़ोर मान को प्रतीक्षा () और सिग्नल () ऑपरेशन का उपयोग करके संशोधित किया गया है। | म्यूटेक्स ऑब्जेक्ट लॉक या अनलॉक किया गया है। |
संसाधन व्यवसाय | यदि सभी संसाधनों का उपयोग किया जा रहा है तो यह कब्जा कर लिया गया है और संसाधन के लिए अनुरोध करने की प्रक्रिया प्रतीक्षा () संचालन करती है और तब तक खुद को ब्लॉक करती है जब तक कि सेमीफोर काउंट> 1 नहीं हो जाता। | यदि वस्तु पहले से ही लॉक है, तो संसाधन के अनुरोध की प्रक्रिया बंद हो जाती है और लॉक जारी होने से पहले सिस्टम द्वारा कतारबद्ध हो जाती है। |
म्यूटेक्स और सेमाफोर के बारे में सामान्य तथ्य
यहाँ, म्यूटेक्स और सेमाफोर के बारे में कुछ सामान्य तथ्य दिए गए हैं:
- केवल एक कार्य म्यूटेक्स प्राप्त कर सकता है। तो, एक म्यूटेक्स के साथ जुड़ा हुआ स्वामित्व है, और केवल मालिक ही म्यूटेक्स जारी कर सकता है।
- म्यूटेक्स और सेमाफोर का उपयोग करने के कारण अलग हैं शायद उनके कार्यान्वयन में समानता के कारण, एक म्यूटेक्स को बाइनरी सेमाफोर के रूप में संदर्भित किया जाएगा।
- एक उच्च ज्ञात गलत धारणा यह है कि म्यूटेक्स और सेमाफोर लगभग समान हैं, एकमात्र अंतर यह है कि एक म्यूटेक्स 1 की गिनती करने में सक्षम है, जबकि सेमाफोरस 0 से एन तक गिनती करने में सक्षम है।
- बाइनरी सेमाफोर और म्यूटेक्स के बीच हमेशा अनिश्चितता होती है। आप सुन सकते हैं कि एक म्यूटेक्स एक बाइनरी सेमाफोर है, जो सही नहीं है।
सेमाफोर के फायदे
यहां, सेमाफोर का उपयोग करने के लाभ / लाभ हैं:
- यह महत्वपूर्ण अनुभाग तक पहुंचने के लिए एक से अधिक थ्रेड की अनुमति देता है
- सेमाफोर मशीन-स्वतंत्र हैं।
- माइक्रो-कर्नेल के मशीन-स्वतंत्र कोड में सेमाफोरस को लागू किया जाता है।
- वे कई प्रक्रियाओं को महत्वपूर्ण अनुभाग में प्रवेश करने की अनुमति नहीं देते हैं।
- जैसा कि सेमाफोर में व्यस्त प्रतीक्षा है, प्रक्रिया समय और संसाधनों का अपव्यय नहीं है।
- वे मशीन-इंडिपेंडेंट हैं, जिन्हें माइक्रो-कर्नल के मशीन-इंडिपेंडेंट कोड में चलाया जाना चाहिए।
- वे संसाधनों के लचीले प्रबंधन की अनुमति देते हैं।
म्यूटेक्स के लाभ
यहाँ, म्यूटेक्स के महत्वपूर्ण पेशेवरों / लाभ हैं
- म्यूटेक्स अपने महत्वपूर्ण खंड में प्रवेश करने से पहले सरल लॉक प्राप्त करते हैं और फिर इसे जारी करते हैं।
- चूँकि किसी भी समय केवल एक धागा इसके महत्वपूर्ण खंड में होता है, कोई दौड़ की स्थिति नहीं होती है, और डेटा हमेशा सुसंगत रहते हैं।
सेमाफोरस का नुकसान
यहाँ, सेमाफोर के विपक्ष / दोष हैं
- एक सेमाफोर की सबसे बड़ी सीमाओं में से एक प्राथमिकता उलटा है।
- ऑपरेटिंग सिस्टम को वामाफोर को प्रतीक्षा करने और संकेत करने के लिए सभी कॉल का ट्रैक रखना है।
- उनका उपयोग कभी लागू नहीं होता है, लेकिन यह केवल सम्मेलन द्वारा होता है।
- सेमाफ़ोर में गतिरोध से बचने के लिए, प्रतीक्षा और सिग्नल संचालन को सही क्रम में निष्पादित करने की आवश्यकता होती है।
- सेमाफोर प्रोग्रामिंग एक जटिल विधि है, इसलिए आपसी बहिष्कार को प्राप्त नहीं करने की संभावना है।
- यह बड़े पैमाने पर उपयोग के लिए एक व्यावहारिक तरीका भी नहीं है क्योंकि उनके उपयोग से प्रतिरूपकता का नुकसान होता है।
- प्रोग्रामर त्रुटि के लिए सेमाफोर अधिक प्रवण है।
- यह प्रोग्रामर त्रुटि के कारण गतिरोध या आपसी बहिष्कार का उल्लंघन हो सकता है।
म्यूटेक्स के नुकसान
यहाँ, म्यूटेक्स के विपक्ष / कमियां हैं
- यदि कोई थ्रेड लॉक प्राप्त करता है और सो जाता है या यह पूर्वनिर्मित है, तो दूसरा धागा आगे बढ़ने में सक्षम नहीं हो सकता है। इससे भुखमरी हो सकती है।
- इसे अधिग्रहित करने की तुलना में इसे अलग संदर्भ से लॉक या अनलॉक नहीं किया जा सकता है।
- एक समय में केवल एक धागे को महत्वपूर्ण खंड में अनुमति दी जानी चाहिए।
- सामान्य कार्यान्वयन से व्यस्त प्रतीक्षा स्थिति हो सकती है, जो CPU समय बर्बाद करती है।