5.5.14 · HinglishEmbedded Systems & Real-Time Software

Priority inversion — problem and solutions (priority inheritance, priority ceiling)

2,521 words11 min readRead in English

5.5.14 · Coding › Embedded Systems & Real-Time Software


WHAT is priority inversion?

Do flavours hain:

WHY does it happen? (first principles)

Teeno ingredients ka ek saath present hona zaroori hai:

  1. Preemptive priority scheduling — highest ready task hamesha chalti hai.
  2. Ek shared resource jo mutual exclusion (mutex) se guard ho — ek waqt mein sirf ek task andar.
  3. Kam se kam teen priority levels — High (H), Medium (M), Low (L).

Trap yeh hai: priority decide karti hai CPU kise milega, lekin mutex decide karta hai critical section mein kaun jaaye. Yeh dono rules aapas mein disagree karte hain. Mutual exclusion temporarily priority ko override kar deta hai — aur ek third task us gap ka faayda utha sakti hai.


The classic failure timeline

Figure — Priority inversion — problem and solutions (priority inheritance, priority ceiling)

Timeline ke through chalo (T = Low, M = Medium, H = High; H aur L share karte hain mutex R):

  1. t0: L chalta hai, R lock karta hai.
  2. t1: H ready ho jaata hai, L ko preempt karta hai. H R ko lock karne ki koshish karta hai → blocks (L pakde hua hai).
  3. t2: L resume karta hai (wahi R release kar sakta hai)... lekin
  4. t3: M ready ho jaati hai. M ko R ki zaroorat nahi. M ki priority L se zyada hai → M, L ko preempt kar deta hai.
  5. M lambe, unbounded time ke liye chalta hai. L R release nahi kar sakta. H blocked rehta hai.

H — sabse critical task — M ka intezaar karta hai, jo isse bilkul related nahi. Yahi unbounded priority inversion hai.


Solution 1 — Priority Inheritance Protocol (PIP)

WHY this works

L ko H ki priority tak boost karna matlab M (medium) ab L ko preempt nahi kar sakta jab L critical section mein hai. To L apna critical section jaldi khatam karta hai, R release karta hai, aur H chalta hai. Unbounded wala part — M ka intezaar — khatam ho jaata hai. Bacha hua intezaar sirf Low ka critical section length hai = bounded inversion (acceptable).


Solution 2 — Priority Ceiling Protocol (PCP)

WHY the ceiling rule is powerful

Ceiling ek gate-keeper ki tarah kaam karta hai entry se pehle hi. Kyunki aap ek critical section mein tab tak nahi ja sakte jab isse blocking ki chain ho sakti ho, PCP guarantee karta hai:

  • No deadlock (proven — ceilings se imposed ordering acyclic hai).
  • No chained blocking: ek task zyada se zyada ek baar block ho sakti hai, ek single critical section ki duration ke liye, per activation.

Comparing the three

Property No protocol Priority Inheritance (PIP) Priority Ceiling (PCP/ICPP)
Unbounded inversion? Haan (bug) Nahi Nahi
Deadlock possible? Haan Haan Nahi
Chained blocking? Haan Nahi
Blocked at most... unbounded ek baar per lower task ek baar total
Needs static analysis? Nahi Nahi Haan (ceilings)
Runtime cost low medium low (ICPP)

Worked example A — PIP saves the day

Worked example B — why PCP blocks "at most once"


Active recall

Recall Click karke khud test karo
  1. Priority inversion ke liye teeno conditions batao.
  2. Inversion ko unbounded kya banata hai bounded ki jagah?
  3. PIP medium task ko interfere karne se kaise rokta hai?
  4. Ek cheez jo PIP solve nahi karta lekin PCP karta hai?
  5. Kisi resource ka ceiling kya hota hai?
  6. ICPP ko "immediate" kyun kehte hain?

Answers: (1) preemptive priority scheduling, ek shared mutex, ≥3 priority levels. (2) ek medium task jo lock ki zaroorat nahi rakhti lock-holder ko preempt kar leti hai. (3) woh holder ko blocked task ki priority tak boost karta hai taaki medium use preempt na kar sake. (4) deadlock + chained blocking. (5) us highest task ki priority jo kabhi bhi use lock kare. (6) lock-holder turant ceiling tak raise ho jaata hai jis pal lock leta hai, na ki sirf jab kisi ko block kare.

Recall Feynman: 12 saal ke bachche ko samjhao

Socho ek akela bathroom hai (lock). Ek slow bachcha (Low) andar jaata hai. Principal (High) ko urgently chahiye aur woh darwaze pe wait karta hai — theek hai, yeh fair hai, slow bachche ka intezaar karo. Lekin phir ek baatuni teacher (Medium) jo bathroom ki zaroorat hi nahi rakhti slow bachche ko bahar khींch ke baat karne lagti hai! Ab slow bachcha bahar nahi aa sakta, aur principal hamesha ke liye wait mein phans jaata hai. Fix yeh hai: jab slow bachcha bathroom mein ho aur principal wait kar raha ho, slow bachche ko "principal badge" de do taaki baatuni teacher usse interrupt na kar sake — woh jaldi bahar aata hai, aur principal andar jaata hai. Fancy fix (ceiling) bathroom ke darwaze pe ek guard rakhta hai jo tumhe andar tabhi jaane deta hai jab koi aur important bhi use nahi chahega — to jam kabhi hota hi nahi.


Connections

#flashcards/coding

Priority inversion kya hai?
Ek high-priority task ek lower-priority task ke shared mutex release karne ka intezaar karte hue block rehti hai; low task effectively high priority ki tarah act karti hai.
Priority inversion ke liye teeno zaruri conditions
Preemptive priority scheduling, mutual exclusion (mutex) se ek shared resource, aur kam se kam teen priority levels.
Bounded vs unbounded priority inversion
Bounded = high sirf low ke critical section ka intezaar karta hai. Unbounded = ek medium task lock-holding low task ko preempt kar leti hai, high ko unlimited amount se delay kar deti hai.
Priority Inheritance Protocol (PIP) ka core idea
Jab ek low task ek mutex pakde hoti hai jis par ek high task block hai, low task ki priority temporarily high task ki priority tak raise ho jaati hai, phir release par restore ho jaati hai.
PIP unbounded inversion ko kyun rokta hai?
Lock-holder ko medium priority se upar boost karna medium ko preempt karne se rokta hai, to critical section jaldi complete hoti hai — wait bounded ban jaata hai.
Do problems jo PIP solve nahi karta
Deadlock aur chained (transitive) blocking through nested mutexes.
Resource ke priority ceiling ki definition
Us highest-priority task ki priority jo kabhi bhi us resource ko lock karegi.
PCP locking rule (system ceiling)
Ek task resource tab lock kar sakti hai jab uski priority strictly un saare resources ke ceilings se zyada ho jo dusri tasks currently lock kiye hain.
Priority Ceiling Protocol ki guarantees
No deadlock, no chained blocking, aur ek task per activation zyada se zyada ek baar (ek critical section se) block hoti hai.
ICPP (immediate ceiling / highest-locker) kya hai
Ek task resource lock karte hi turant us resource ki ceiling tak raise ho jaati hai; PCP jaisa hi worst-case bound lekin simple hai, POSIX PTHREAD_PRIO_PROTECT mein use hota hai.
Priority inversion ka famous real-world case
Mars Pathfinder 1997; shared mutex pe priority inheritance enable karke fix kiya gaya.
PCP vs PIP ke andar worst-case blocking
PCP: zyada se zyada ek (single sabse lambi relevant) critical section. PIP: lower tasks ke relevant critical sections ka sum.

Concept Map

ingredient

ingredient

ingredient

safe form

dangerous form

causes

real case

fixes

fixed by

Low borrows High priority

prevents

refines

Preemptive priority scheduling

Shared mutex resource

Three priority levels H M L

Priority inversion

Unbounded inversion

Bounded inversion

Medium task preempts Low

Priority Inheritance PIP

Priority Ceiling

Mars Pathfinder 1997