5.5.9 · HinglishEmbedded Systems & Real-Time Software

RTOS concepts — task, scheduler, preemption, context switch

2,111 words10 min readRead in English

5.5.9 · Coding › Embedded Systems & Real-Time Software


RTOS exist kyun karta hai?


Chaar core concepts

Figure — RTOS concepts — task, scheduler, preemption, context switch

Context switch actually kaise kaam karta hai (scratch se derive karo)

Step-by-step (ARM Cortex-M style), aur kyun har step:

  1. Ek trigger hota hai — ek tick interrupt, ya xSemaphoreGive kisi higher task ko unblock karta hai. Kyun: yahi woh moment hai jab scheduler ko re-evaluate karna hai ki "kaun highest-priority Ready hai?"
  2. CPU PendSV handler mein jaata hai (dedicated switch interrupt). Kyun: PendSV ko sabse lowest interrupt priority di jaati hai taaki switch sirf tab ho jab saare real ISRs khatam ho jaayein — nested mess se bachne ke liye.
  3. Jaane wale task ka context save karo: r4–r11 ko uske stack par push karo. (Hardware ne exception entry par already r0–r3, r12, LR, PC, xPSR auto-push kar diye hain.) Kyun: mila ke yeh poora state capture karta hai; hardware aadha karta hai, software baaki karta hai.
  4. Jaane wale task ka final SP uske Task Control Block (TCB) mein store karo. Kyun: TCB har task ka per-task bookkeeping record hai; SP uske poore saved frame ka handle hai.
  5. Scheduler agla TCB pick karta hai (highest-priority Ready). Uska saved SP load karo.
  6. Context restore: nayi task ke stack se r4–r11 pop karo; exception return baki sab automatically restore karta hai aur nayi task ke PC par jump karta hai. Kyun: nayi task ka PC pichli baar switch out hone par save hua tha, toh woh seamlessly resume ho jaati hai.

Worked examples


Common mistakes (steel-manned)


Flashcards

RTOS mein task ki chaar states kya hain?
Running, Ready, Blocked, Suspended.
Preemption define karo.
Scheduler dwara ek running task ko jabardasti pause karna jaise hi ek higher-priority task Ready ho jaaye, bina us task ki cooperation ke.
Ek context switch kya save aur restore karta hai?
Saare CPU registers (general regs, status flags, PC) plus stack pointer, har task ke TCB ke zariye anchored.
Fixed-priority preemptive scheduler kaunsa rule follow karta hai?
Hamesha wo highest-priority task chalao jo Ready state mein ho.
Context switching mein waste hone wala CPU fraction ka formula?
(worst case, ek switch per tick).
RTOS mein busy-waiting kyun bura hai?
Task Running rehta hai aur CPU hog karta hai; woh kabhi Blocked mein nahi jaata, toh lower-priority lekin useful kaam nahi chal sakta. Blocking call use karo.
Equal-priority tasks CPU share kaise karte hain (preemption nahi)?
Time-slicing / round-robin at tick boundaries.
Cortex-M par PendSV ko sabse lowest interrupt priority kyun di jaati hai?
Taaki context switch sirf tab chale jab saare real ISRs khatam ho jaayein, nested-switch corruption se bachne ke liye.
TCB kya hota hai?
Task Control Block — per-task record jisme uska saved stack pointer, priority, state, aur bookkeeping hoti hai.
Cooperative vs preemptive scheduling?
Cooperative: task tab tak CPU rakhta hai jab tak khud voluntarily yield na kare. Preemptive: scheduler use kabhi bhi higher-priority task ke liye interrupt kar sakta hai.

Recall Feynman: 12-saal ke bachche ko samjhao

Socho ek teacher (CPU) aur bahut saare bachche (tasks) hain jo sab help chahte hain. Teacher ek time mein sirf ek bachche ki help kar sakta hai, lekin itni tezi se switch karta hai ki lagta hai sabko ek saath help mil rahi hai. Ek class monitor (scheduler) hamesha teacher ko us bachche ke paas bhejta hai jise sabse zyada zaruri problem hai — chahe teacher kisi doosre bachche ke saath baat kar raha ho (yahi preemption hai). Har baar jab teacher switch karta hai, woh ek sticky note likhta hai ki exactly kahan ruka tha (context switch / registers save karna) taaki baad mein bina confusion ke continue kar sake.


Connections

  • Interrupts and ISR latency — woh trigger jo zyaatar context switches start karta hai.
  • Rate Monotonic Scheduling — math jo prove karta hai ki fixed priority mein deadlines meet hote hain.
  • Priority Inversion and Mutexes — jo naive priority scheduling ko todta hai.
  • Stack memory and TCB — jahan har task ka saved context rehta hai.
  • Semaphores and Queues — blocking primitives jo tasks ko Ready↔Blocked karte hain.
  • Bare-metal super-loop vs RTOS — woh design alternative jise yeh replace karta hai.

Concept Map

blocks stall everything

solved by

splits program into

contains

tracked by

picks highest-priority Ready

runs on

uses policy

forcibly pauses lower task

triggers

saves and restores registers

lets task resume where it left off

Bare-metal super-loop

Timing problem

RTOS

Task with own stack

Scheduler

States Running Ready Blocked Suspended

Tick interrupt

Preemption

Context switch

PC SP r0-r12 flags