中断和异常
2025/8/15大约 2 分钟
中断的作用
“中断”会使 CPU 由用户态变为内核态,使操作系统重新夺回对 CPU 的控制权
在合适的情况下,操作系统内核会把 CPU 的使用权主动让给应用程序(第二章进程管理相关内容)
“中断”是让操作系统内核夺回 CPU 使用权的唯一途径
如果没有“中断”机制,那么一旦应用程序上 CPU 运行, CPU 就会一直运行这个应用程序
中断的类型
分为两种,分别是内中断和外中断
考试中这两种中断一般会有狭义上的称呼即异常和中断
内中断(异常)
与当前执行的指令有关,中断信号来源于 CPU 内部
能够引发内中断的情况有:
试图在用户态执行特权指令
程序执行过程中发生了异常(比如除以 0 )
例子 1 ~ 2
若当前执行的指令是非法的,则会引发一个中断信号
- 应用程序想请求操作系统内核的服务,此时会执行一条特殊的指令——陷入指令,该指令会引发一个内部中断信号
陷入指令
执行“陷入指令”,意味着应用程序主动地将 CPU 控制权还给操作系统内核。“系统调用”就是通过陷入指令完成的
异常的分类
- 陷阱、陷入、访管 ( trap )
由陷入指令引发,是应用程序故意引发的
- 故障 ( fault )
由错误条件引起的,可能被内核程序修复。内核程序修复故障后会把 CPU 使用权还给应用程序,让它继续执行下去。如:缺页故障
- 终止 ( abort )
由致命错误引起,内核程序无法修复该错误,因此一般不再将 CPU 使用权还给引发终止的应用程序,而是直接终止该应用程序。如:整数除 0 、非法使用特权指令
外中断(中断)
与当前执行的指令无关,中断信号来源于 CPU 外部
能够引发外中断的情况有:
- 时钟中断——由时钟部件发来的中断信号(时钟部件每隔一个时间片(如 50ms )会给 CPU 发送一个时钟中断信号)
例子 1
时钟中断主要用于不同时间片处理不同的应用程序,实现操作系统并发的特性
- I/O 中断——由输入 / 输出设备发来的中断信号
中断机制的原理
不同的中断信号,需要用不同的中断处理程序来处理。当 CPU 检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。
更新日志
2025/8/15 10:25
查看所有更新日志
b2611-于
