Kernel ise implement kaise karta hai (mental model):
Ek queue length × itemSize bytes ke liye storage rakhta hai saath mein blocked tasks ki do lists: tasks waiting to send aur tasks waiting to receive.
Khaali queue par Receive: caller ko timeout ke saath "waiting to receive" list mein move kar diya jata hai. Jab Send aata hai, kernel item copy karta hai aur highest-priority waiting receiver ko unblock karta hai.
Priority inversion (BAD) With inheritance (GOOD)
H ──wants lock──▒▒▒ blocked H ──wants──▒ short block
M ════runs forever════ L boosted to H, finishes lock
L holds lock, starved M can't preempt boosted L
Recall Feynman: 12-saal ke bachche ko explain karo
Socho ek teacher (CPU) kaafi bacchon (tasks) ki ek ek karke help karta hai. Queue notes ki ek tray hai — ek bachcha note dalta hai, doosra baad mein uthata hai, order mein. Semaphore tokens ki ek jar hai: slide use karne ke liye token lo; agar jar khaali hai toh baitho aur wait karo jab tak koi token daale. Mutexsingle bathroom key hai — sirf woh bachcha jo use le gaya wahi wapas de sakta hai, aur agar ek slow bachche ke paas key hai jab ek important bachcha tadap raha hai, teacher slow bachche ko kehta hai "jaldi karo, pehle jao" taki key jaldi wapas aaye. Event group wall par ek checklist hai — ek bachcha wait karta hai jab tak dono "lunch ready" aur "haath dhule" tick nahi ho jaate phir khane jaata hai.
FreeRTOS queue kisse transfer karta hai — value se ya reference se?
Value se (item ke bytes ko kernel storage mein copy karta hai), jab tak aap deliberately pointer nahi bhejte.
Binary semaphore vs counting semaphore?
Binary: count 0/1 (ek event flag). Counting: 0..N, yaad rakhta hai kitne events/resources available hain.
Ek semaphore internally kaunsi queue ke equivalent hai?
ItemSize = 0 wali queue; count zero-byte items ki sankhya hai jo present hain.
Locking ke liye binary semaphore ki jagah mutex kyon use karte hain?
Mutex ka ek owner hota hai (sirf lene wala de sakta hai) aur priority inversion se bachne ke liye priority inheritance support karta hai.
Priority inversion kya hai aur mutex ise kaise fix karta hai?
Lock hold karne wala low-priority task high-priority task ko block karta hai jab medium task low task ko starve karta hai; mutex holder ki priority waiter tak boost kar deta hai release hone tak.
ISR se mutex kyon use NAHI karna chahiye?
ISR ka koi task identity nahi hota mutex own karne ya priority inherit karne ke liye; binary/counting semaphore ka FromISR variant use karo.
Kaun sa IPC ek task ko ALL ya ANY kai conditions ka wait karne deta hai?
Event group (bits AND/OR wait ke saath, optional clear-on-exit).
Give waiting task ko block kiye bina signal karta hai; yield agar woh higher priority ka hai toh immediately use switch karta hai, latency kam karta hai.
Kya hota hai jab ek task portMAX_DELAY ke saath khaali queue par xQueueReceive karta hai?
Ye block ho jaata hai (ready list se hata diya jaata hai) jab tak koi item send nahi hota, tab kernel item copy karta hai aur use unblock karta hai — CPU meanwhile free rehta hai.
Queue se pointer bhejna ka risk kya hai?
Dangling pointer agar pointed-to data receiver ke read karne se pehle free/overwrite ho jaye; ownership explicitly manage karna padta hai.