एचएमबी क्या है? Semaphore? गिनती, बाइनरी प्रकार उदाहरण के साथ

एचएमबी क्या है? Semaphore?

Semaphore यह बस एक चर है जो गैर-नकारात्मक है और थ्रेड्स के बीच साझा किया जाता है। सेमाफोर एक सिग्नलिंग तंत्र है, और एक थ्रेड जो सेमाफोर पर प्रतीक्षा कर रहा है उसे दूसरे थ्रेड द्वारा संकेत दिया जा सकता है। यह दो परमाणु संचालन का उपयोग करता है, 1) प्रतीक्षा करें, और 2) Signal प्रक्रिया तुल्यकालन के लिए.

सेमाफोर या तो संसाधन तक पहुंच की अनुमति देता है या नहीं देता है, जो इस बात पर निर्भर करता है कि इसे कैसे सेट किया गया है।

विशेषता Semaphore

यहाँ, सेमाफोर की विशेषताएं दी गई हैं:

  • यह एक ऐसा तंत्र है जिसका उपयोग कार्यों का समन्वयन प्रदान करने के लिए किया जा सकता है।
  • यह एक निम्न-स्तरीय तुल्यकालन तंत्र है।
  • Semaphore हमेशा एक गैर-ऋणात्मक पूर्णांक मान रखेगा.
  • Semaphore परीक्षण संचालन और इंटरप्ट का उपयोग करके कार्यान्वित किया जा सकता है, जिसे फ़ाइल डिस्क्रिप्टर का उपयोग करके निष्पादित किया जाना चाहिए।

के प्रकार Semaphores

सेमाफोर के दो सामान्य प्रकार हैं

  • सेमाफोर की गिनती
  • बाइनरी सेमाफोर.

गिनती Semaphores

इस प्रकार की Semaphore एक गिनती का उपयोग करता है जो कार्य को कई बार प्राप्त या जारी करने में मदद करता है। यदि प्रारंभिक गिनती = 0 है, तो गिनती सेमाफोर को अनुपलब्ध स्थिति में बनाया जाना चाहिए।

गिनती Semaphores
गिनती Semaphores

हालाँकि, यदि गिनती > 0 है, तो सेमाफोर उपलब्ध स्थिति में बनाया जाता है, और इसमें टोकन की संख्या इसकी गिनती के बराबर होती है।

द्विचर Semaphores

बाइनरी सेमाफोर, गिनती सेमाफोर के समान ही होते हैं, लेकिन उनका मान 0 और 1 तक सीमित होता है। इस प्रकार के सेमाफोर में, प्रतीक्षा ऑपरेशन तभी काम करता है जब सेमाफोर = 1 हो, और सिग्नल ऑपरेशन तब सफल होता है जब सेमाफोर = 0 हो। गिनती सेमाफोर की तुलना में इसे लागू करना आसान है।

द्विचर Semaphores

द्विचर Semaphores

इसका उदाहरण Semaphore

नीचे दिया गया कार्यक्रम एक चरणबद्ध कार्यान्वयन है, जिसमें सेमाफोर का उपयोग और घोषणा शामिल है।

Shared var mutex: semaphore = 1;
Process i
    begin
    .
    .
    P(mutex);
    execute CS;
    V(mutex);
    .
    .
    End;

रुको और Signal Operaमें tion Semaphores

इन दोनों कार्यों का उपयोग कार्यान्वयन के लिए किया जाता है प्रक्रिया तुल्यकालनइस सेमाफोर ऑपरेशन का लक्ष्य पारस्परिक बहिष्करण प्राप्त करना है।

के लिए इंतजार Operaउत्पादन

इस प्रकार का सेमाफोर ऑपरेशन आपको क्रिटिकल सेक्शन में किसी कार्य की प्रविष्टि को नियंत्रित करने में मदद करता है। हालाँकि, यदि प्रतीक्षा का मान सकारात्मक है, तो प्रतीक्षा तर्क X का मान घट जाता है। नकारात्मक या शून्य मान के मामले में, कोई ऑपरेशन निष्पादित नहीं होता है। इसे P(S) ऑपरेशन भी कहा जाता है।

सेमाफोर मान कम होने के बाद, जो ऋणात्मक हो जाता है, कमांड को तब तक रोक कर रखा जाता है जब तक कि आवश्यक शर्तें पूरी नहीं हो जातीं।

Copy CodeP(S)
{ 
    while (S<=0);
    S--;
}

Signal आपरेशन

इस प्रकार की Semaphore ऑपरेशन का उपयोग किसी महत्वपूर्ण अनुभाग से किसी कार्य के बाहर निकलने को नियंत्रित करने के लिए किया जाता है। यह तर्क के मान को 1 से बढ़ाने में मदद करता है, जिसे V(S) के रूप में दर्शाया जाता है।

Copy CodeP(S)
{ 
    while (S>=0);
    S++;
}

गिनती Semaphore बनाम बाइनरी Semaphore

गिनती और बाइनरी सेमाफोर के बीच कुछ प्रमुख अंतर इस प्रकार हैं:

गिनती Semaphore द्विचर Semaphore
कोई पारस्परिक बहिष्कार नहीं पारस्परिक बहिष्कार
कोई भी पूर्णांक मान केवल 0 और 1 का मान
एक से अधिक स्लॉट केवल एक स्लॉट
प्रक्रियाओं का एक सेट प्रदान करें इसमें पारस्परिक बहिष्करण तंत्र है।

के बीच अंतर Semaphore बनाम म्यूटेक्स

पैरामीटर्स Semaphore म्युटेक्स
तंत्र यह एक प्रकार का संकेत तंत्र है। यह एक लॉकिंग तंत्र है।
डाटा प्रकार Semaphore एक पूर्णांक चर है. म्यूटेक्स केवल एक ऑब्जेक्ट है।
परिवर्तन प्रतीक्षा और संकेत प्रचालन सेमाफोर को संशोधित कर सकते हैं। इसे केवल उस प्रक्रिया द्वारा संशोधित किया जाता है जो संसाधन का अनुरोध या रिलीज कर सकती है।
संसाधन प्रबंधन यदि कोई संसाधन खाली नहीं है, तो प्रक्रिया को एक संसाधन की आवश्यकता होती है जो प्रतीक्षा ऑपरेशन को निष्पादित करे। इसे तब तक प्रतीक्षा करनी चाहिए जब तक कि सेमाफोर की गिनती 0 से अधिक न हो जाए। यदि यह लॉक है, तो प्रक्रिया को प्रतीक्षा करनी होगी। प्रक्रिया को कतार में रखा जाना चाहिए। इसे केवल तभी एक्सेस किया जाना चाहिए जब म्यूटेक्स अनलॉक हो।
धागा आपके पास एकाधिक प्रोग्राम थ्रेड हो सकते हैं. आप म्यूटेक्स में एकाधिक प्रोग्राम थ्रेड रख सकते हैं, लेकिन एक साथ नहीं।
स्वामित्व संसाधन को जारी करने या प्राप्त करने वाली किसी भी प्रक्रिया द्वारा मूल्य को बदला जा सकता है। ऑब्जेक्ट लॉक केवल उस प्रक्रिया द्वारा जारी किया जाता है, जिसने उस पर लॉक प्राप्त किया है।
प्रकार के प्रकार Semaphore सेमाफोर और बाइनरी सेमाफोर की गिनती कर रहे हैं और म्यूटेक्स का कोई उपप्रकार नहीं है।
Operaउत्पादन Semaphore मूल्य को wait() और signal() ऑपरेशन का उपयोग करके संशोधित किया जाता है। म्यूटेक्स ऑब्जेक्ट लॉक या अनलॉक है.
संसाधन अधिभोग यदि सभी संसाधनों का उपयोग किया जा रहा है और संसाधन के लिए अनुरोध करने वाली प्रक्रिया प्रतीक्षा () ऑपरेशन करती है और तब तक खुद को अवरुद्ध करती है जब तक कि सेमाफोर गिनती > 1 नहीं हो जाती, तो इसे व्यस्त माना जाता है। यदि ऑब्जेक्ट पहले से ही लॉक है, तो संसाधनों का अनुरोध करने वाली प्रक्रिया प्रतीक्षा करती है और लॉक जारी होने से पहले सिस्टम द्वारा उसे कतारबद्ध कर दिया जाता है।

के फायदे Semaphores

यहाँ, उपयोग करने के पक्ष/लाभ हैं Semaphore:

  • यह एक से अधिक थ्रेड को महत्वपूर्ण अनुभाग तक पहुंचने की अनुमति देता है
  • Semaphoreये मशीन-स्वतंत्र हैं।
  • Semaphoreइन्हें माइक्रोकर्नेल के मशीन-स्वतंत्र कोड में क्रियान्वित किया जाता है।
  • वे एकाधिक प्रक्रियाओं को महत्वपूर्ण खंड में प्रवेश करने की अनुमति नहीं देते हैं।
  • चूंकि सेमाफोर में प्रतीक्षा व्यस्त रहती है, इसलिए प्रक्रिया समय और संसाधनों की कभी भी बर्बादी नहीं होती।
  • वे मशीन-स्वतंत्र हैं, जिन्हें माइक्रोकर्नेल के मशीन-स्वतंत्र कोड में चलाया जाना चाहिए।
  • वे संसाधनों के लचीले प्रबंधन की अनुमति देते हैं।

सेमाफोर का नुकसान

यहाँ, सेमाफोर के नुकसान/खामियाँ दी गई हैं

  • सेमाफोर की सबसे बड़ी सीमाओं में से एक है प्राथमिकता व्युत्क्रमण।
  • ऑपरेटिंग सिस्टम को wait और signal semaphore के सभी कॉल्स पर नज़र रखनी होती है।
  • इनका प्रयोग कभी भी जबरन नहीं किया जाता, बल्कि यह केवल परंपरा के अनुसार ही होता है।
  • सेमाफोर में गतिरोध से बचने के लिए, प्रतीक्षा और Signal कार्यों को सही क्रम में निष्पादित करने की आवश्यकता है।
  • Semaphore प्रोग्रामिंग जटिल है, इसलिए पारस्परिक बहिष्कार प्राप्त न होने की संभावना है।
  • यह बड़े पैमाने पर उपयोग के लिए भी व्यावहारिक विधि नहीं है क्योंकि इसके उपयोग से मॉड्यूलरिटी की हानि होती है।
  • Semaphore प्रोग्रामर त्रुटि की संभावना अधिक होती है।
  • इसका कारण हो सकता है गतिरोध या प्रोग्रामर की त्रुटि के कारण पारस्परिक बहिष्कार का उल्लंघन।

सारांश

  • Semaphore को एक ऐसे चर के रूप में परिभाषित किया गया है जो गैर-नकारात्मक है और थ्रेड्स के बीच साझा किया जाता है।
  • यह एक ऐसा तंत्र है जिसका उपयोग कार्यों का समन्वयन प्रदान करने के लिए किया जा सकता है।
  • गणना सेमाफोर एक गिनती का उपयोग करता है जो कार्य को कई बार प्राप्त या जारी करने में मदद करता है।
  • बाइनरी सेमाफोर गिनती सेमाफोर के काफी समान होते हैं, लेकिन उनका मान 0 और 1 तक सीमित होता है।
  • प्रतीक्षा ऑपरेशन आपको महत्वपूर्ण अनुभाग में किसी कार्य के प्रवेश को नियंत्रित करने में मदद करता है
  • Signal सेमाफोर ऑपरेशन का उपयोग किसी महत्वपूर्ण अनुभाग से किसी कार्य के निकास को नियंत्रित करने के लिए किया जाता है
  • गिनती Semaphore बाइनरी में कोई पारस्परिक बहिष्कार नहीं है जबकि Semaphore पारस्परिक बहिष्कार है
  • Semaphore म्यूटेक्स एक सिग्नलिंग तंत्र है जबकि म्यूटेक्स एक लॉकिंग तंत्र है
  • Semaphore एक से अधिक थ्रेड को महत्वपूर्ण अनुभाग तक पहुंचने की अनुमति देता है
  • सेमाफोर की सबसे बड़ी सीमाओं में से एक है प्राथमिकता व्युत्क्रमण।