Skip to content

CPU运行模式(内核态与用户态)

考情分析

内核态与用户态的区分、切换时机是选择题高频考点。🔥🔥🔥 高频。

如果任何程序都能直接操作硬件,一个有 bug 的用户程序就可能把整台机器搞崩——CPU 怎么防止这种事发生?

两种运行模式

模式别名PSW 中的模式位可执行的指令
内核态核心态、管态、特权态0所有指令(包括特权指令)
用户态目态1(或 3)非特权指令

特权指令 vs 非特权指令

类型说明示例
特权指令只能在内核态执行I/O 指令、置中断指令、修改 PSW、修改页表寄存器
非特权指令用户态和内核态都能执行算术运算、访存指令、跳转指令

判断标准

凡是可能影响其他进程或整个系统的操作,都应该是特权指令。

特权指令判断题速查

408 选择题里"以下哪个是 / 不是特权指令"是反复出现的考点。常见判断对照:

指令 / 操作特权指令关键
启动 I/O(in / out / DMA 启动)直接操作硬件
修改 PSW(程序状态字)会改变 CPU 模式位
关中断 / 开中断(修改 IF)影响响应中断的能力
设置 / 修改页表基址寄存器(PTBR)改地址翻译规则
修改重定位 / 限长寄存器改内存保护边界
装入定时器影响时钟中断频率
中断返回指令(iret从内核态降到用户态
系统调用指令(int 0x80 / syscall不是(用户态可执行)执行后立刻进入内核态
算术 / 逻辑运算不是不影响其他进程
访存指令 / 跳转指令不是受 MMU 保护,越界由硬件检测
读取系统时间不是(指令本身)但通过系统调用获取的接口涉及陷入

用户态 → 内核态

从用户态进入内核态的唯一途径中断或异常——可以类比为"普通员工(用户态)想进机房(内核态),唯一的办法是按门铃(中断),让管理员来开门"。

触发方式说明举例
外中断来自 CPU 外部的中断信号时钟中断、I/O 中断
内中断(异常)指令执行过程中产生缺页异常、除零异常
陷入(Trap)用户程序主动发出系统调用(int 0x80 / syscall

内核态 → 用户态

通过执行一条特权指令(如中断返回指令 iret),将 PSW 中的模式位改回用户态。

这是一个特权指令——只有内核态才能执行,保证了用户程序无法自行进入内核态。

内核的组成

层次组件说明
与硬件紧密相关时钟管理提供时间基准
中断处理响应和处理中断
原语(原子操作)不可中断的底层操作
内核功能进程管理调度、同步、通信
存储器管理内存分配、地址映射
设备管理I/O 控制

易混淆概念

概念解释
用户态 → 内核态硬件完成(中断触发,自动切换模式位)
内核态 → 用户态软件完成(OS 执行中断返回指令)
态的切换 ≠ 进程切换态切换不一定伴随进程切换(如系统调用后可能返回同一进程)

考研高频考点

  • 🔥🔥🔥 用户态 → 内核态的唯一途径:中断/异常
  • 🔥🔥🔥 特权指令只能在内核态执行
  • 🔥🔥 内核态 → 用户态通过中断返回指令(特权指令)
  • 🔥🔥 系统调用通过 trap 指令触发,本质是一种异常
  • 🔥 态的切换 ≠ 进程切换

知道了态切换的存在,自然会问:中断和异常到底有哪些类型,硬件和软件各自在处理流程中承担什么角色?下一篇展开讲中断和异常的分类与处理机制。

真题练习

相关真题(3题)

2022Q27选择题2分

伙伴系统:只合并大小相等(互为伙伴)的空闲分区

2021Q23选择题2分

系统调用:创建新进程(fork)通过系统调用完成

2014Q25选择题2分

特权指令:关中断是特权指令,只能在内核态执行

CPU 运行模式中断与异常(OS 视角)