Appearance
408
操作系统
CPU运行模式(用户态/内核态/模式切换)
一、定位信息
- 所属圈层:核心层
- 前置知识:了解CPU的基本工作原理(指令执行周期),了解操作系统的四大特征(OS-01-01)
- 知识网络位置:本单元是理解系统调用、中断机制、进程特权级的基础,与OS-01-04(中断/异常/系统调用)紧密关联
- 考点热度等级:H级(高频重点)——近5年选择题出现≥3次,是理解后续机制的基石
二、知识点讲解
2.1 为什么需要区分CPU运行模式
CPU执行的指令分为两类:普通指令(如算术运算、数据传送)和特权指令(如I/O指令、修改页表寄存器、关中断)。如果用户程序能执行特权指令,就可能破坏系统安全。因此CPU必须区分运行模式来保护系统安全。
2.2 用户态与内核态
| 维度 | 用户态(目态/User Mode) | 内核态(管态/Kernel Mode) |
|---|---|---|
| 权限 | 只能执行非特权指令 | 可以执行所有指令(包括特权指令) |
| 能访问的资源 | 只能访问自己的用户空间 | 可以访问整个地址空间 |
| 运行的程序 | 用户程序 | 操作系统内核代码 |
| 硬件支持 | PSW中的模式位=1(用户态) | PSW中的模式位=0(内核态) |
程序状态字(PSW):CPU中的特殊寄存器,其中的模式位标识当前CPU处于用户态还是内核态。
2.3 内核态与用户态的切换
- 用户态→内核态(由用户程序主动触发或被动触发):
- 用户程序执行系统调用(如
read()、write()) - 发生中断(如时钟中断、I/O中断)
- 发生异常(如缺页异常、除零错误)
- 用户程序执行系统调用(如
- 内核态→用户态(由OS内核执行):
- OS完成中断/异常/系统调用的处理后,通过中断返回指令(如x86的
iret)恢复用户程序执行,CPU回到用户态
- OS完成中断/异常/系统调用的处理后,通过中断返回指令(如x86的
2.4 切换过程
模式切换的具体步骤:
- 保存当前进程的上下文(PC、PSW、通用寄存器等)到内核栈或PCB
- 修改PSW的模式位(用户态→内核态)
- 跳转到中断/异常处理程序入口
- 执行内核代码
- 恢复之前保存的上下文
- 修改PSW的模式位(内核态→用户态)
- 继续执行用户程序
三、记忆与理解辅助
- 口诀:"用户不能干的事叫特权指令,内核啥都能干"——用户态受限,内核态全权
- 记忆要点:三种切换触发方式——系统调用(自愿)、中断(被动/异步)、异常(被动/同步)
- 对比表:三种切换触发方式
| 触发方式 | 主动/被动 | 同步/异步 | 来源 | 典型例子 |
|---|---|---|---|---|
| 系统调用 | 主动 | 同步 | 用户程序 | fork()、read() |
| 中断 | 被动 | 异步 | 外部设备/时钟 | I/O完成中断、时钟中断 |
| 异常 | 被动 | 同步 | CPU内部执行错误 | 缺页异常、除零异常 |
四、例题与精解
例题1(基础巩固)
题目:CPU处于用户态时,以下操作中可以执行的是( )
A. 关中断 B. 读取系统时钟 C. 修改页表基址寄存器 D. I/O指令
命题意图:考查用户态与内核态的权限区分。
精解:
- 审题分析:用户态只能执行非特权指令,需判断哪些是特权指令
- 解题思路:特权指令是可能影响系统安全或全局状态的指令
- 完整步骤:
- A选项:关中断是特权指令,用户态不可执行。否则用户关中断后OS无法响应中断,系统瘫痪
- B选项:读取系统时钟通常是非特权指令,用户态可以执行。许多架构提供用户态可读的时钟寄存器
- C选项:修改页表基址寄存器是特权指令。页表关系到整个内存保护机制,必须由OS管理
- D选项:I/O指令是特权指令。否则用户程序可以直接操作硬件,破坏系统安全
- 方法反思:判断是否为特权指令的核心原则——"该操作是否可能破坏系统安全或影响其他进程"
答案:B
例题2(中等提升)
题目:下列关于CPU运行模式切换的描述,正确的是( )
A. 从用户态切换到内核态是由用户程序执行特权指令触发的 B. 从内核态切换到用户态是由硬件自动完成的 C. 系统调用是从用户态切换到内核态的唯一途径 D. 从用户态切换到内核态时,需要保存用户程序的上下文
命题意图:考查模式切换的机制与过程。
精解:
- 审题分析:需要理解模式切换的具体过程和触发方式
- 解题思路:回顾模式切换的触发条件和步骤
- 完整步骤:
- A选项:错误。用户态不能直接执行特权指令。切换是通过系统调用(执行陷入指令
trap)、中断或异常触发的,而非直接执行特权指令 - B选项:错误。从内核态切换到用户态需要OS执行中断返回指令(如
iret),这是软件行为,不是纯硬件自动完成 - C选项:错误。除系统调用外,中断和异常也会导致用户态→内核态的切换
- D选项:正确。切换时必须保存用户程序的上下文(PC、PSW、寄存器等),以便之后恢复执行
- A选项:错误。用户态不能直接执行特权指令。切换是通过系统调用(执行陷入指令
- 方法反思:模式切换的核心是"保存→切换→恢复"的过程,三种触发方式(系统调用、中断、异常)不要遗漏
答案:D
五、考情分析
- 考查频次:近5年约3–4次
- 常见题型:选择题,偶尔作为综合题的子问题
- 分值占比:2分/题(选择题),或综合题中的3–5分
- 命题趋势:近年倾向于将用户态/内核态与系统调用、中断结合起来考查,不仅考定义,更考切换过程和具体操作
六、易错点提醒
错误表现:认为用户态可以直接执行特权指令然后被OS捕获 错误原因:混淆了软件异常和硬件权限检查 正确理解:用户态执行特权指令是由硬件直接拒绝(触发异常),而非"先执行再捕获"
错误表现:认为从内核态回到用户态是自动完成的 错误原因:忽略了需要OS执行中断返回指令 正确理解:内核态→用户态需要OS主动执行中断返回指令(如
iret),修改PSW模式位错误表现:混淆"中断"和"异常"导致的模式切换 错误原因:两者都导致用户态→内核态,但触发源不同 正确理解:中断来自CPU外部(异步),异常来自CPU内部(同步)
错误表现:认为PSW中只记录了CPU运行模式 错误原因:对PSW的功能理解不完整 正确理解:PSW还记录了条件码(溢出、零等)、中断使能标志等信息
七、来源标注
- 依据2026考研统考408大纲
- 依据《计算机操作系统》(汤小丹/汤子瀛版)第1章
- 依据《操作系统概念》(Silberschatz版)第1–2章