5.1.13 · D5 · HinglishInstruction Set Architecture (ISA)

Question bankSystem vs user mode and privilege levels

2,173 words10 min read↑ Read in English

5.1.13 · D5 · Hardware › Instruction Set Architecture (ISA) › System vs user mode and privilege levels


Pehle poora mechanism picture karo

Privilege ki seedhi — modern hypervisor rung ke saath — kuch aisi dikhti hai:


True ya false — justify karo

A call to a library function aur ek syscall same tarah ka transition hai.
False. call user mode mein hi rehta hai aur user-chosen address par jump karta hai; syscall ek hardware trap perform karta hai jo privilege level kernel tak change karta hai aur ek OS-chosen entry vector par jump karta hai.
User mode kabhi bhi koi bhi wahi instructions nahi chala sakta jo kernel mode chalata hai.
False. Ordinary arithmetic, loads, stores, aur branches dono modes mein identically chalte hain; sirf privileged instructions ka chhota sa set (halt, disable interrupts, load page-table base, direct I/O) user mode mein block hota hai.
Zyada ring number matlab zyada power.
False. Rings ulti hain — Ring 0 sabse zyada privileged hai aur Ring 3 (user) sabse kam. "Inner ring = core ke zyada paas = zyada trusted."
Mode bit ordinary RAM mein rehta hai jise program overwrite kar sakta hai.
False. Yeh ek protected status register (PSW / RISC-V mstatus) mein rehta hai, aur ise likhna khud privileged hai — warna ek user khud ko promote kar le aur scheme collapse ho jaaye.
syscall ke baad kernel mode mein aa jaane par CPU wahan tab tak rehta hai jab tak program exit nahi karta.
False. sret/iret par (return-from-trap instructions) mode wapas user tak atomically drop hota hai, toh control syscall ke baad wali instruction par wapas aata hai privilege restore hone ke saath.
User mode mein execute ki gayi privileged instruction silently ignore ho jaati hai.
False. Yeh ek trap/exception raise karta hai (x86 par ek #GP, General Protection Fault); hardware use chalane se mana karta hai aur kernel ke fault handler par jump karta hai, OS ko control mein rakhta hai.
Interrupts disable karna user program ke liye critical section banane ka ek accha tarika hai.
False. cli (clear-interrupt-flag / interrupt-masking) privileged hai, isliye user code yeh nahi kar sakta; use OS-provided synchronization jaise mutexes ya futexes use karne padte hain.
User program choose karta hai ki syscall ke dauran kaunse kernel address par land karega.
False. User choose karta hai ki woh kernel mein enter kare, kabhi kahan nahi — PC ek fixed OS vector table se set hota hai, kernel ke beech mein jumps rokta hai.
Hardware privilege enforce kar sakta hai agar OS software mein har instruction check kare.
False. Software, software ka referee nahi ho sakta — ek cheating program check ko skip kar dega; referee khud hardware decoder hi hona chahiye, jo har instruction par mode bit consult kare.
Trap mein mode-change aur PC-jump do alag steps mein ho sakte hain.
False. Yeh ek atomic, uninterruptible act mein fuse hote hain; agar alag ho sakte, toh attacker interleave kar sakta aur apna code chala sakta jabki already kernel mode mein ho.

Error dhundho

"Syscall normal function call se faster hai kyunki kernel optimised hota hai."
Galat — syscall usually slower hota hai: isme ek mode switch, register save/restore, aur argument validation ka cost lagta hai, jo same-mode call mein nahi hota.
"Kyunki read() ek C function hai, compiler disk access inline kar deta hai."
Galat — direct disk I/O privileged hai, isliye yeh user code mein nahi aa sakta; read() ultimately ek syscall/ecall tak pahuncha hai jo actual I/O karne ke liye kernel mein trap karta hai.
"Ek infinite user loop se CPU wapas paane ke liye, OS periodically program ko poll karta hai."
Galat — polling ke liye khud CPU chahiye, jise loop jam ke baitha hai. OS ek hardware timer interrupt par rely karta hai jise usne pehle arm kiya tha (privileged) taaki forcibly kernel mode mein re-enter ho sake; dekho Pre-emptive multitasking and the scheduler.
"Kernel pointer buf ko trust karta hai jo user read() ko pass karta hai kyunki woh usi process se aaya."
Galat — kernel ko validate karna hota hai ki buf caller ki apni mapped memory ke andar hai; warna ek malicious user kernel ko trick kar sakta hai ki woh page tables ke zariye kernel memory mein write kare.
"RISC-V M-mode aur U-mode wahi hain jo x86 Ring 1 aur Ring 2 hain."
Galat — M/S/U RISC-V ke teen levels hain (Machine sabse privileged), x86 ke rarely-used Rings 1 aur 2 se unrelated; dono bas ek hi idea ke alag naming hain ordered privilege levels ke.
"Kyunki mode bit ek bit hai, ek system mein sirf do hi privilege levels ho sakte hain."
Galat — real CPUs ek multi-bit field encode karte hain (CPL 0–3 on x86, EL0–EL3 on ARM), kaafi levels dete hain; "mode bit" sirf sabse simple conceptual model hai.
"Ek exception aur ek system call bilkul alag hardware paths use karte hain."
Galat — dono traps hain: dono usi atomic "mode→kernel, PC→OS vector" machinery use karte hain. Ek syscall ek deliberate trap hai; ek exception/interrupt ek involuntary wala hai. Dekho Interrupts and exceptions.

Why questions

Mode bit likhna khud privileged operation kyun hona chahiye?
Kyunki agar user code bit ko "kernel" set kar sake, toh woh khud ko promote kar lega aur har check bypass kar dega — poori enforcement scheme is fixed point par depend karti hai ki woh user mode se unwritable hai.
Syscall OS ke chosen vector par kyun jump karta hai, user ke diye address par nahi?
Taaki user kernel mein arbitrary point par enter na kar sake (jaise ek validation check ke baad); fixed entry vector guarantee karta hai ki kernel code hamesha ek trusted, checked prologue par start ho.
Mode-change aur PC-jump ko ek atomic step mein fuse kyun karna chahiye, ek ke baad ek karne ki jagah?
Kyunki unke beech gap exploitable hai: agar privilege pehle badhta, toh attacker us pal ko seize kar sakta pehle ki PC trusted vector par move kare aur apna code chala sakta jabki already kernel mode mein ho; unhe fuse karna aisa koi window hata deta hai.
Enforcement check instruction-decode stage par kyun rakhi jaati hai?
Kyunki enforcement effect se pehle honi chahiye — CPU ko ek privileged opcode refuse karna hota hai uski dangerous action hone se pehle, isliye decoding mode bit consult karta hai jab opcode recognize karta hai.
User programs ko sirf isliye trust nahi kiya ja sakta ki "yeh tumhara apna computer hai"?
Ek multi-user, multi-process, networked machine par ek buggy ya malicious program system ko freeze kar sakta hai, doosre process ki memory read kar sakta hai, ya kabhi CPU yield nahi kar sakta — isliye hardware referee ki zaroorat hai chahe box ka owner koi bhi ho.
Timer interrupt pre-emptive multitasking ki foundation kyun hai?
Kyunki yeh kernel ko forcibly CPU wapas dilata hai un code se bhi jo kabhi voluntarily yield nahi karta; kyunki timer arm aur disable karna privileged hai, user code isse escape nahi kar sakta.
Kernel syscall arguments validate kyun karta hai jabki user ne "nicely request ki"?
Kyunki user ki request malicious ya buggy ho sakti hai; bina yeh check kiye ki pointers aur file descriptors us process ke liye legal hain, kernel ko trick kiya ja sakta hai ki woh apni ya doosre process ki memory corrupt kare.

Edge cases

Agar kernel code khud ek illegal instruction execute kare (bad opcode) toh kya hoga?
Woh phir bhi trap karega — kernel mode mein hona undefined opcodes ko legal nahi banata; trap exception handler ko jaata hai, aur kernel fault ke liye yeh typically poore system ko panic kar deta hai.
Kya syscall tab ho sakta hai jab CPU already kernel mode mein ho?
Conceptually trap machinery phir bhi fire hogi, lekin mode already kernel hai, isliye koi privilege elevation nahi hogi; acchi tarah se designed kernels khud user-style syscalls issue karne se bachte hain aur seedhe internal routines call karte hain.
Agar user-to-kernel syscall transition ke dauran ek interrupt aa jaaye toh kya hoga?
Kyunki mode-change aur PC-jump atomic aur uninterruptible hain, koi interrupt khud ko unke beech mein nahi daal sakta; koi bhi pending interrupt cleanly pehle ya baad mein liya jaata hai, kabhi mid-transition nahi.
Agar program mein koi privileged instructions hi nahi hain, toh kya use kabhi kernel mode mein enter karne ki zaroorat hai?
Haan — jis pal woh I/O, memory mapping, ya timer chahega, woh operations andar se privileged hain, isliye use syscall ke zariye kernel mein trap karna hoga chahe uska apna instruction stream bilkul ordinary dikhe.
Interrupt-handler code kis privilege level par chalta hai?
Kernel (supervisor) mode mein — interrupt trap mode ko kernel tak exactly syscall ki tarah set karta hai, isliye handler privileged instructions run kar sakta hai device service karne ke liye.
Ek 4-ring x86 CPU par, agar Ring 3 code ek Ring 0 instruction try kare jabki Rings 1 aur 2 unused hain toh kya hoga?
Comparison required-level (0) versus current CPL (3) hai; 3 > 0 matlab insufficient privilege, isliye yeh #GP se fault karta hai chahe Rings 1 aur 2 use mein hoon ya nahi.
Hypervisor kahan baithta hai agar kernel already sabse privileged level par chalta hai?
Modern CPUs ek extra, deeper level add karte hain kernel ke neeche — x86 ise VMX-root kehta hai (informally "Ring −1"), ARM EL2 use karta hai, RISC-V H-extension (hypervisor S-mode) add karta hai. Guest OS phir bhi sochta hai ki woh fully privileged hai, lekin hypervisor uske sabse dangerous acts trap karta hai, use apna ek referee deta hai.
Kya ek hypervisor ke neeche chalne wala guest operating system physical timer disable kar sakta hai scheduling se bachne ke liye?
Nahi — hypervisor timer ko exactly waise virtualize karta hai jaise kernel user programs ke liye karta hai: guest ke cli-style ya timer-programming attempts hypervisor tak trap ho jaate hain, jo real hardware ko apne control mein rakhta hai.
Kernel se user par wapas aane mein (sret/iret) kisi privilege ki zaroorat hoti hai?
Woh instruction jo privilege lower karta hai kernel mode mein chalta hai (yeh trusted return path ka hissa hai); privilege lower karna safe aur controlled hai, jabki use raise karna dangerous direction hai jo sirf ek trap hi perform kar sakta hai.