5.5.14 · D4 · HinglishEmbedded Systems & Real-Time Software

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

4,243 words19 min read↑ Read in English

5.5.14 · D4 · Coding › Embedded Systems & Real-Time Software › Priority inversion — problem and solutions (priority inherit

Yeh page parent topic se belong karta hai. Shuru karne se pehle, kuch words se comfortable ho jao jinpar hum zyada depend karenge:

  • A mutex (mutual-exclusion lock) — ek token jo ek waqt mein sirf ek hi task hold kar sakti hai. Dekho Mutexes vs Semaphores.
  • A critical section (CS) — code ka woh hissa jo ek task tab run karta hai jab woh mutex hold kar raha hota hai. Jab tak holder release nahi karta, koi aur usi mutex waale critical section mein enter nahi kar sakta.
  • Preemption — ek higher-priority task ka ek lower task ko instantly CPU se hata dena. Dekho RTOS task states and context switching.
  • ==Blocking time == — woh total time jitni ek high task ko wait karna padta hai kyunki koi lower task ek aisa lock hold kar raha hai jo ko chahiye.

We will also use three protocol names repeatedly, so pin them down now:

Throughout, priority order hai (H sabse zyada urgent hai). Hum time milliseconds (ms) mein likhte hain.


Level 1 — Recognition

Problem 1.1 (L1)

Priority inversion ke liye teen ingredients ka sab ka sab present hona zaroori hai. Neeche di gayi list mein se exactly woh teen tick karo jo required hain:

(a) preemptive priority scheduling, (b) ek shared resource jo mutex se guarded ho, (c) ek network connection, (d) kam se kam teen priority levels, (e) ek floating-point unit.

Recall Solution 1.1

Required teen hain (a), (b), (d).

  • (a) Preemption ke bina, koi running task kabhi side mein nahi dhakeli ja sakti — koi inversion nahi.
  • (b) Shared mutex ke bina koi lock nahi hai jo low task hostage le sake.
  • (d) Tumhein teen levels chahiye taaki ek medium task (na holder, na waiter) beech mein ghus sake aur unbounded case create kare. (c) aur (e) irrelevant hardware details hain.

Problem 1.2 (L1)

Har term ko uske one-line meaning se match karo:

  1. Ceiling of a resource — 2. Priority inheritance — 3. Bounded inversion — 4. Unbounded inversion.

A. High sirf ek low task ke critical section ka wait karta hai. B. Ek medium task CPU hog karta hai jab low lock hold kare, toh wait ka koi upper limit nahi hota. C. Us highest task ki priority jo kabhi bhi resource lock karegi. D. Ek blocking low task temporarily waiter ki priority borrow kar leta hai.

Recall Solution 1.2

1↔C, 2↔D, 3↔A, 4↔B. Key sanity check: inheritance (D) ek action hai jo block ke baad li jaati hai; ceiling (C) ek static number hai jo runtime se pehle compute hoti hai.


Level 2 — Application

Problem 2.1 (L2)

, share karte hain mutex . ka critical section ms ka hai. Ek medium task (koi lock nahi chahiye) ms run karta hai. Koi protocol nahi hai, aur neeche diye timing assumptions ke under — (i) ne abhi-abhi acquire kiya hai aur apna koi bhi critical section execute nahi kiya, (ii) , ke acquire karne ke turant baad ready ho jaata hai, aur (iii) right after ke block hone par ready ho jaata hai — toh se se kam kitna wait karega?

Recall Solution 2.1

Sequence: locks → (assumption ii) preempts immediately, tries , blocks resumes → (assumption iii) becomes ready, preempts (M outranks L) → runs ms → finishes its remaining CS → releases runs. Kyun L ka poora ms CS abhi bhi pending hai: assumption (i) ke mutabiq, ne ko pehle preempt kar diya tha jab ne apna critical section kuch bhi run nahi kiya tha, isliye jab finally side hota hai, par abhi bhi poora ms baaki hai — pehle kuch consume nahi hua. (Agar ne ke aane se pehle, maan lo, ms CS already run kar li hoti, toh sirf ms bacha hota; hum worst case lete hain jahan sab ms baaki hain.) Wait ka run ka remaining critical section ms (at minimum — aur zyada M activations se aur bura hoga). Yeh principle mein unbounded hai: ki jagah koi bhi number rakh do aur wait badhta jaata hai.

Problem 2.2 (L2)

Wahi tasks, lekin ab par PIP enable hai. kitna blocked rahega?

Recall Solution 2.2

Jab , par block hota hai, ko ki priority inherit ho jaati hai. Ab , se upar hai, isliye ko preempt nahi kar sakta. apna ms critical section finish karta hai, release karta hai, wapas neeche aa jaata hai; run karta hai. ki blocking ka critical section ms. Bounded — ke ms se independent. ✅

Problem 2.3 (L2)

Do mutexes aur . ko kuch point par tasks lock karte hain; ko lock karte hain. Har mutex ki ceiling batao.

Recall Solution 2.3

Ceiling = us highest task ki priority jo ise kabhi bhi lock kare.

  • .
  • . Note karo ki ki ceiling sirf hai, chahe bhi ise lock kare — ceiling highest locker track karta hai, lowest nahi.

Level 3 — Analysis

Problem 3.1 (L3)

Neeche diye figure mein timeline study karo. Tasks ; aur share karte hain . Koi protocol nahi chal raha. Identify karo (i) woh instant jab unbounded inversion shuru hoti hai, aur (ii) kaunsi task se unrelated hai phir bhi ki delay dominate karti hai.

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

Is figure ko kaise padhein: teen horizontal lanes, ek per task, left par label kiye gaye hain (bottom = L low, middle = M medium, top = H high). Time left→right ms mein run karta hai, dotted vertical guides ke saath events par. Blue bar = actively hold/run kar raha hai; pink bar H lane par = blocked hai (frozen, ka wait kar raha hai); pink bar M lane par = apna unrelated kaam run kar raha hai; yellow bar = ek task finally normally run kar rahi hai. Yellow arrow unbounded gap mark karta hai.

Recall Solution 3.1

(i) Unbounded inversion par shuru hoti hai — woh moment jab ne ko preempt kiya jabki abhi bhi hold kar raha tha. se pehle, sirf ke critical section ka wait kar raha tha (bounded); par yeh wait ke runtime ka hostage ban jaata hai. (ii) se unrelated hai (na koi lock chahiye) phir bhi uska runtime ki delay dominate karta hai — yahi is bug ka signature hai. aur ke beech lamba pink bar dekho: isme kuch bhi ko touch nahi karta, phir bhi (blocked, top lane) poore time frozen hai.

Problem 3.2 (L3)

Wahi teen tasks ko PIP ke under compare karo (neeche figure). Figure use karke explain karo ki medium bar kyun disappear ho jaata hai ke critical section ke beech mein se.

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

Is figure ko kaise padhein: pehle jaisi teen lanes aur time axis. Dashed yellow vertical line woh instant mark karti hai jab boosted hota hai — yeh bottom (L) lane se top (H) lane par jump karta hai. Hatched blue bar jo top lane mein hai woh hai apna critical section H ki priority par boosted hokar run karta hua. Dotted "release" line mark karta hai jahan ne free kiya aur wapas neeche aa gaya; yellow bar hai finally run karta hua, aur pink bar M lane par hai, ab release ke baad push kiya gaya.

Recall Solution 3.2

Jis instant , par block hota hai, ki priority ki wali tak boost ho jaati hai (dashed yellow line dikhata hai top lane par jump karta hua). Boost hone ke baad, , se upar hai, isliye jab ready hota hai toh use preempt nahi karne diya jaata apni baari ka wait karta hai. Isliye apna critical section completion tak bina interruption ke run karta hai, release karta hai (yellow "release" tick), aur instantly apne low lane par drop ho jaata hai. Tabhi run kar sakta hai. Medium bar release ke baad push ho jaata hai, isliye woh ab ke critical section ke andar nahi baithta — unbounded gap khatam ho jaata hai.

Problem 3.3 (L3)

PIP ke under nested mutexes ke saath: ko chahiye ( hold kar raha hai), aur ko chahiye ( hold kar raha hai). Trace karo ki priority boosts kaise propagate hoti hain. Ise chained (transitive) blocking kaha jaata hai — name explain karo.

Recall Solution 3.3

Chain of dependence: .

  1. , par block hota hai ( hold kar raha hai) → ko ki priority inherit hoti hai.
  2. Lekin khud par blocked hai ( hold kar raha hai) → ko ki (ab ki) priority inherit hoti hai.
  3. Boost chain mein neeche propagate ho gayi tak. , ke level par run karta hai, par CS finish karta hai, release karta hai; un-block hota hai, par CS finish karta hai, release karta hai; aakhirkar run karta hai. "Chained" = ka wait, ke CS plus ke CS ka sum hai — do critical sections stack hokar aa jaate hain, kyunki block ek chain of holders se travel kiya. PIP har link ko bound karta hai lekin inhe add up kar deta hai.

Level 4 — Synthesis

Problem 4.1 (L4)

Design assignment. Tasks . Resources (ceiling ), (ceiling ). PIP ke under, , aur par alag-alag block ho sakta hai, CS lengths ms aur ms. PCP (Priority Ceiling Protocol) ke under, dikhao ki zyada se zyada ek baar block hota hai, aur dono protocols ke under worst-case blocking do.

Recall Solution 4.1

PIP ke under — timeline walk karo dekhne ke liye ki do critical sections kyun sum hoti hain:

  1. , lock karta hai aur apna ms CS shuru karta hai. ko preempt kar diya jaata hai (maan lo ke activate hone se), isliye , ke CS ke andar ruk jaata hai.
  2. Alag se, (pehle ya interleaved run mein) lock karta hai — YA ek doosra lower task , ms ke liye hold karta hai. Dono taraf, par ek ms CS hai jo ko bhi chahiye hogi.
  3. start karta hai. Pehle chahiye → holder finish hone aur release karne tak ms ke liye blocks karta hai. Yeh ek block hai.
  4. resume karta hai, run karta hai, phir baad mein chahiye → woh abhi bhi held paata hai → dobara release hone tak ms ke liye blocks karta hai. Yeh doosra, alag block hai. Kyunki PIP mein doosre lock ko kabhi na lene se rokne ka koi gate nahi hai, dono critical sections independently "in progress" ho sakti hain aur har ek ko ek poora block cost karti hai, ek ke baad ek. Kuch bhi inhe merge nahi karta. Isliye yeh add hoti hain: PCP ke under: maan lo , lock karta hai. System ceiling (abhi-locked mutexes mein sabse highest ceiling) ban jaati hai. Ab agar koi task lock karne ki koshish kare, uski priority strictly greater than system ceiling honi chahiye — impossible, kyunki koi task strictly se upar nahi hai. Isliye doosra lock tab tak deny hota hai jab tak free na ho: woh situation jahan dono aur simultaneously locked-and-blocking hoon, kabhi form hi nahi ho sakti. zyada se zyada ek critical section se blocked hota hai — sabse lamba relevant wala: PCP yahan worst-case blocking mein ms bachata hai, aur "at most once" guarantee deta hai.

Problem 4.2 (L4)

Paanch tasks ek mutex lock karti hain: unki priorities hain (bada = zyada high). kya hai? ICPP (Immediate Ceiling Priority Protocol — ek task ko lock ka ceiling usi waqt milta hai jab woh lock acquire kare) ke under, ki priority lock karne ke instant kitni ho jaati hai, aur kya koi task ko preempt kar sakta hai jabki woh hold kare?

Recall Solution 4.2

(jo hai). ICPP ke under, jis moment , lock karta hai ise immediately ceiling tak raise kar diya jaata hai. hold karte waqt, priority par run karta hai — top par. Kya (priority ) ise preempt kar sakta hai? Page ke top mein diye scheduler ke tie-breaking rule ke mutabiq, preemption ke liye strictly higher priority chahiye. aur boosted- equal hain par, isliye preempt nahi karta: , jo already run kar raha hai, CPU hold karta rehta hai. Baaki sab tasks () ki priority hai, isliye koi bhi preempt nahi kar sakta. Isliye koi bhi task ko preempt nahi kar sakta jab tak woh hold kare. apna critical section completion tak run karta hai, release karta hai, par wapas aa jaata hai. Isliye ICPP tasks "shuru hone ke baad kabhi blocked nahi hote": ya toh woh top rank hold karte hain ya unhe darwaaze par hi rok diya jaata hai.


Level 5 — Mastery

Problem 5.1 (L5)

Response-time flavour. Task ka execution time ms hai aur worst-case blocking hai. PIP ke under do lower tasks ek-ek baar block kar sakti hain: unke relevant critical sections ms aur ms hain. Is window mein koi medium interference nahi hai. Response-time idea use karke (dekho Schedulability analysis & response-time analysis), is simplified window mein ka response time hai. PIP aur PCP ke under compute karo.

Recall Solution 5.1

PIP (har lower task se zyada se zyada ek baar blocked → sum): PCP (total zyada se zyada ek baar blocked → single longest): PCP worst case ko ms tight karta hai — yeh tighter bound exactly wahi hai jo hard real-time WCET/response-time budgets mein prize ki jaati hai.

Problem 5.2 (L5)

Full formula application. Lower tasks aur unke relevant critical-section lengths ( ke liye relevant) hain: ms, ms, ms. (a) PIP ke under, worst-case . Ise compute karo. (b) PCP ke under, worst-case same set par. Ise compute karo.

Recall Solution 5.2

Pehle, har lower task ka sabse lamba relevant CS:

  • :
  • :
  • :

(a) PIP — un maximums ka sum: (b) PCP — sab mein se single largest critical section: Ratio : PIP ka bound yahan se zyada bada hai. Jaise-jaise lower tasks ki sankhya badhti hai, PIP ka sum badhta rehta hai jabki PCP ka max wahi rehta hai — yeh scaling hi woh deep reason hai ki PCP kai nested resources ke liye dominate karta hai.

Problem 5.3 (L5)

Reasoning synthesis. Ek colleague propose karta hai: "Bas ICPP har jagah use karo aur PIP bhool jao." Is choice ka ek sach faayda aur ek honest cost do, comparison table se wapas tie karte hue.

Recall Solution 5.3

Advantage: ICPP tightest blocking bound deta hai ("at most once total"), deadlock-freedom, no chained blocking, aur kam runtime cost (raise-on-lock ek assignment hai) — ek task shuru hone ke baad kabhi blocked nahi hota. Honest cost: ICPP ko static offline analysis chahiye — tumhein pata hona chahiye ki har task kabhi bhi har resource ko lock karegi ya nahi, ceilings compute karne ke liye, aur task set mein koi bhi change recomputation force karta hai. Ek task ko lock karne ke waqt hi boost ho jaata hai (chahe koi actually block hi na hota), jo unrelated higher tasks ko thoda delay kar sakta hai jo us resource ko touch bhi nahi karne wale the. PIP ko koi static analysis nahi chahiye aur sirf tab boost karta hai jab real block ho — aksar simpler to deploy jab task set baar baar change hota ho.


Quick self-check

Recall Numeric answers reveal karo

Prob 2.1 wait ::: ms Prob 2.2 wait ::: ms Prob 2.3 ceilings ::: Prob 4.1 PIP vs PCP ::: ms vs ms Prob 4.2 ceiling / raise ::: and Prob 5.1 PIP vs PCP ::: ms vs ms Prob 5.2 PIP vs PCP ::: ms vs ms