4.2.3 · HinglishOperating Systems
System calls — user mode vs kernel mode, trap mechanism
4.2.3· Coding › Operating Systems
YEH EXIST HI KYU KARTA HAI?
- KYA hota hai user mode? Ek restricted CPU state. Privileged instructions nahi chala sakta (e.g.
HLT, I/O port access, page-table base register load karna). - KYA hota hai kernel mode (a.k.a. supervisor / privileged / ring 0)? Har instruction aur poori memory ka full access.
- KAISE pata chalta hai hardware ko kaun sa mode hai? Ek status register mein ek bit (x86 pe, CPL = Current Privilege Level, CS register ke bits mein; ring 0 = kernel, ring 3 = user).
SYSTEM CALL ACTUALLY KAISE CHALTA HAI (mechanism, step by step)
Isse ek derivation ki tarah socho: har step ek aisi problem solve karne ke liye exist karta hai jo pichle step ne create ki.
- Problem: program
write(fd, buf, n)chahta hai but disk nahi chhu sakta. → Usse kernel mein enter karna hoga. - C library syscall number ek register mein daalta hai (Linux x86-64: number
raxmein, argsrdi, rsi, rdx, ...mein).- Number kyun? Kernel user space se raw function pointer trust nahi kar sakta; woh sirf apne trusted syscall table mein ek index accept karta hai.
- Woh trap instruction execute karta hai (
syscall).- Special instruction kyun? Ek normal
calluser address pe jump karega aur user mode mein hi rahega. Trap instruction hi single legal tarika hai mode bit flip karne ka — aur yeh user code ko yeh choose nahi karne deta ki kahan land karna hai.
- Special instruction kyun? Ek normal
- Hardware atomically: mode = kernel set karta hai, user
PC/flags save karta hai, aur ek fixed handler address pe jump karta hai jo kernel ne boot pe register ki thi.- Fixed kyun? Taaki user code entry ko kisi privileged routine ke beech mein redirect na kar sake.
- Kernel handler remaining registers save karta hai,
raxpadhta hai, validate karta hai (range mein hai? pointer valid hai?), aursys_table[rax]call karta hai.- Validate kyun? Yahi toh wall ka poora point hai — user-supplied numbers ya pointers kabhi trust mat karo.
- Kernel kaam karta hai, return value
raxmein daalta hai, registers restore karta hai. - Return-from-trap execute karta hai (
sysret/iret): mode = user restore karta hai aur PC. Control tumhare program mein trap ke theek baad resume ho jaata hai.

Traps vs Interrupts vs Exceptions (inhe confuse mat karo)
Worked Examples
Common Mistakes (Steel-man + Fix)
Recall Feynman: 12-saal ke bacche ko samjhao
Socho ek video game jahan tum (player) game ke rules nahi badal sakte — sirf game master badal sakta hai. Jab tumhe kuch special chahiye, jaise apna progress save karna, tum ek special signal se haath uthate ho. Game master ruk jaata hai, check karta hai ki tumhara haath uthana allowed hai, tumhara game save karta hai, aur tumhe khelne deta hai. Tum kabhi khud rulebook nahi chhu sakte — aur yeh acchi baat hai, kyunki agar har player rules edit kar sakta, toh game toot jaata. Yeh "haath uthana" signal ek system call hai, aur jis moment game master control leta hai woh kernel mode hai.
Active Recall
Mode bit kya hai aur conceptually kahan rehta hai?
Hardware privilege flag jo CPU status register mein hota hai (x86: CPL in CS); yeh CPU ko batata hai ki privileged instructions allowed hain (kernel) ya fault karenge (user).
System call define karo.
Ek controlled, well-defined entry point jo user-mode program ko trap ke zariye kernel-privileged service request karne deta hai.
Kernel entry point FIXED address kyun hona chahiye, user code ki chosen nahi?
Taaki user code kisi privileged routine ke beech mein jump na kar sake aur validation/protection bypass na kar sake.
Syscall NUMBER kyun pass karta hai, function pointer kyun nahi?
Kernel sirf apne syscall table mein ek index trust karta hai; user space se raw pointers untrusted hote hain.
Trap vs Exception vs Interrupt?
Trap = synchronous & intentional (syscall); Exception = synchronous & unintentional (page fault, div0); Interrupt = hardware se asynchronous.
Syscall se return karne wali instruction kaunsi hai aur woh kya restore karti hai?
sysret/iret — user mode (mode bit) aur saved user PC/flags restore karta hai.
Mode switch aur context switch mein fark?
Mode switch same process mein rehta hai (user↔kernel); context switch doosre process pe swap karta hai. Syscall hamesha mode-switch karta hai, kabhi kabhi context-switch bhi.
Syscalls expensive kyun maane jaate hain?
Boundary crossing mein pipeline flush, register save/restore, validation, aur cache/TLB pollution ka cost hota hai — actual kaam se alag.
Blocking read mein koi data na ho toh kya hota hai?
Kernel process ko sleeping mark karta hai, scheduler doosra process choose karta hai, aur interrupt pe jab data aata hai tab jagaata hai.
Kya printf ek system call hai?
Nahi — formatting user space mein hoti hai aur output buffer hoti hai; write() (actual syscall) kai printfs ke liye ek baar chal sakta hai.
Connections
- Interrupts and Exceptions
- Context Switching
- Process Scheduling
- Virtual Memory and Page Tables
- CPU Privilege Rings (x86)
- The C Standard Library and ABI
- io_uring and Batched I/O