Appearance
题目
下列关于 CPU 模式的叙述中,正确的是( )。
错因
A
把规则记反了。特权指令(开关中断、I/O、修改页表 / 段表寄存器、停机等)只能在内核态执行——如果用户态也能跑特权指令,用户程序可以直接关中断、改页表,OS 的隔离机制全废。
B
忽略了"内核态什么指令都能跑"这条事实。内核里同样有大量算术、循环、普通内存读写,这些都是非特权指令。"只能"二字过头了,少了非特权那部分。
D
跟 B 同类错,方向反了——把"用户态的限制"安到了内核态。要是内核态只能跑非特权指令,那特权指令在哪儿跑?OS 就管不了硬件了。
总解析
CPU 模式只有两条规则要记:
| CPU 模式 | 能跑的指令 |
|---|---|
| 用户态 | 只能跑非特权指令(约束模式) |
| 内核态 | 特权 + 非特权都能跑(无约束) |
特权指令指那些会动硬件 / 影响整机状态的指令——开关中断、I/O、改页表 / 段表寄存器、停机等。如果让用户程序直接执行这些,OS 对硬件和资源的管理就形同虚设,所以硬件强制把它们绑死在内核态。
四个选项都用了"只能",区别在于把这个限制放在哪里:
- A 把"只能 + 特权"放给了用户态——反了
- B 把"只能 + 特权"放给了内核态——内核还要跑非特权指令,"只能"过头
- C 把"只能 + 非特权"放给了用户态——对
- D 把"只能 + 非特权"放给了内核态——内核态本来就是为执行特权指令而存在的
最终答案是 C。