Semaphores जो है वह variables होते है. semaphores का प्रयोग threads या processes को किसी एक resource को एक्सेस करने से रोकने के लिए किया जाता है । दुसरें शब्दों में कहें तो, “इसका प्रयोग critical section की परेशानी को solve करने तथा process synchronization को solve करने के लिए किया जाता है ।”
multi-programming में, यदि बहुत सारी processes एक common resource का प्रयोग कर रही है तो उन्हें इस प्रकार उस रिसोर्स को एक्सेस करने की जरुरत होती है जिससे कि वे processes एक दूसरे को disturb या interfere ना करें । तो इस disturbance और interfere को रोकने के लिए semaphore का प्रयोग किया जाता है ।
semaphore का प्रयोग ज्यादातर दो उद्देश्यों के लिए किया जाता है ।
पहला, एक ही मैमोरी स्पेस को Share करने के लिए । तथा दूसरा, फाइलों के एक्सेस को share करने के लिए ।
Semaphore के कांसेप्ट को Edsgar Diskrstra ने प्रस्तावित किया था ।
Semaphores दो प्रकार के होते है
- Binary semaphores
- Counting Semaphores
Binary semaphore केवल 0 & 1 वैल्यू ले सकती है । तथा Counting semaphore जो है वह non negative integer वैल्यू ले सकती है. Semaphores में दो operations डिफाइन होते है:- wait तथा signal.
Critical Section में Entry को Wait ऑपरेशन द्वारा नियंत्रित किया जाता है तथा critical section से exit को signal ऑपरेशन द्वारा हैंडल किया जाता है । wait तथा signal ऑपरेशनों को P तथा V ऑपरेशन भी कहते है ।
Semaphores (S) की कार्यविधि निम्नलिखित प्रकार होती है:-
- Wait कमांड P(S) जो है वह semaphore की वैल्यू को 1 से घटा देती है. यदि फिर उसकी वैल्यू नकारात्मक आती है तो P ऑपरेशन को तब तक wait करना पड़ता है जब तक कि कंडीशन satisfy नहीं हो जाती है.
2. V(S) कमांड जो है वह semaphore की वैल्यू में 1 जोड़ देती है. semaphores में mutual exclusion जो है वह वह P(S) तथा V(S) के अन्दर ही लागू होता है. यदि बहुत सारें प्रोसेस एक साथ P(S) को एक्सेस करने की कोशिश करेंगे तो केवल एक प्रोसेस को ही allow किया जायेगा जबकि अन्य processes को wait करना पड़ेगा ।
इस Operations को नीचे डिफाइन किया गया है:-
P(S) or wait(S): If S > 0 then Set S to S-1 Else Block the calling process (i.e. Wait on S) V(S) or signal(S): If any processes are waiting on S Start one of these processes Else Set S to S+1
तो हम कह सकते है कि semaphore एक तकनीक है जो कि processes के मध्य mutual exclusion को सुनिश्चित करती है । C प्रोग्रामिंग लैंग्वेज में interfaces या functions का समूह होता है जो कि semaphores को मैनेज करता है ।