4.2.9 · Coding › Operating Systems
Ek CPU scheduler ek referee hota hai jo decide karta hai ki next kaunsa ready process chalega. Lekin "achha refereeing" alag-alag logon ke liye alag-alag matlab rakhti hai: system owner chahta hai ki CPU busy rahe aur bahut saare jobs complete hon; user chahta hai ki unka job jaldi ho aur screen quickly react kare. Ye conflicting desires scheduling metrics ke roop mein capture hoti hain. Tum inhe sab ek saath maximize nahi kar sakte — isliye hum inhe measure karte hain, aur ek aisa scheduler choose karte hain jo hamare care wale goals ko optimize kare.
Agar tum "achha" ko measure nahi kar sakte, toh do schedulers ko compare bhi nahi kar sakte. "FCFS slow lagta hai" ka koi fayda nahi. "FCFS average waiting time 17 ms deta hai, Round Robin 9 ms deta hai" — yeh actionable hai. Metrics vague feelings ko numbers mein badal deti hain jinhe tum optimize kar sako — exactly OS scheduling ka 80/20: ye 5 numbers master karo aur tum chapter ka 80% samajh jaoge.
Inhe define karne ke liye hume har process P i ke timestamps chahiye:
Definition Har process ke time markers
Arrival time A T i — jab process ready queue mein enter karta hai.
Burst time B T i — kul CPU time jo process ko chahiye (a.k.a. service time).
Completion time C T i — jab process finish hota hai.
Start time S T i — jab process pehli baar CPU milta hai.
Baaki sab inhi se derive hota hai.
Definition Paanch metrics
CPU Utilization — fraction of time CPU useful kaam kar raha hai.
Throughput — per unit time mein complete hue processes ki sankhya.
Turnaround Time (TAT) — arrival se completion tak ka kul time.
Waiting Time (WT) — ready queue mein wait karne mein bitaya gaya time (run nahi ho raha).
Response Time (RT) — arrival se lekar pehli baar run hone tak ka time.
"Poora safar kitna lamba tha, door se door tak?"
Jis pal arrive kiya uss pal se jis pal gaya uss pal tak:
T A T i = C T i − A T i
Safar ka time do parts mein banta hai: CPU par actually run hone ka time (B T i ) aur nahi run hone ka time (queue mein wait karna). Toh:
T A T i = B T i + W T i ⇒ W T i = T A T i − B T i
(Preemptive schedulers ke liye W T phir bhi "system mein time minus CPU par bitaya gaya time" ke barabar hota hai; agar process preempt ho jaata hai, toh queued gaps W T ke andar add ho jaate hain.)
Users ko pehli reaction ki parwah hoti hai, finish hone ki nahi.
R T i = S T i − A T i
Hum chahte hain CPU kabhi idle na ho. T t o t a l length ki observation window mein T i d l e idle time ke saath:
U = T t o t a l T t o t a l − T i d l e × 100%
Ek window mein finished jobs count karo:
Throughput = T t o t a l number of completed processes
Intuition Tension (Pehle forecast karo phir verify)
Forecast: Kya koi scheduler dono lowest turnaround AND lowest response de sakta hai? Verify: Nahi — response minimize karne ke liye frequently switch karna padta hai (Round Robin), jisse context-switch overhead add hota hai aur average turnaround badh sakta hai. Tum ek ke liye doosra trade karte ho. Ye trade-off hi chapter ka dil hai.
Process
AT
BT
P1
0
5
P2
0
3
P3
0
8
Order = P1, P2, P3 (FCFS, sab 0 par arrive karte hain).
Timeline banao (Gantt): | P1 0–5 | P2 5–8 | P3 8–16 |
CT: C T 1 = 5 , C T 2 = 8 , C T 3 = 16 . Ye step kyun? Har process completion tak run karta hai, toh completion = uske slice ka end.
TAT = C T − A T : T A T 1 = 5 , T A T 2 = 8 , T A T 3 = 16 . Kyun? Sab 0 par aaye, toh TAT = CT.
WT = T A T − B T : W T 1 = 0 , W T 2 = 5 , W T 3 = 8 . Kyun? P2 ne P1 ke 5 units wait kiye; P3 ne 5+3 wait kiye.
RT = S T − A T : 0 , 5 , 8 (yahaan WT ke barabar, non-preemptive, koi baad ke gaps nahi).
Averages: T A T = 3 5 + 8 + 16 = 9.67 , W T = 3 0 + 5 + 8 = 4.33 .
Throughput = 3/16 = 0.1875 proc/unit. Utilization = 100% (CPU kabhi idle nahi).
Worked example Shortest job first ke hisaab se reorder karo → P2(3), P1(5), P3(8)
Gantt: | P2 0–3 | P1 3–8 | P3 8–16 |
W T : W T 2 = 0 , W T 1 = 3 , W T 3 = 8 ⇒ W T = 3.67 .
Kyun drop hua: chhote jobs pehle finish hone se baaki sabke upar pile hone wala wait kam ho jaata hai. Isliye SJF average waiting time minimize karta hai (provably optimal iske liye).
Process
AT
BT
P1
0
4
P2
6
2
Gantt: | P1 0–4 | idle 4–6 | P2 6–8 |
C T 1 = 4 , C T 2 = 8 .
T A T 1 = 4 − 0 = 4 , T A T 2 = 8 − 6 = 2 .
W T 1 = 4 − 4 = 0 , W T 2 = 2 − 2 = 0 . Dono 0 kyun? Koi bhi kisi doosre job ke peeche wait nahi kiya.
Utilization = 8 6 × 100% = 75% . Kyun? CPU 4→6 idle raha, 8 units mein se 6 busy.
Throughput = 2/8 = 0.25 proc/unit.
Worked example Idle CPU kyun utilization hurt karta hai lekin waiting nahi
Waiting time sirf wo time count karta hai jab process doosre ready processes ke peeche blocked ho. Idle CPU (kuch ready nahi) 0 waiting deta hai lekin utilization giraa deta hai. Ye do metrics alag-alag cheezein measure karte hain — inhe confuse mat karo.
Common mistake "Waiting time = turnaround time"
Kyun sahi lagta hai: dono "wasted time" jaise feel hote hain. Flaw: turnaround mein burst (actual kaam) include hota hai. T A T = W T + B T . Fix: waiting pane ke liye hamesha burst subtract karo.
Common mistake "Response time hamesha waiting time ke barabar hota hai"
Kyun sahi lagta hai: simple FCFS examples mein dono equal aate hain. Flaw: preemption ke saath (Round Robin), ek process jaldi start hota hai (low RT) lekin interrupt hoke baad mein aur wait karta hai (high WT). Fix: R T pehla start use karta hai; W T sab waiting sum karta hai. Generally R T ≤ W T .
Common mistake "Zyada CPU utilization hamesha better hoti hai"
Kyun sahi lagta hai: idle CPU = wasted hardware. Flaw: 100% utilization thrashing ya backlog se aa sakti hai jisme response times bhayanak hoti hain. Fix: utilization ek system-owner metric hai; ise user metrics (response, turnaround) ke saath balance karo.
Common mistake "Throughput bas 1/average-burst hai"
Kyun sahi lagta hai: dimensional analysis theek lagti hai. Flaw: throughput idle time, overlap, aur overhead par depend karta hai, sirf burst par nahi. Fix: actual window par completions count karo: N / T t o t a l .
CT aur AT ke terms mein turnaround time kya hai? T A T i = C T i − A T i (completion minus arrival).
Turnaround se waiting time derive karo. System mein time = burst + waiting, toh W T i = T A T i − B T i .
Response time define karo. R T i = S T i − A T i : arrival se pehli baar process ko CPU milne tak.
RT, WT se alag kyun ho sakta hai? Preemption ke saath process jaldi start hota hai (low RT) lekin interrupt hokar baad mein aur wait karta hai, isliye generally R T ≤ W T .
CPU utilization ka formula? U = T b u sy / T t o t a l × 100% = useful kaam mein bitaye wall-clock time ka fraction.
Throughput ka formula? N co m pl e t e d / T t o t a l — per unit time mein complete hue processes.
Kaun sa scheduler provably average waiting time minimize karta hai? Shortest Job First (SJF) given set of jobs ke liye.
CPU 10 units mein se 2 units idle raha — utilization? 8/10 = 80% .
100% utilization automatically achhi kyun nahi hai? Ye backlog/thrashing hide kar sakti hai jisme users ke liye response aur turnaround bahut buri hoti hain.
User ke liye aur system owner ke liye kaunse metrics matter karte hain? User: response & turnaround; System owner: utilization & throughput.
Recall Feynman: 12-saal ke bache ko samjhao
Socho ek akela checkout counter (CPU) hai aur customers (processes) hain. Turnaround = tum dukaan mein kitne der the, door se door tak. Waiting = line mein khade rehne ka time, serve nahi ho rahe. Response = cashier ne pehli baar tumhe "hi" bolne mein kitna time liya. Utilization = din mein cashier kitni der actually items scan karta raha, idle nahi tha. Throughput = ghante mein kitne customers serve hue. Ek achha manager chahta hai cashier hamesha busy rahe AND customers khush rahe — lekin kuch customers ko rush karne se doosre wait karte hain. Tumhe choose karna padta hai ki "fair" ka kya matlab hai.
Mnemonic 5 goals yaad karo
"U Throw TWR" → U tilization, Thro ughput, T urnaround, W aiting, R esponse.
Aur chain: TAT = WT + BT → "T otal = W ait + B urst".
First-Come First-Served (FCFS) — baseline; achha throughput, bura waiting.
Shortest Job First (SJF) — optimal average waiting time.
Round Robin Scheduling — response optimize karta hai, context-switch overhead deta hai.
Context Switching — wo overhead jo bahut fine slicing se throughput hurt karta hai.
Gantt Chart — wo tool jisse ye sab metrics compute hoti hain.
Process States — ready/running/waiting queue feed karte hain jise ye metrics measure karti hain.
Priority Scheduling — fairness ko chosen-goal optimization ke liye trade karta hai.