Fri. Mar 29th, 2024
semaphore in hindi in operating system

विषय-सूचि

सेमाफोर का परिचय (semaphore in os in hindi)

ऑपरेटिंग सिस्टम के सेमाफोर को आप सिंपल तौर पर एक वेरिएबल के रूप में समझ सकते हैं। इस वेरिएबल का प्रयोग क्रिटिकल सेक्शन प्रॉब्लम को हल करने के लिए किया जाता है।

इसका प्रयोग मल्टी-प्रोसेसिंग वातावरण में प्रोसेस सिंक्रोनाइजेशन को प्राप्त करने के लिए भी किया जाता है। दो सबसे सामान्य सेमाफोर हैं- काउंटिंग सेमाफोर और बाइनरी सेमाफोर।

काउंटिंग सेमाफोर नॉन-नेगेटिव इन्टिजर वैल्यू ले सकते हैं वही बाइनरी सेमाफोर केवल 0 और 1 ही लेते हैं।

अब आइये देखते हैं कि इसे कैसे किया जाता है।

पहले इन दो ऑपरेशन को देखिये जिन्हें सेमाफोर वेरिएबल को एक्सेस करने और उनकी वैल्यू को बदलने के लिए प्रयोग किया जाता है:

P-and-V-operation-in-OS

P और V ऑपरेशन

  1. P ऑपरेशन को वेट, स्लीप या डाउन ऑपरेशन भी कहा जाता है और Vव् ऑपरेशन को सिग्नल, वेक-अप या अप ऑपरेशन के नाम से भी जाना जाता है।
  2. ये दोनों ही ऑपरेशन एटॉमिक होते हैं और semaphore को हमेशा 1 ही इनिशियलाइज़ किया जाता है।
  3. प्रोसेस सिंक्रोनाइजेशन को इमप्लेमेंट करने के लिए क्रिटिकल सेक्शन को दोनों ऑपरेशन द्वारा घेर लिया जाता है। नीचे इस चित्र को देखें जहां प्रोसेस Pp का क्रिटिकल सेक्शन P और V ऑपरेशन के बीच में है।

सेमाफोर की प्रक्रिया (process of semaphore in operating system in hindi)

आइये अब देखते हैं कि ये कैसे म्यूच्यूअल एक्सक्लूशन को इमप्लेमेंट करता है। मान लीजिये दो प्रोसेस हैं P1 और P2 और एक semaphore s को 1 इनिशियलाइज़ किया जाता है।

अब अगर P1 अपने क्रिरिकल सेक्शन में एंट्री लेता है तो semaphore का मान 0 हो जाएगा। इसके बाद अगर P2 क्रिटिकल सेक्शन में जाना चाहता है तो उसे s > 0 होने का इन्तजार करना पड़ेगा।

इस तरह से म्यूच्यूअल एक्सक्लूशन को प्राप्त किया जाता है। अधिक जानकारी के लिए आप नीचे वाले चित्र को देख सकते हैं:

उपर दिखाया गया है कि एक बाइनरी semaphore है जो सिर्फ 0 और 1 यही दोनों मान लेता है। एक दूसरे प्रकार का semaphore भी है जिसे काउंटिंग semaphore कहते  हैं और वो 1 से ज्यादा मान भी ले सकता है।

अब मान लीजिये कि एक ऐसा रिसोर्स है जिसके इंस्टैंस की संख्या है 4. अब हम S=4 इनिशियलाइज़ करेंगे और बांकी बाइनरी semaphore के लिए समान रहेगा।जब भी प्रोसेस उस रिसोर्स को चाहेगा तब वो P या वेट फंक्शन को कॉल करेगा और जब इसका काम हो जाएगा तब ये V या सिग्नल फंक्शन को कॉल करेगा। अगर S का वैल्यू 0 हो जाये तो किसी प्रोसेस को तब तक इन्तजार करना पड़ेगा जबतक Sस पॉजिटिव न हो जाये।

उदाहरण के तौर पर मान लीजिये यहाँ पर 4 प्रोसेस P1, P2, P3, P4 है और वो सभी S पर वेट ऑपरेशन को कॉल करते हैं (4 के साथ इनिशियलाइज़ किया हुआ)। अब अगर कोई अन्य प्रोसेस P5 रिसोर्सेज चाहता है तो उसे तब तक इन्तजार करने पड़ेगा जबतक वो चारों प्रोसेस में से कोई एक सिग्नल फंक्शन को कॉल न करे और semaphore का मान पॉजिटिव न हो जाये।

जब भी कोई प्रोसेस इन्तजार करता है तब ये लगातार semaphore का मान चेक करता है (इस लाइन को देखिये जब (s==0); P ऑपरेशन में) और CPU साइकिल की बर्बादी करता है।  इसके इम्प्लीमेंटेशन को नीचे दिया गया है:

P(Semaphore s)
{
    s = s - 1;
    if (s < 0) {
        // प्रोसेस को क्यू में ऐड करें
        block();
    }
}
V(Semaphore s)
{
    s = s + 1;
    if (s >= 0) {
        // प्रोसेस p को क्यू से हटायें
        wakeup(p);
    }
}

इस इम्प्लीमेंटेशन में जब भी प्रोसेस इन्तजार करेगा तो उसे प्रोसेस के वेटिंग क्यू में डाल दिया जाएगा जो उस semaphore से जुड़ा हुआ हो।

इसे उस प्रोसेस में सिस्टम कॉल ब्लाक के द्वारा किया जाता है। जब कोई प्रोसेस पूरा हो जाता है तब ये सिग्नल फंक्शन को बुलाता है और क्यू में एक प्रोसेस रिज्यूम हो जाता है। फिर ये वेक अप स्यतेम कॉल का प्रयोग करता है।

इस लेख से सम्बंधित यदि आपका कोई भी सवाल या सुझाव है, तो आप उसे नीचे कमेंट में लिख सकते हैं।

By अनुपम कुमार सिंह

बीआईटी मेसरा, रांची से कंप्यूटर साइंस और टेक्लॉनजी में स्नातक। गाँधी कि कर्मभूमि चम्पारण से हूँ। समसामयिकी पर कड़ी नजर और इतिहास से ख़ास लगाव। भारत के राजनितिक, सांस्कृतिक और भौगोलिक इतिहास में दिलचस्पी ।

Leave a Reply

Your email address will not be published. Required fields are marked *