中断的作用
CPU上会运行两种程序,一种是**操作系统内核程序**,一种是**应用程序**。
在合适的情况下,操作系统内核会把CPU的使用权主动让给应用程序。
“中断”是**让操作系统内核夺回CPU使用权**的唯一途径。
“中断”会使CPU由用户态变为内核态,使操作系统重新夺回对CPU的控制权。
如果没有“中断”机制,那么一旦应用程序上CPU运行,CPU就会一直运行这个应用程序。
中断的分类
“中断”特指狭义中的中断,即外中断。而内中断一般称为“异常“。
内中断
- 也称异常、例外。
- 与当前执行的指令有关,中断信号来源于CPU内部
- 有时候应用程序想请求操作系统内核的服务,此时会执行一条特殊的指令——陷入指令,该指令会引入一个内部中断信号。
- 执行“陷入指令”,意味着应用程序主动的将CPU控制权还给操作系统内核。“系统调用”就是通过陷入指令完成的。
由陷入指令引发,是应用程序故意引起的。
由错误条件引起的,可能被内核程序修复。内核程序修复故障后会把CPU使用权还给应用程序,让它继续执行下去。如:缺页故障。
由致命错误引起,内核程序无法修复该错误,因此一般不再将CPU使用权还给引发终止的应用程序,而是直接终止该应用程序。如:整数除0,非法使用特权指令。
外中断
- 也称“中断”。
- 与当前执行的指令无关,中断信号来源于CPU外部
- 时钟中断
- I/O中断请求
中断机制的基本原理
检查中断信号
CPU在执行指令时会检查是否有异常发生
每个指令周期末尾,CPU都会检查是否有外中断信号需要处理
找到相应的中断处理程序
通过“中断向量表”实现