TheHingineer

  • Operating System


  • OS Part-1

  • OS Part-2

  • OS Part-3

  • OS Part-4

  • OS Part-5

  • Precedence Graphs in Operating System 

    Precedence Graph Kya Hota Hai?

    🔹 Precedence Graph (jise Serializability Graph ya Conflict Graph bhi kehte hain) ek directed graph hota hai jo alag-alag transactions ya processes ke beech ke dependencies ko represent karta hai.

    🔹 Ye graph multi-process execution aur database transactions mein kaafi useful hota hai, kyunki ye help karta hai:
    ✅ Serializability check karne mein (matlab transactions safely execute ho sakti hain ya nahi).
    ✅ Deadlocks detect karne mein (jab ek process dusre pe dependent ho).
    ✅ Conflicts identify karne mein (jab do transactions ek hi resource ko access ya modify kar rahi ho).

    Graph ke Elements:

    • Nodes (Vertices) → Alag-alag transactions ya processes ko represent karte hain.

    • Edges (Arrows) → Dependencies dikhate hain (matlab ek transaction/process ko dusre se pehle execute hona zaroori hai).


    Precedence Graph Kyun Zaroori Hai?

    🔹 Problem: Jab multiple transactions/processes ek saath execute hoti hain, to conflicts ho sakte hain (jaise ek transaction kisi data ko modify kar rahi ho aur dusri transaction bhi wahi data access kare).
    🔹 Solution: Precedence Graph se hum check kar sakte hain ki transactions safely execute ho sakti hain ya nahi.


    Example 1: Precedence Graph in Database Transactions

    Maan lo do transactions hain:

    • T1: Read (X), phir Write (X)

    • T2: Read (X), phir Write (X)

    Step Transaction T1 Transaction T2
    1 Read (X)  
    2   Read (X)
    3 Write (X)  
    4   Write (X)

    💡 Conflict: Dono transactions X ko access aur modify kar rahi hain, to check karna hoga ki kya ye serializable hain ya nahi.

    Precedence Graph Banane ke Steps:

    1️⃣ Nodes banayein: T1 aur T2 ke liye alag-alag nodes.
    2️⃣ Edges draw karein jo conflicts represent karein:

    • Read(X) → Write(X)

    • Write(X) → Read(X)

    • Write(X) → Write(X)

    Graph Representation:

    T1 → T2 (Cycle Detected ❌Not Serializable)

    🚨 Agar graph mein cycle detect hoti hai, to transactions serializable nahi hain!


    Example 2: Precedence Graph in Process Scheduling

    Maan lo teen processes hain: P1, P2, aur P3 jo resources R1 aur R2 use kar rahi hain.

    Process Konsa Resource Chahiye Kaunsa Resource Hold Kiya Hai
    P1 R1 R2
    P2 R2 R3
    P3 R3 R1

    Precedence Graph Banane ke Steps:

    1️⃣ Nodes banayein: P1, P2, P3 ke liye alag-alag nodes.
    2️⃣ Edges draw karein jo dependency represent karein:

    Graph Representation:

    P1 → P2 → P3 → P1 (Cycle Detected ❌ → Deadlock Exists)

    🚨 Agar cycle detect hoti hai, to deadlock exist karta hai!


    Conclusion 

    ✅ Precedence Graph ka use serializability check karne aur deadlock detect karne ke liye hota hai.
    ✅ Agar cycle detect hoti hai, to ya to transactions serializable nahi hain ya deadlock ho sakta hai.
    ✅ Agar cycle nahi hoti, to transactions/processes safely execute ho sakti hain.

    📌 Ye technique database transactions, parallel processing aur resource management ke liye kaafi useful hai! 🚀

    Scroll to Top