सेमोरोर और म्यूट एक्स के बीच अंतर

Anonim

सेमाफोर बनाम म्यूट x

सेमाफोर एक डेटा संरचना है, जो यह सुनिश्चित करने के लिए उपयोग किया जाता है कि कई प्रक्रियाएं एक सामान्य समानांतर प्रोग्रामिंग वातावरण में एक ही समय में संसाधन या एक महत्वपूर्ण खंड। मृत लॉक और दौड़ की स्थिति से बचने के लिए सेमाफोर का उपयोग किया जाता है। कई समवर्ती प्रक्रियाओं द्वारा एक ही समय में एक सामान्य संसाधन तक पहुंच से बचने के लिए म्यूटक्स (म्युचुअल एक्स्केक्शन ऑब्जेक्ट) का उपयोग किया जाता है।

एक सेमाफोर क्या है?

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

एक म्यूटक्स क्या है?

जब एक कंप्यूटर अनुप्रयोग शुरू होता है, तो यह एक म्यूट एक्स बनायेगा और इसे एक संसाधन के साथ संलग्न करेगा। जब संसाधन का उपयोग किसी धागे द्वारा किया जाता है, तो यह लॉक होता है और अन्य थ्रेड इसका उपयोग नहीं कर सकते। यदि एक और सूत्र एक ही संसाधन का उपयोग करना चाहता है, तो उसे एक अनुरोध करना होगा। तब वह धागा एक कतार में रखा जाएगा जब तक संसाधन के साथ पहले धागा समाप्त नहीं हो जाता। जब पहले धागा संसाधन के साथ समाप्त हो जाता है, तो लॉक निकाल दिया जाएगा और जो धागा उस कतार में प्रतीक्षा कर रहा है वह संसाधन से एक्सेस प्राप्त कर सकता है। यदि कतार में कई थ्रेड्स प्रतीक्षा कर रहे हैं, तो उन्हें घूर्णन आधार में पहुंच प्रदान की जाती है। व्यावहारिक रूप से, जब म्यूट एक्स ने कई थ्रेड्स के बीच एक संसाधन की पहुंच को बदल दिया है, तो यह एक दृश्य के रूप में दिखाई देगा जैसा एक ही समय में एकाधिक थ्रेड संसाधन ले रहे हैं। लेकिन आंतरिक रूप से केवल एक ही थ्रेड किसी दिए गए समय में संसाधन तक पहुंच रहा है।

सेमेफोर और म्यूटक्स में क्या अंतर है?

हालांकि, दोनों semaphores और mutex वस्तुओं समानांतर प्रोग्रामिंग वातावरण में पारस्परिक बहिष्करण प्राप्त करने के लिए उपयोग किया जाता है, उनके पास कुछ अंतर है। एक म्यूट एक्स ऑब्जेक्ट केवल एक धागे को एक संसाधन या एक महत्वपूर्ण खंड का उपयोग करने की अनुमति देता है, जबकि सैकफार्स एक संसाधन (एक अधिकतम अनुमति संख्या के तहत) के एक साथ पहुंच के सीमित संख्या को अनुमति देता है।Mutex ऑब्जेक्ट के साथ, अन्य धागे जो संसाधन तक पहुंच बनाना चाहते हैं, उन्हें कतार में इंतजार करना पड़ता है, जब तक संसाधन का उपयोग करके वर्तमान थ्रेड समाप्त नहीं हो जाता।