Chapter 2 (Hindi)
4. IPC
Inter Process Communication (IPC)
Inter-Process Communication (IPC)
Inter-Process Communication (IPC) एक mechanism है जो processes को आपस में communicate करने और data share करने की सुविधा देता है जब वे run हो रहे होते हैं।
- हर process का अपना अलग memory space होता है
- इसलिए IPC controlled तरीके से information exchange करने में मदद करता है
- यह processes को efficiently और safely साथ में काम करने में मदद करता है
IPC का उपयोग
- Processes को synchronize करने में मदद करता है
- Information share करने में सहायता करता है
- Shared resources access करते समय conflicts को avoid करता है
IPC के Methods
IPC के मुख्यतः दो methods होते हैं:
1. Shared Memory
2. Message Passing
Operating System दोनों methods को implement कर सकता है।
Example of IPC
एक simple example है Bank ATM system:
- एक process card और PIN read करता है
- दूसरा process account balance check करता है
- तीसरा process cash dispense करता है
👉 ये सभी processes आपस में communicate करके transaction को सही तरीके से complete करते हैं
Shared Memory
Shared Memory में processes एक common memory area share करते हैं।
- Processes एक ही memory location से data read और write करते हैं
- Communication fast होता है क्योंकि direct memory access होता है
- लेकिन synchronization programmer पर depend करता है
Shared Memory के उपयोग
- एक process दूसरे process से data extract कर सकता है
- एक process दूसरे process को information भेज सकता है

Shared Memory (Detail)
ऊपर दिए गए shared memory model में एक common memory space kernel द्वारा allocate किया जाता है।
- Process A shared memory region में data write करता है (Step 1)
- Process B उसी shared memory से data read करता है (Step 2)
👉 क्योंकि दोनों processes same memory segment को access करते हैं:
- यह method बहुत fast होता है
- लेकिन synchronization की जरूरत होती है (जैसे semaphores) ताकि conflict न हो
Example
जैसे multiple लोग एक ही Google Doc को एक साथ edit करते हैं, वैसे ही processes shared memory का उपयोग करते हैं।
Message Passing
Message Passing एक ऐसा method है जिसमें processes आपस में messages भेजकर और receive करके communicate करते हैं।
- एक process message send करता है
- दूसरा process उसे receive करता है
- इस तरह data exchange होता है
Message Passing के Methods
- Sockets
- Message Queues
- Pipes
Message Passing की विशेषताएँ
- Direct memory share नहीं होती
- Communication controlled और safe होता है
- Synchronization की जरूरत कम होती है (shared memory के मुकाबले)
- थोड़ा slow हो सकता है क्योंकि message transfer होता है

Message Passing (Detail)
ऊपर दिए गए message passing model में processes kernel के माध्यम से messages भेजकर communicate करते हैं।
- Process A kernel को message send करता है (Step 1)
- Kernel उस message को Process B तक deliver करता है (Step 2)
👉 यहाँ processes direct memory share नहीं करते, बल्कि communication system calls जैसे send() और recv() के माध्यम से होता है।
Features
- यह method simple और safe होता है
- Shared data overwrite होने का risk नहीं होता
- लेकिन kernel involvement के कारण थोड़ा overhead बढ़ जाता है
Example
जैसे group chat में message पहले server पर जाता है, फिर सभी users को दिखता है, वैसे ही processes kernel के through message exchange करते हैं।
Problems in Inter-Process Communication (IPC)
जब multiple processes resources share करते हैं, तो कुछ problems हो सकती हैं:
- Race Condition → data inconsistency
- Deadlock → processes indefinitely wait करते हैं
- Starvation → कुछ processes को CPU नहीं मिलता
- Overhead → communication cost बढ़ता है
- Security Issues → unauthorized access का risk
- Scalability Issues → processes बढ़ने पर management कठिन
Classical IPC Problems
1. Dining Philosophers Problem
👉 यह problem deadlock और starvation को explain करता है
- 5 philosophers table पर बैठे होते हैं
- हर philosopher को खाने के लिए 2 forks चाहिए
- अगर सभी एक-एक fork उठा लें → कोई भी नहीं खा पाएगा → deadlock
Solution
- Semaphores या monitors का उपयोग
- एक समय में limited philosophers को खाने देना
- Fork उठाने का proper order define करना
2. Producer–Consumer Problem
👉 यह problem synchronization और buffer management से related है
- Producer data बनाता है
- Consumer data use करता है
- Problem:
- Buffer full होने पर producer wait करे
- Buffer empty होने पर consumer wait करे
Solution
- Mutex for mutual exclusion
- Counting semaphores for buffer slots
- Proper synchronization maintain करना
3. Readers–Writers Problem
👉 यह problem shared data access को control करता है
- Multiple readers एक साथ read कर सकते हैं
- लेकिन writer को exclusive access चाहिए
Solution
- Reader-Writer locks या semaphores
- Multiple readers allowed
- Writer को exclusive access
- Priority rules से starvation avoid करना
4. Sleeping Barber Problem
👉 यह problem process coordination को समझाता है
- Barber सोता है जब कोई customer नहीं होता
- Customer आने पर barber को जगाया जाता है
- Limited chairs होते हैं
Solution
- Semaphores का उपयोग
- Barber idle होने पर sleep करता है
- Customers wait करते हैं (अगर chair available हो)
- System deadlock-free रहता है