Categories

Advertisement
⏱️ 6 min read

IPC क्या है? Inter Process Communication पूरी जानकारी हिंदी में

N
By NotesMind
Advertisement

IPC (Inter Process Communication) क्या है? — पूरी जानकारी हिंदी में

Inter Process Communication (IPC) वह mechanism है जिसके ज़रिए दो या दो से अधिक processes आपस में data share करती हैं और information exchange करती हैं।

आसान शब्दों में — जब दो अलग-अलग programs एक-दूसरे से बात करना चाहते हैं, तो वो IPC use करते हैं।

IPC is a mechanism that allows processes to communicate and synchronize with each other.

Modern operating systems में Process Synchronization और coordination के बिना कोई भी complex application ठीक से काम नहीं कर सकती — इसीलिए IPC इतना ज़रूरी है।


IPC की ज़रूरत क्यों पड़ती है?

अगर processes आपस में communicate न करें, तो:

  • Data share नहीं हो पाएगा
  • Resource sharing possible नहीं होगा
  • Coordination नहीं होगा
  • Multitasking ठीक से काम नहीं करेगा

Real Life Example — Chef और Waiter

एक Chef खाना बना रहा है, Waiter उसे customer तक पहुँचाता है। अगर दोनों के बीच communication नहीं होगा — खाना कभी customer तक नहीं पहुँचेगा। Processes का भी यही हाल है।

IPC के मुख्य उद्देश्य:

उद्देश्य क्यों ज़रूरी है
Data Sharing Processes के बीच data transfer
Resource Sharing एक resource को multiple processes use करें
Synchronization एक साथ access से data corrupt न हो
Process Coordination सही order में काम हो
Performance Improvement Parallel execution possible हो

IPC के दो मुख्य Methods

            IPC
     ┌───────────────┐
     ▼               ▼
Shared Memory   Message Passing

1. Shared Memory

Shared Memory में दो या अधिक processes एक ही memory area को directly share करती हैं। यह सबसे fast IPC method है।

        Shared Memory Area
    +-------------------------+
    |                         |
Process-1              Process-2
    |                         |
    +-------------------------+

सभी processes उस एक memory को पढ़ और लिख सकती हैं — kernel को बार-बार involve नहीं करना पड़ता, इसीलिए यह fast है।

फायदे ✅ नुकसान ❌
Fast communication Synchronization ज़रूरी है
Low overhead Race condition की संभावना
Large data transfer easy Complex implementation

2. Message Passing

इसमें processes directly memory share नहीं करतीं — वे OS के through messages भेजकर communicate करती हैं।

Process-1
    │
  Send Message
    │
    ▼
Operating System
    │
  Receive Message
    │
    ▼
Process-2
फायदे ✅ नुकसान ❌
Secure Shared Memory से slow
Simple to implement Kernel overhead होता है
Distributed systems में useful Small data के लिए better

Shared Memory vs Message Passing

Feature Shared Memory Message Passing
Speed Fast Slow
Memory Share होती है Share नहीं होती
Synchronization ज़रूरी कम ज़रूरी
Data Size Large data Small data
Complexity Complex Easy

Process Synchronization क्या है?

Process Synchronization वह technique है जिससे multiple processes को इस तरह control किया जाता है कि वे shared resources का सही और safe तरीके से उपयोग करें।

अगर दो processes एक ही समय में एक ही data modify करें — result गलत आ सकता है। यही problem synchronization solve करती है।


Race Condition — जब Processes आपस में "Race" करें

जब दो या अधिक processes एक ही shared resource को simultaneously access करती हैं और final result उनके execution order पर depend करता है — इसे Race Condition कहते हैं।

Bank Balance Example:

Balance = ₹1000

P1: ₹500 निकालो  ─┐
                   ├─ एक साथ
P2: ₹500 निकालो  ─┘

Synchronization नहीं → Incorrect Balance ❌
Synchronization है   → Correct Balance ₹0 ✅

यह exactly वही situation है जो online banking में हो सकती है अगर synchronization न हो।


Critical Section — Shared Data का Danger Zone

Program का वह हिस्सा जहाँ shared data access किया जाता है, Critical Section कहलाता है। एक समय में केवल एक process critical section में enter कर सकती है।

 

 

Entry Section      ← Permission लेना
      ↓
Critical Section   ← Shared data access
      ↓
Exit Section       ← Permission छोड़ना
      ↓
Remaining Section  ← बाकी काम

Critical Section के लिए 3 ज़रूरी Conditions:

Condition मतलब
Mutual Exclusion एक समय में सिर्फ एक process अंदर
Progress कोई process बाहर है तो waiting process को chance मिले
Bounded Waiting कोई process infinite wait में न फँसे

Mutex — Simple Lock Mechanism

Mutex (Mutual Exclusion) एक lock mechanism है जो एक समय में केवल एक process को shared resource use करने देता है।

Lock Free
   ↓
P1 Lock लेता है
   ↓
Critical Section Execute
   ↓
P1 Unlock करता है
   ↓
P2 Lock लेता है
फायदे ✅ नुकसान ❌
Simple और efficient Busy waiting हो सकता है
Easy to implement Deadlock possible है

Semaphore — Dijkstra का Solution

Semaphore एक synchronization tool है जो multiple processes को shared resources safely use करने में help करता है। इसका आविष्कार Edsger Dijkstra ने किया था।

दो main operations:

  • Wait (P): Resource acquire करना — अगर available नहीं तो wait करो
  • Signal (V): Resource release करना — waiting process को बताओ

Types of Semaphore:

Binary Semaphore — सिर्फ दो values: 0 या 1। Mutex की तरह काम करता है — single resource के लिए।

Counting Semaphore — कोई भी positive integer value। Multiple resources manage करने के लिए।

Example: 5 Printers available Semaphore = 5 P1 uses → Semaphore = 4 P2 uses → Semaphore = 3 ... P5 uses → Semaphore = 0 P6 waits → Resource free होने तक

Feature Binary Semaphore Counting Semaphore
Values 0 या 1 Any positive integer
Use case Single resource Multiple resources
Behaviour Mutex जैसा Resource counter

Monitor — High-Level Synchronization

Monitor एक high-level synchronization mechanism है जो shared data और उस पर होने वाले operations को एक single unit में wrap करता है।

Monitor में एक समय में केवल एक process enter कर सकती है — locking automatic होती है, programmer को manually manage नहीं करना पड़ता।

फायदे
Automatic locking
Deadlock की संभावना कम
Programming आसान

Mutex और Semaphore में programmer को manually lock/unlock करना पड़ता है — Monitor में यह automatically होता है। यही इसका सबसे बड़ा advantage है।


Classic Synchronization Problems

Producer-Consumer Problem

यह OS का सबसे famous synchronization problem है।

  • Producer: Data produce करता है
  • Consumer: Data consume करता है
  • Buffer: दोनों के बीच temporary storage

 

 

Producer → [Buffer] → Consumer

Rules:

  • Buffer full है → Producer wait करेगा
  • Buffer empty है → Consumer wait करेगा

दोनों को synchronize करना ज़रूरी है — वरना data lost होगा या garbage read होगा।


Readers-Writers Problem

दो types की processes हैं — Readers (सिर्फ पढ़ते हैं) और Writers (modify करते हैं)।

Rule क्यों?
Multiple readers एक साथ read कर सकते हैं Read करने से data change नहीं होता
Writer अकेला write करेगा एक साथ write हुआ तो data corrupt होगा

Dining Philosophers Problem

यह deadlock का classic example है।

         P1
    F5        F2
P5                P2
    F4        F3
         P4
              F4
         P3
  • 5 Philosophers गोल table पर बैठे हैं
  • 5 Forks हैं — एक-एक philosopher के बीच
  • खाने के लिए दोनों तरफ के forks चाहिए

अगर सभी एक साथ अपनी left fork उठा लें — सब wait करते रहेंगे, कोई खाना नहीं खाएगा। यही Deadlock है।

यह problem synchronization design करते समय आने वाली real challenges को represent करता है — resource allocation, waiting, और deadlock avoidance।


FAQ — IPC के बारे में Common Questions

Q1. Shared Memory और Message Passing में कौन सा better है?

यह situation पर depend करता है। अगर large data fast transfer करना हो — Shared Memory better है। अगर processes अलग-अलग machines पर हों या security important हो — Message Passing better है। Modern OS दोनों support करते हैं और application की ज़रूरत के हिसाब से choose किया जाता है।

Q2. Mutex और Semaphore में क्या फर्क है?

Mutex strictly एक process/thread को एक समय में resource देता है — यह ownership-based है। Semaphore ज़्यादा flexible है — counting semaphore से multiple resources manage होते हैं। Mutex को वही unlock कर सकता है जिसने lock किया, Semaphore को कोई भी signal कर सकता है।

Q3. Race Condition को कैसे रोकें?

Race Condition को रोकने के तीन main तरीके हैं — Mutex (single resource lock), Semaphore (multiple resource management), और Monitor (automatic synchronization)। इन सभी का goal एक ही है: critical section में एक समय में सिर्फ एक process को allow करना।


 

Advertisement

💬 Leave a Comment & Rating