इस पोस्ट में हम mutex के बारें में पढेंगे तथा इसमें और semaphore में क्या अंतर होता है उसके बारें में भी पढेंगे. तो चलिए शुरू करते है। mutex एक प्रोग्राम ऑब्जेक्ट होता है जो कि बहुत सारें प्रोग्राम threads को एक रिसोर्स को एक्सेस करने की अनुमति देता है परन्तु ये threads एक समय में एक साथ उस रिसोर्स को एक्सेस नहीं कर सकते। म्यूटेक्स एक बाइनरी वेरिएबल होता है जिसका उद्देश्य locking mechanism प्रदान करना होता है।
जब भी कोई प्रोग्राम शुरू होता है तो यह दिए गये रिसोर्स के लिए सिस्टम से request करके एक mutex का निर्माण करता है तथा सिस्टम उस mutex को एक यूनिक name तथा ID देता है. उसके बाद thread जिसे रिसोर्स की जरुरत होती है उसे अन्य threads के लिए mutex को तब तक lock करना पड़ता है जब तक वह उस रिसोर्स का प्रयोग करता है। यदि म्युटेक्स पहले से ही lock है तो thread को queue में लगकर wait करना पड़ता है. जब तक कि वह unlock नहीं हो जाता।
Difference between mutex and semaphore
ऑपरेटिंग सिस्टम में, mutexs तथा semaphore दोनों kernal resources होते है जो कि synchronization सेवायें प्रदान करते है।
आइये इनके मध्य अंतर को पढ़ते है.
semaphore | mutex |
---|---|
1:- semaphore एक signaling mechanism है | यह एक locking mechanism है। |
2:- यह एक integer वेरिएबल है | यह एक बाइनरी वेरिएबल है। |
3:- semaphore जो है वह kernal space में कार्य करता है | यह userspace में कार्य करता है। |
4:- semaphore की वैल्यू किसी भी process के द्वारा परिवर्तित हो जाती है. | mutex lock केवल उसी thread से release होता है जिसमें वह लगता है। |
5:- semaphores दो प्रकार के होते है:- binary तथा counting. | इस का कोई भी प्रकार नहीं होता है। |
6:- semaphore वेरिएबल की वैल्यू wait() तथा signal() ऑपरेशन के द्वारा बदलती है | mutex ऑब्जेक्ट जो है वह lock तथा unlock उसी thread से होता है जो thread रिसोर्स को एक्सेस करता है। |