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