Introduction (परिचय)
जब multiple processes एक ही shared resource को access करते हैं, तो race condition की problem होती है।
इस problem को solve करने के लिए हमें ऐसा mechanism चाहिए जो processes को control करे कि:
- कौन अंदर जाएगा
- कौन wait करेगा
इसी control mechanism को Semaphore कहते हैं।
Semaphore क्या होता है
Semaphore एक synchronization tool है, जो processes के execution को control करता है और shared resources को safely use करने में मदद करता है।
Simple Definition
Semaphore = एक integer variable जो process coordination के लिए use होता है
Semaphore का Basic Idea
Semaphore एक counter की तरह काम करता है:
- अगर value positive है → process enter कर सकता है
- अगर value zero या negative है → process wait करेगा
Semaphore Operations (बहुत important)
Semaphore दो basic operations पर काम करता है:
1. wait() (P operation)
- Process critical section में जाने की कोशिश करता है
- अगर resource available है → enter करेगा
- नहीं है → wait करेगा
Conceptually:
- semaphore value कम होती है
2. signal() (V operation)
- Process critical section छोड़ता है
- दूसरे process को मौका मिलता है
Conceptually:
- semaphore value बढ़ती है
Working (Step-by-Step)
मान लो semaphore = 1
Step 1:
P1 आता है → wait()
value = 1 → 0
P1 critical section में जाता है
Step 2:
P2 आता है → wait()
value = 0 → -1
P2 wait करता है
Step 3:
P1 finish → signal()
value = -1 → 0
अब P2 को मौका मिलता है
Types of Semaphores
1. Binary Semaphore
- Value केवल 0 या 1
- Lock की तरह काम करता है
Use:
Mutual Exclusion
2. Counting Semaphore
- Value 0,1,2,3… हो सकती है
- Multiple resources को manage करता है
Use:
Resource counting
Example (Critical Section Control)
मान लो:
semaphore = 1
Process P1:
wait()
critical section
signal()
Process P2:
wait()
critical section
signal()
यहाँ:
- एक समय में केवल एक process critical section में जाएगा
- race condition avoid होगी
Real Life Example
मान लो एक parking space है:
- केवल 1 car अंदर जा सकती है
- semaphore = 1
Car 1 → अंदर जाती है → value = 0
Car 2 → wait करेगी
जब car 1 बाहर आएगी → signal → car 2 अंदर जाएगी
Advantages
- Mutual Exclusion ensure करता है
- Processes के बीच synchronization करता है
- Resource management efficient बनाता है
Disadvantages
- Implementation complex हो सकता है
- Deadlock का risk होता है
- Starvation हो सकता है
Exam Focus Points
- wait() और signal() operations
- Binary और Counting Semaphore
- Critical Section Problem का solution
Conclusion
Semaphore एक powerful synchronization mechanism है, जो Operating System में processes के बीच coordination और safe resource sharing सुनिश्चित करता है।
यह race condition और critical section problem को solve करने में मदद करता है।